- app
- 자격증
- Image_classification
- SingleProject
- Baekjoon
- 티스토리챌린지
- Linux
- 오블완
- cloud_computing
- Algorithm
- C
- Android
- Unix_System
- Personal_Study
- tensorflow
- Kubernetes
- Java
- Artificial_Intelligence
- Univ._Study
- study
- c++
- 리눅스마스터2급
- pytorch
- Python
- 2023_1st_Semester
- Database_Design
- codingTest
- Operating_System
- programmers
- datastructure
코딩 기록 저장소
[23-01/유닉스 시스템] 배시 셸 활용하기 본문
1. 셸 기본 사용법 익히기
셸의 종류와 변경
■ 셸
- 사용자와 커널 사이의 중간 역할
- 사용자가 입력한 명령을 처리하고 실행 결과를 알려줌 ( 커널에게 해석한 결과 알려주고 일을 시킴)
- 편리한 사용을 위해 다양한 기능 제공함 (해석하고 처리함)
■ 셸의 종류
- 본 셸(sh), 콘 셸(ksh), C 셸(csh), 배시 셸(bash) 등
- 종류 확인하기
- 프롬프트로 확인 : C셸은 % / 본 셸, 콘 셸, 배시 셸은 $
로그인 하게되면 통상적으로 프롬프트 나타남
- 명령으로 확인
memo : echo $SHELL echo - 화면에 답을 해라 / $SHELL - 셸에 대한 종류 출력하도록
memo : $umask => 022 0022 배시 셸
■ 로그인 셸과 서브셸
- 로그인 셸 : 사용자가 로그인 직후 자동 생성되는 셸
- 서브셸 : 사용자가 직접 실행한 셸
memo : 또 다른 셸 실행 & 사용 가능
memo : 로그인 셸 - 로그인할 때 ? $있는 상태에서 'csh', 'ksh' 하면됨 / exit - 'logout', Ctrl + 'D' 이러한 명령어 쓸 수 있음
■ 문자열의 출력
● echo
- 셸 명령과 유틸리티 모두 제공
- 지정한 문자열 출력
- 셸 명령
- 옵션이 제공되어 echo보다 편리
memo : 일반적으로 명령은 두가지로 구분함
셸 내장 명령 실행 - 단순 셸 가지고 명령 / 유닉스 유틸리티 실행 - 어떤 프로그램, 서버조작 프로그램 조작, 유틸리티 프로그램
셸 특수 문자
■ * 특수 문자
memo : 와일드 카드
- 가장 자주 사용되는 특수 문자 -> 임의의 문자열을 나타냄
명령 | 의미 |
ls * | 현재 디렉토리의 모든 파일 목록 나열하고, 하위 디렉토리가 있으면 그 아래의 모든 파일 목록도 보여줌. |
cp * / tmp | 현재 디렉토리의 모든 파일을 /tmp 디렉토리 아래로 복사함. 이때 하위 디렉토리는 복사되지 않음. |
ls -F h* memo : -F ← 파일의 종류 |
h, h1, haha와 같이 파일명이 h로 시작하는 모든 파일의 이름과 파일 종류를 출력함. h도 해당함. |
cp *.c ../C memo : .. ← 상위 디렉토리 |
확장자가 c인 모든 파일을 상위 디렉토리 밑의 C 디렉토리로 복사함. |
ls -l h*d | 파일명이 h로 시작하고 d로 끝나는 모든 파일의 상세 정보를 출력함. hd, had,hard, h12345d 등 이 조건에 맞는 모든 파일의 정보를 볼 수 있음. |
■ ?와 [ ] 특수 문자
- 모두 하나의 문자를 나타내는 데 사용
- ?는 임의의 한 문자, [ ] 괄호 안에 포함된 문자 중 하나
- [ ] 다른 특수 문자와도 혼합해 사용할 수도 있음
명령 | 의미 |
ls hello?.c | hello 다음에 임의의 한 문자가 오고 파일의 확장자가 c인 모든 파일의 이름을 출력함. hello1.c, helloa.c, hello_.c등이 해당됨. 단 hello.c는 해당되지 않음. |
ls -l hello[123].c | hello1.c, hello2.c, hello3.c 파일이 있으면 해당 파일의 상세 정보를 출력함. |
ls -l hello[1-3].c | ls -l hello[123].c와 결과가 같음. 즉, hello1.c, hello2.c, hello3.c 파일이 있으면 해당 파일의 상세 정보를 출력함 |
ls [0-9]* | 파일명이 숫자로 시작하는 모든 파일 목록을 출력함 |
ls [A-Za-z]*[0-9] | 파일명이 영문자로 시작하고 숫자로 끝나는 모든 파일 목록을 출력함 |
■ ~와 - 특수 문자
- 디렉토리를 나타내는 특수 문자
- ~ 단독 사용 → 사용자의 홈 디렉토리
- -는 cd 명령으로 디렉토리를 이전하기 직전의 작업 디렉토리
명령 | 의미 |
cp *.c ~/C | 확장자가 c인 모든 파일을 내 홈 디렉토리 아래의 C 디렉토리로 복사함 |
cp ~user2/hw/report1. memo : user2 디렉토리. |
user2라는 사용자 홈 디렉토리 아래의 hw 디렉토리에서 report1 파일을 찾아 현재 디렉토리로 복사함 |
cd - | 이전 작업 디렉토리로 이동함 |
■ ;과 | 특수 문자
- 명령과 명령을 연결
- ;은 연결된 명령을 왼쪽부터 차례로 실행
- |는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달
- |는 여러 명령을 연결해 사용 가능
명령 | 의미 |
cal ; ls ; pwd | 달력을 출력한 후, 현재 디렉토리의 파일 목록을 출력하고, 마지막으로 현재 작업 디렉토리의 절대 경로를 보여줌 |
ls -al / | more | 루트 디렉토리에 있는 모든 파일의 상세 정보를 한 화면씩 출력함 |
who | wc -l | who는 현재 접속 중인 사용자 정보를 한 사람당 한 행씩 출력. wc는 파일의 문자수, 단어수, 행 수를 세는 명령으로 -l 옵션은 파일의 행 수를 출력함. 따라서 두 명령을 결합하면 현재 접속 중인 사용자의 수가 출력됨. |
■ ' '와 " " 특수 문자
- 문자열 안에 사용된 특수 문자의 의미를 없애는 기능
- 작은 따옴표는 모든 특수 문자를 처리
- 큰 따옴표는 $,`,\를 제외한 모든 특수 문자들을 일반 문자로 처리
명령 | 의미 |
echo '$SHELL' | $SHELL 문자열이 화면에 출력됨. |
echo "$SHELL" | 셸 환경 변수인 SHELL에 저장된 값인 현재 셸의 종류가 화면에 출력됨. ( ex : /usr/bin/bash ) |
■ ` 특수 문자
- 명령 실행 결과를 문자열로 받고 싶을 때 사용
- 작은 따옴표와 혼동 주의
명령 | 의미 |
echo "Today is" `date` memo: "내용" - 그대로 화면에 출력 `내용` - 실행 결과를 문자열로 |
다음 문자열이 출력됨. Today is Thurs day, April 27, 2023 12 : 31 : 45 AM KST |
ls /platform/ `uname -m` | uname -m 명령의 실행 결과를 문자열로 바꾸어 디렉토리 이름으로 사용함. |
■ \ (₩) 특수 문자
- \ (역 슬래시)는 특수 문자를 일반 문자처럼 사용
- 특수 문자 앞에 사용되며 특수 문자의 효과를 제거
- 키보드에서 \ 대신 ₩를 사용
명령 | 의미 |
ls ?l h₩* | h*라는 이름을 가진 파일의 상세 정보를 출력함. ₩없이 h*를 사용하면 h로 시작하는 모든 파일의 상세 정보를 출력함. |
echo ₩$SHELL | $SHELL을 화면에 출력함. echo '$SHELL'과 결과가 같음. |
■ >, >>, < 특수 문자
- 입출력 방향을 바꾸는 특수 문자
명령 | 의미 |
ls -l > res memo : res - 파일 이름 만들면서 저장 |
ls -l 명령의 실행 결과를 화면이 아닌 res 파일에 저장함 |
2. 입출력 방향 변경
표준 입출력 장치
- 시스템이 명령의 입력과 출력에 사용하는 기본 장치
memo : 어떻게 입력을 받을 것인가?
memo : 표준 오류 - 표준 입력 못마땅할때
지금까지는 명령을 키보드로 입력하고 그 결과를 모니터를 통해 확인함
if 명령 실행 결과 파일로 저장한다면?
키보드로 입력할 내용을 미리 파일로 저장했다가 실행할 수는 없을까?
-> 이 모든 것이 가능함
■ 파일 디스크립터
- 입출력 장치를 변경할 때 사용
memo : 먼저 여기서 파일 디스크립트란?
이 컴퓨터에는 우리가 어떠한 파일에 접근하거나 실행하거나 했을 때 그 작업에 일련 번호를 붙임
관리 번호를 붙이는 것을 디스크립터
파일 디스크립터 | 파일 디스크립터 대신 사용하는 이름 | 정의 | |
0 | stdin | 명령어의 표준 입력 | |
1 | stdout | 명령어의 표준 출력 | |
2 | stderr | 명령어의 표준 오류 |
출력 리다이렉션 : >, >>
파일 덮어 쓰기 : 명령 > 파일명
파일에 내용 추가하기 : 명령 >> 파일명
- 파일 덮어쓰기 : >
- 새로운 파일로 생성, 기존 파일의 내용은 없어짐
- 파일에 내용 추가하기 : >>
- 기존 파일의 끝에 내용 추가
● 사용법
오류 리다이렉션 : 2>
명령 2> 파일명
- 표준 오류 메시지를 파일에 저장
● 사용법
입력 리다이렉션 : <
명령 < 파일명
- 표준 입력을 키보드에서 파일로 변경
● 사용법
3. 배시 셸의 환경 설정
변수 출력
■ 변수
- 시스템이나 사용자에 의해 사용되는 정보를 저장하기 위한 저장소
- 셸 변수는 관례적으로 대문자를 사용
■ 셸 변수
- 현재의 셸에서만 사용 가능한 변수
- 확인 명령 : set
■ 환경 변수
- 모든 셸에서 사용 가능한 변수
- 확인 명령 : env
변수 정의
■ 셸 변수 : 변수 = 값
■ 환경변수
- 변수 = 값 : export 변수명
- export 변수 = 값
■ 변수 값 확인
- set, env 명령으로 확인
- Echo $변수명
변수 해제
■ unset 변수명
컨트롤 키
- 일반적으로 가장 많이 사용하는 키 = Ctrl + C, 인터럽트키
컨트롤 키 | stty명 | 의미 |
Ctrl + C | intr | 현재 명령 중지 |
Ctrl + D | eof | 파일의 끝(혹은 입력의 끝) |
Ctrl + ₩ | quit | Ctrl + C가 동작하지 않을 경우 현재 명령 중지 |
Ctrl + S | stop | 화면 출력 정지 |
Ctrl + Q | start | 화면 출력 다시 시작 |
Ctrl + ? | erase | 마지막 문자 삭제 |
Ctrl + U | kill | 전체 명령행 삭제 |
Ctrl + W | werase | 마지막 단어 삭제 |
Ctrl + Z | susp | 현재 명령 일시 중단 |
4. 배시 셸 명령 다루기
나만의 명령 만들기 : alias
alias [ 별칭 = 명령 ]
- 명령어에 다른 이름을 정의하여 사용
- 긴 명령어 대신 짧은 별칭을 사용
- 자주 사용하는 옵션 자동 수행
- 여러 명령을 하나의 명령으로 대체 가능
- 단 명령에 인자가 필요한 경우, 인자를 넘겨주지는 못함
■ alias 명령
- 앨리어스의 설정
- 앨리어스의 해제
- 앨리어스에 인자 전달하기
■ 앨리어스의 설정
- 파일 이름과 종류를 동시에 출력 -> 옵션 -F 사용
- 파일 삭제 시 복구가 불가능 함 -> -i 옵션을 사용하여 삭제 여부 확인
■ 앨리어스의 해제
- 앨리어스를 삭제하기 위해서는 unalias 명령 사용
■ 앨리어스에 인자 전달하기
- 배시 셸에서 인자를 전달하려면 함수를 이용
이전에 입력한 명령 사용하기
- 이전 명령 보기 : fc
- 명령 재실행하기 : !
- 명령 편집하기 : 화살표 키, 또는 Esc + k
- 명령 탐색하기 : Esc + /
■ 이전 명령 보기 : fc
- 사용자가 입력한 명령을 사용자 홈 디렉토리 아래의 특수한 파일에 저장
■ 명령 재실행하기 : !
- 히스토리의 장점 : 명령을 재입력하지 않고 반복 실행 가능
- 이전에 실행했던 명령을 반복 실행하는 기능
- 이벤트 지정자를 이용하여 명령 실행
명령 | 설명 |
!! | 마지막 명령 실행 |
!n | n번재 명령 실행 |
!-n | 현재 명령에서 뒤로 n번째 명령 |
!문자열 | 주어진 문자열로 시작하는 명령 중 마지막 명령 |
<이벤트명령>:p | !!, !n 등 이벤트 지정자로 지정한 명령을 실행하지 않고 화면에 출력 |
!?문자열? | 주어진 문자열을 포함하는 명령 중 마지막 명령. ?는 선택항목 |
^문자열1^문자열2 | 마지막 명령의 문자열1을 문자열2로 대체하여 다시 실행 |
■ 명령 편집하기 : 화살표 키, 또는 Esc + k
- 이전 명령을 편집하여 다시 실행
- 방법
>> ↑ 또는 ↓ 화살표키를 이용하여 이전 명령을 불러옴
>> ← 또는 → 화살표키를 이용하여 수정할 위치로 커서 이동
>> [Del] 또는 [←] 키를 이용하여 수정할 내용 삭제 후 새로운 내용 입력
- 명령어 편집기로 vim 사용 설정
- 명령어 편집 시작 키
>> 가장 최근의 명령이 나타남
>> Vim j, k 명령을 이용하여 이전, 다음 명령 호출
>> Vim h, l 명령을 이용하여 명령 중 수정할 위치로 이동
>> Vim 편집 명령 (x, cw등)을 이용하여 명령 편집
■ 명령 탐색하기 : Esc + /
- Vim 편집기의 문자열 탐색
- 탐색은 Esc + Esc /를 이용
- 명령 수행은 Enter 키
- 편집하려면 h, l, x, r 명령 이용
5. 프롬프트 설정하기
배시 셸 프롬프트의 설정
● 프롬프트
- 명령 입력을 기다리는 시스템의 상태 표시
● 기본 프롬프트 모양
- 배시 셸, 본 셸, 콘 셸 : $
- C 셸 : %
● 프롬프트 설정
- 환경 변수 PS1에 저장된 값을 프롬프트로 사용
- PS1 값 확인
배시 셸 프롬프트의 설정
컬러 프롬프트의 설정
- 이스케이프 시퀀스
- 컬러 프롬프트 정의 형식
- 컬러 프롬프트 설정하기
memo : 잘 사용 안함
■ 이스케이프 시퀀스
- 단말기의 제어를 위해 정의된 문자열
- 셸에 출력되지는 않음
■ 컬러 프롬프트 정의 형식
PS1 = '₩[₩e[x;y;nm₩] 프롬프트 ₩[₩e[x;y;0m₩]'
- ₩[ ~₩]: 이 사이의 문자들은 화면에 출력되지 않음
- \e : 이스케이프 문자. 단말기 제어의 시작을 알림 (\e ~ m 사이에 프롬프트 컬러 색상 지정)
- x;y 컬러 번호 (x는 글자, y는 배경)
- n : 특수 기능 (밑줄, 역상 등)
- 프롬프트 : 프롬프트로 사용할 문자열
6. 환경 설정 파일 설정하기
환경 설정 파일의 종류
■ 환경 설정 파일
- 사용자가 로그인할 때마다 자동으로 실행되는 명령을 저장
- 시스템 초기화 파일
- 환경 변수 설정
- 기본 명령어 경로 설정
- 기본 터미널 설정
- 사용자 접속시 관리자의 인사말 출력
- 사용자의 초기화 파일
- 기본 프롬프트 설정
- 사용 권한 설정
- 명령어 경로 설정
- 사용자 앨리어스 설정
- 기타 환경 설정
사용자 초기화 파일 만들기
- 사용자 홈 디렉토리에 위치
- 사용자별 환경 설정 : 프롬프트, 경로, 앨리어스 등
사용자 초기화 파일 실행하기
- .profile or .bashrc 파일을 처음 작성하거나 내용을 수정했을 시
→ source 명령어를 사용 → .profile이나 .bashrc를 실행
'학교 공부 > 유닉스 시스템' 카테고리의 다른 글
[23-01/유닉스 시스템] 파일과 디렉토리 검색하기 (0) | 2023.04.27 |
---|---|
[23-01/유닉스 시스템] 파일 접근 권한 관리하기 (1) | 2023.04.27 |
[23-01/유닉스 시스템] vi 사용법 (0) | 2023.04.25 |
[23-01/유닉스 시스템] 파일 다루기 (0) | 2023.04.22 |
[23-01/유닉스 시스템] 디렉토리 다루기 (0) | 2023.04.22 |