반응형
(본 강의 노트는 한빛 미디어의 <유닉스 이론과 실습> 책을 기반으로 하고 있습니다)
ch05. 배시쉘 활용하기
학습목표
- 배시 쉘이 제공하는 다양한 기능을 이해하고 활용한다
- 환경변수를 이용해 작업의 효율을 높이는 환경을 설정하는 방법을 익힌다
- 환경 설정 파일을 이용해 자신만의 환경을 설정하는 방법을 익힌다
목차
- 쉘 기본 사용법 익히기
- 입출력 방향 변경
- 배시쉘의 환경 설정
- 명령 다루기
- 프롬프트 설정하기
- 환경 설정파일 설정하기
01. 쉘 기본 사용법 익히기
Shell의 종류와 변경
- Shell이란?
- 사용자와 커널 사이의 중간 역할
- 사용자가 입력한 명령을 처리하고 실행 결과를 알려줌
- 편리한 사용을 위해 다양한 기능 제공
- Shell의 종류?
- 본Shell(sh : 가장 오래됨)
- 콘 Shell(ksh : c,본을 합침)
- C Shell(csh : c언어와 비슷하게 만듦)
- bash Shell(bash : free software)
- 종류 확인하기
: 프롬프트로 확인 : C Shell은 %, 나머지는 $
: 명령으로 확인 ( echo $SHELL) - Hardware > Kernel > Shells(csh,sh,ksh,...etc) > Utilities(vi, ls, ...etc)
- 로그인 Shell과 서브 Shell
- 로그인 Shell : 사용자가 로그인 직후 자동 생성되는 Shell
- 서브 Shell : 사용자가 직접 실행한 Shell
- exit 명령어로 각 Shell 로그아웃 가능
문자열의 출력
- echo
- Shell 명령과 유틸리티 모두 제공
- 지정한 문자열 출력
- print(vitual box에서의 linux는 printf)
- Shell 명령
- 옵션이 제공되어 에코보다 편리
Shell 특수 문자
- 특수문자 : 가장 자주 사용되는 특수 문자로 임의의 문자열을 나타냄( 몽땅 다! )
- ls * : 현재 디렉토리의 모든 파일 목록 나열 및 하위디렉토리 있을 경우 아래의 모든 파일도 보여줌
- cp * /tmp : 현재 디렉토리의 모든 파일을 /tmp 디렉토리에 복사. 단, 하위 디렉토리는 복사X
- ls -F h* : h로 시작하는 모든 파일의 이름, 종류 출력
- cp *.c _/C : 확장자가 c인 모든 파일을 상위디렉토리 밑의 C디렉토리로 복사
- ls -l h*d : 파일명이 h~d인 모든 파일의 상세정보 출력
- ?와 [ ] 특수 문자
: 모두 하나의 문자를 나타내는 데 사용.
: ?는 임의의 한 문자, [ ] 괄호 안에 포함된 문자 중 하나.
: [ ] 다른 특수 문자와도 혼합해 사용할 수도 있다.
- ls hello ?.c : hello 다음에 임의의 한 문자가 오고 파일의 확장자가 c인 모든파일의 이름 출력. 단, hello.c는 출력X
- ls -l hello[123].c : hello1/2/3.c 파일이 있으면 해당 파일의 상세 정보 출력
- ls [0-9]* 파일명이 숫자로 시작하는 모든 파일 목록 출력
- ~(tilde)와 - 특수 문자
- 디렉토리를 나타내는 특수문자
- ~가 단독 사용 -> 사용자의 홈 디렉토리
- (-)는 cd 명령으로 디렉토리를 이전하기 직전의 작업 디렉토리
- ;(semi colon) 과 |(pipe)특수 문자
- 명령과 명령을 연결
- ;은 연결된 명령을 왼쪽부터 차례로 실행
- | 는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달
- ''(semi quote)와 ""(double quote) 특수 문자
- 문자열 안에 사용된 특수 문자의 의미를 없애는 기능
- 작은 따옴표는 모든 특수 문자를 처리
- 큰 따옴표는 $, ',\ 를 제외한 모든 특수 문자들을 일반 문자로 처리(like C language grammer..)
- echo '$SHEll' 은 해당 문자열을 그대로 출력
- 단, echo "$SHELL"은 echo $SHELL과 동일하게 작동
- `(back quote) 특수 문자
- 명령 실행 결과를 문자열로 출력
- 예 echo today is
date
할 경우, "today is " + echo date의 결과로 나옴
- \ (₩) 특수 문자
- ( back slash)는 특수 문자를 일반 문자처럼 사용
- 특수 문자 앞에 사용되며 특수 문자의 효과를 제거
- , >>, < 특수 문자
- 입출력 방향을 바꾸는 특수 문자
- ls -l > res : res파일에 오른쪽 명령어의 실행결과를 화면이 아닌 해당 파일에 저장
Shell 특수 문자 요약
메타문자 | 기능 | 예제 |
* | 임의의 문자열 | $ ls h* |
? | 임의의 한 문자 | $ ls dir? |
[ ] | 대괄호안에 포함된 문자 중 하나 | $ ls [a-f]* |
~ | 홈 디렉토리 | $ cd ~user1 |
- | 이전 작업 디렉토리 | $ cd - |
; | 명령 연결. 왼쪽부터 차례로 실행 | $ date;cal;ls |
| | 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달 | $ ls –l /etc | more |
‘ ‘ | 모든 쉘 특수문자 무시 | $ print ‘$SHELL’ |
“ “ | $, `, \를 제외한 모든 쉘 문자 무시 | $ print “$SHELL” |
` ` | 쉘 명령 수행 | $ print `date` |
\ | 특수문자 기능 제거 | $ print “\$SHELL” |
>, >> <, << | 입출력 방향 변경 |
02. 입출력 방향 변경
표준 입출력 장치
- 시스템이 명령의 입력과 추력에 사용하는 기본 장치
파일 디스크립터 | 파일이름 | 설명 | 기본 장치 | |
표준입력 Standard Input | 0 | stdin | 명령의 실행에 필요한 데이터를 읽어들이는 기본 장치 | 키보드 |
표준출력 Standard Output | 1 | stdout | 명령 실행 결과를 출력하는 장치 | 모니터 |
표준오류 Standard Error | 2 | stderr | 명령 실행 중 발생한 오류 메시지를 출력하는 장치 | 모니터 |
리다이렉션
: 특수 기호를 사용하여 표준 입출력 장치를 변경
- 출력 리다이렉션 : >, >>
- 표준 출력을 모니터에서 파일로 변경
- 사용법
- 새로운 파일로 생성, 기존 파일의 내용은 없어짐
- 기존 파일의 끝에 내용 추가
- 오류 리다이렉션 : 2 >
- 표준 오류 메시지를 파일에 저장
- 사용법
- ls /ttt 2> t
- ttt파일이 없을 경우 t에 해당 명령어에 대한 오류메세지를 파일에 저장
- 입력 리다이렉션 : <
- 표준 입력을 키보드에서 파일로 변경
- 사용법
- cat < file_name
03. bash Shell의 환경 설정
- 변수
- 시스템이나 사용자에 의해 사용되는 정보를 저장하기 위한 저장소
- Shell 변수는 관례적으로 대문자를 사용
- Shell 변수
- 현재의 Shell에서만 사용 가능한 변수
- 확인 명령 : set
- 환경 변수
- 모든 Shell에서 사용 가능한 변수
- 확인 명령 : env
변수 정의
Shell 변수 : 변수 = 값
환경 변수
- 변수 = 값 : export 변수명
- export 변수 = 값
- 변수 값 확인
- set, env 명령으로 확인
- Echo $ 변수명
- 변수 정의 해제
- unset 변수명
컨트롤 키
- 일반적으로 가장 많이 사용하는 키 : Ctrl + C -> Interrupt key
- Ctrl + C : 현재 명령 중지
- Ctrl + Z : 현재 명령 일시 중단( 프로세스가 살아 있음 , kill 로 죽여주면 됨)
- Ctrl + D : 파일의 끝(혹은 입력의 끝)
04. bash Shell 명령어 다루기
앨리어스 - alias
- 명령어에 다른 이름을 정의하여 사용
- 긴 명령어 대신 짧은 별칭을 사용
- 여러 명령을 하나의 명령으로 대체 가능
- 단 명령에 인자가 필요한 경우, 인자를 넘겨주지는 못함
- alias 명령
- 앨리어스의 설정 : $aslias 별칭=명령
- 현재 설정값 보기 : $alias
- 앨리어스의 해제 : unalias 명령사용
히스토리
: 이전에 입력한 명령 사용하기
- 이전 명령 보기 : fc
- 사용자가 입력한 명령을 사용자 홈 디렉토리 아래의 특수한 파일에 저장
- history == fc -l 둘다 이전 명령어 보여줌(history 쓰는게 더 낫다)
- 명령 재실행하기 : !문자 !번호
- 히스토리의 장점: 명령을 재입력하지 않고 반복 실행 가능
- 이벤트 지정가 !을 이용하여 명령 실행
- 파일 덮어쓰기 및 내용 추가하기
- 파일 덮어 쓰기 : 명령 > 파일명
- 파일에 내용 추가하기 : 명령 >> 파일명
05. 프롬프트 설정하기
- 프롬프트란? 명령 입력을 기다리는 시스템의 상태 표시
06. 환경 설정 파일의 종류
환경 설정 파일
: 사용자가 로그인할때마다 자동으로 실행되는 명령을 저장
- 초기화 파일
- 쉘이 시작할 때 실행되는 명령어와 변수 설정 저장
- 로그인 할 때 실행
- 종류 : 시스템 초기화 파일, 사용자 초기화 파일
- 시스템 초기화 파일
- 시스템을 사용하는 전체 사용자의 공통 환경 설정
- 기본 터미널 설정, 환경 변수 설정
- 시스템 관리자가 관리
- 사용자 초기화 파일
- 사용자 홈 디렉토리에 위치
- 사용 권한 설정, 기본 프롬프트 설정
- 사용자별 환경 설정 : 프롬프트, 경로, 앨리어스 등
- 환경 설정 파일
- shell 마다 사용자/시스템 초기화 파일의 위치와 실행시기(로그인, 서브 셸, 로그아웃)가 다름
반응형
'Computer Science > 유닉스프로그래밍' 카테고리의 다른 글
[유닉스 이론과 실습] ch13. 배시쉘 프로그래밍 (0) | 2020.10.18 |
---|---|
[유닉스 이론과 실습] ch04. vi 사용법 익히기 (0) | 2020.10.18 |
Introduction UNIX (0) | 2020.10.18 |
[유닉스 시스템 프로그래밍] Ch02. 파일 입출력 (0) | 2020.09.27 |
[유닉스 시스템 프로그래밍] Ch01. 유닉스 시스템 프로그래밍 개요 (0) | 2020.09.11 |