교재 : 리눅스 시스템 원리와 실제 (창병모, 생능출판)
5.1 쉘 소개
1) 쉘의 역할
- 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어
- 명령어 처리기(command processor)
- 사용자로부터 명령어를 입력받아 이를 처리한다.
2) 쉘의 종류 : 유닉스/리눅스에서 사용 가능한 쉘의 종류
(1) 본 쉘(Bourne shell)
- 쉘 실행파일 : /bin/sh
- 벨 연구소의 스티븐 본에 의해 개발됨.
- 유닉스의 기본 쉘
(2) 콘 쉘
- 쉘 실행파일 : /bin/ksh
- 1980년대에 별 연구소에서 본 쉘을 확장해서 만듦.
(3) C 쉘
- 쉘 실행 파일 :/bin/csh
- 버클리대학의 빌 조이
- 쉘의 핵심 기능 위에 C언어의 특징을 많이 포함함.
- BSD 계열의 유닉스에서 많이 사용됨.
- 최근에 이를 개선한 tcsh가 개발됨.
(4) Bash
- 쉘 실행 파일 :/bin/bash
- GNU에서 본 쉘을확장하여 개발
- 리눅스 및 맥 OS X에서 기본 쉘로 사용되며 널리 보급됨.
- Bash 명령어와 구문은 본 쉘 명령어 구문을 확장함.
(5) tcsh
- 쉘 실행 파일 :/bin/tcsh
3) 로그인 쉘 (login shell)
- 로그인하면 자동으로 실행되는 쉘
- 보통 시스템 관리자가 계정을 만들 때 로그인 쉘 지정
- 로그인 쉘 변경
$ chsh
- 쉘 변경 ex) $ csh
$ 변경할 쉘 이름
5.2 쉘의 기능
1) 쉘 주요 기능
- 명령어 처리 : 사용자가 입력한 명령을 해석하고 적절한 프로그램 실행
- 시작 파일 : 로그인할 때 실행되어 사용자별로 맞춤형 사용 환경 설정
- 스크립트 : 쉘 자체 내의 프로그래밍 기능
2) 쉘의 실행 절차
3) 쉘의 환경 변수
- 환경 변수 설정
$ 환경변수명=문자열
- 환경 변수 보기
$ env
- 사용자 정의 환경 변수 예시
$ MESSAGE=hello
$ export MESSAGE
4) 쉘의 시작 파일 (start-up file)
- 시작 파일
- 쉘마다 시작될 때 자동으로 실행되는 고유의 시작 파일
- 주로 사용자 환경을 설정하는 역할을 하며 환경설정을 위해 환경변수에 적절한 값을 설정한다.
- 시스템 시작 파일
- 시스템의 모든 사용자에게 적용되는 공통적인 설정
- 환경변수 설정, 명령어 경로 설정, 환영 메시지 출력 등.
- 사용자 시작 파일
- 사용자 홈 디렉터리에 있으며 각 사용자들에게 적용되는 설정
- 환경변수 설정, 프롬프트 설정, 명령어 경로 설정, 명령어 이명 설정 등
쉘의 종류 | 시작파일 종류 | 시작파일 이름 | 실행 시기 |
본 쉘 | 시스템 시작 파일 | /etc/profile | 로그인 |
사용자 시작 파일 | ~/.profile | 로그인 | |
Bash 쉘 | 시스템 시작 파일 | /etc/profile | 로그인 |
사용자 시작 파일 | ~/.bash_profile | 로그인 | |
사용자 시작 파일 | ~/.bashrc | 로그인 | |
시스템 시작 파일 | /etc/bash.bashrc | 로그인 | |
C 쉘 | 시스템 시작 파일 | /etc/.login | 로그인 |
사용자 시작 파일 | ~/.login | 로그인 | |
사용자 시작 파일 | ~/.cshrc | 로그인 | |
사용자 시작 파일 | ~/.logout | 로그아웃 |
5.3 전면 처리와 후면 처리
1) 전면 처리
- 입력된 명령어를 전면에서 실행하고 쉘은 명령어 실행이 끝날 때까지 기다림.
$ 명령어
2) 후면 처리
- 명령어를 후면에서 실행하고 전면에서는 다른 작업을 실행하여 동시에 여러 작업을 수행할 수 있다.
$ 명령어 &
- 후면 작업 확인 : 후면에서 실행되고있는 작업들을 리스트한다. 작업 번호를 명시하면 해다 작업만 리스트한다.
$ jobs [%작업번호]
- 후면 작업을 전면작업으로 전환 : 작업번호에 해당하는 후면 작업을 전면 작업으로 전환시킨다.
$ fg %작업번호
5.4 입출력 재지정
1) 출력 재지정 (output redirection)
$ 명령어 > 파일
: 명령어의 표준 출력을 모니터 대신에 파일에 저장한다.
- 출력 재지정을 이용해 파일 만들기 :표준 입력내용을 모두 파일에 저장한다. 파일이 없으면 새로 만든다.
$ cat > 파일
- 두 개의 파일을 붙여서 새로운 파일 만들기 : 파일1, 파일2의 내용을 붙여서 새로운 파일3을 만든다.
$ cat 파일1 파일2 > 파일3
2) 출력 추가
$ 명령어 >> 파일
: 명령어의 표준출력을 모니터 대신에 파일에 추가한다.
3) 입력 재지정 (input redirection)
$ 명령어 < 파일
: 명령어의 표준입력을 키보드 대신 파일에서 받는다.
4) 문서 내 입력 (here document)
$ 명령어 << 단어
...
단어
: 명령어의 표준입력을 키보드 대신에 단어와 단어 사이의 입력으로 받는다.
5) 오류 재지정
$ 명령어 2> 파일
: 명령어의 표준오류를 모니터 대신에 파일에 저장한다.
- 명령어의 실행 결과
- 표준출력(standard output) : 정상적인 실행의 출력
- 표준오류(standard error) : 오류 메시지 출력
6) 파이프
$ 명령어1 | 명령어2
: 명령어1의 표준출력이 파이프를 통해 명령어2의 표준입력이 된다.
5.5 여러 개의 명령어 실행
1) 명령어 열 (command sequence)
$ 명령어1; ... ; 명령어n
: 나열된 명령어들을 순차적으로 실행한다.
$ (명령어1; ... ; 명령어n)
: 나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다.
2) 조건 명령어 열 (conditional command sequence)
: 첫 번째 명령어 실행 결과에 따라 다음 명령어 실행을 결정할 수 있다.
- && : 명령어1이 성공적으로 실행되면 명령어2가 실행되고, 그렇지 않으면 명령어2가 실행되지 않는다.
$ 명령어1 && 명령어2
- || : 명령어1이 실패하면 명령어2가 실행되고,그렇지 않으면 명령어2가 실행되지 않는다.
$ 명령어1 || 명령어2
5.6 파일 이름 대치와 명령어 대치
1) 파일 이름 대치
- 대표문자를 이용한 파일 이름 대치
- 대표문자를 이용하여 한번에 여러 파일들을 나타냄.
- 명령어 실행 전에 대표문자가 나타내는 파일 이름들로 먼저 대치하고 실행함.
대표문자 | 의미 |
* | 빈 스트링을 포함하여 임의의 스트링을 나타냄. |
? | 임의의 한 문자를 나타냄. |
[..] | 대괄호 사이의 문자 중 하나를 나타내며 부분범위 사용 가능함. |
2) 명령어 대치 (command substitution)
- 명령어를 실행할 때 다른 명령어의 실행 결과를 이용
- `명령어` 부분은 그 명령어 실행 결과로 대치된 후에 실행됨.
ex) echo 현재 시간은 `date`
3) 따옴표 사용
- 따옴표를 사용하여 대치기능을 제한함.
- 따옴표가 중첩되면 밖의 따옴표가 효력을 가짐.
대치 발생 여부 | 파일 이름 | 변수 | 명령어 |
' ' | x | x | x |
" " | x | o | o |
'전공과목 정리 > 리눅스시스템 + 시스템프로그래밍' 카테고리의 다른 글
[리눅스시스템🐧] 7장 인터넷과 서버 (2) | 2024.01.03 |
---|---|
[리눅스시스템🐧] 6장 프로세스 (4) | 2024.01.03 |
[리눅스시스템🐧] 4장 파일 사용 (2) | 2024.01.02 |
[리눅스시스템🐧] 3장 기본 명령어 (2) | 2024.01.02 |
[리눅스시스템🐧] 2장 X 윈도우와 데스크톱 환경 (2) | 2023.12.28 |