- Bash Shell
. 대화형 사용성.
. 당시 사용되던 유용한 기능들 대부분 흡수 (예, 자동완성)
- Z Shell
- Korn Shell(ksh), ksh의 고성능 버전 Z Shell(zsh)
- 고유의 기능(예, 오타 교정, 색상 지정 등) + sh, ksh, bash와 두루 호환
- Oy My ZSH로 셸에 다양한 기능 추가
-> 셸 스크립트 실행 (/bin/sh), 로그인 셸 (/bin/bash, /bin/zsh)
많이 사용되는 쉘 명령어
• 파이프와 리다이렉션
• 변수와 인용
• 환경변수
• 필터 설정
• 쉘 스크립트
파이프와 리다이렉션
- 모든 프로세스는 3개의 기본 파일 디스크립터를 가지고 있음
. 표준 입력(STDIN) : 0, 표준 출력(STDOUT) : 1, 표준 오류(STDERR) : 2
- <, >, >> 기호는 한 명령의 입력이나 출력을 파일로 전환하라는 지시어
< : 해당 명령의 표준 입력을 기존 파일의 내용물에 연결
>, >> : STDOUT을 파일로 리다이렉트. > 는 파일의 내용을 대체,
>> 는 기존 파일의 내용에 추가
- 한 명령의 STDOUT을 다른 명령의 STDIN에 연결하려면 파이프(|)를 사용
- 앞 명령이 성공했을 경우에만 두번째 명령 실행
- 앞 명령이 실패했을 경우에만 두번째 명령 실행
- 한 명령을 여러 줄에 걸쳐 쓰려면 \ 기호를 사용
- 여러 명령을 결합해서 한 줄로 만드는 경우, 명령문들을 서로 구분하기 위해 ; 기호 사용
변수와 인용
- 변수명에 값을 지정할 때는 이름만 사용, 값을 참조할 때는 변수명 앞에 $ 기호를 사용
- 변수를 참조할 때는 변수명 주변을 중괄호({})로 묶어서 어디 까지가 변수이고 텍스트인지를 구분
- 변수 네이밍에는 표준 관례가 있지는 않지만,
. 환경변수, 글로벌 환경설정에서 읽은 변수: 모든 글자가 대문자
. 로컬 변수: 소문자로 표시. _ 부호로 구성요소들을 구분
* 대/소문자 구분함
- 작은 따옴표, 큰 따옴표, 역 따옴표
환경변수
- 실행 프로그램들은 환경변수를 참조해 구동 조건을 변화
- 환경 변수 조회
- 로그인 시 설정하는 환경 변수는 ~/.profile이나 ~/.bash_profile에 포함
- PWD, HOME과 같은 환경변수들은 셸에 의해 자동으로 관리
필터 명령
- wc : 줄, 단어, 문자의 수를 셈
- head와 tail : 파일의 시작이나 끝을 읽어냄
- grep : 입력 텍스트를 검색해서 주어진 패턴과 일치하는 줄들을 출력
셸 스크립트
- 셸이나 명령 줄 인터프리터에서 돌아가도록 작성된 스크립트
예) 커맨드 라인에서 타이핑 하는 것들을 자동화
- 단, 50줄이 넘어가거나 셸에 없는 기능이 필요 -> 파이썬, 루비
- .sh라는 파일 확장자를 사용하기도 하지만, 대부분 셸 스크립트는 파일 확장자를 사용하지 않음
- 오리지널 Borne Shell의 문법으로 제한하는 것을 권장
-> 스크립트가 다른 시스템에서 동작하지 않는 경우를 방지
- 작성
. 첫 줄은 shebang
-> 현재 파일의 실행 방법을 커널에 안내 (호출된 셸 입장에서는 주석)
-> 셸의 경우, 대부분 /bin/sh (링크 형태)
. 주석은 #
. 하나의 논리적인 줄을 여러 줄로 분리할 때는 끝에 \ 사용
. 여러 실행문을 하나의 줄에서 실행할 때는 ; 으로 구분
- 실행
-> $ chmod +x myscript $ ./myscript
-> $ sh myscript # 새로운 셸에서 명령 실행
-> $ source myscript 또는 $ . myscript # 현재 셸에서 명령 실행
. 각 명령을 실행하기 전에 명령 내용을 출력
-> $ sh -x myscript
'리눅스 > Part3. Ch08. 스크립트 및 쉘프로그래밍' 카테고리의 다른 글
05. (실습) 리눅스 커맨드를 파이썬으로 구현 (0) | 2022.12.17 |
---|---|
04. 파이썬 실행 환경 구성 (0) | 2022.12.17 |
03. (실습) 인스턴스 ID 기반 SSH 연결 스크립트 작성 (0) | 2022.12.17 |
01. 스크립트 작성 기준 (0) | 2022.12.17 |