# 쉘(Shell)
쉘은 사용자와 운영체제 사이의 상호작용을 도와주는 매개체 역할을 한다.
사용자가 입력한 명령어를 처리하는 소프트웨어이다.
<쉘의 종류>
쉘의 종류 | 실행 파일 |
본 쉘 | /bin/sh |
콘 쉘 | /bin/ksh |
C 쉘 | /bin/csh |
Bash | /bin/bash |
tcsh | /bin/tcsh |
<로그인 쉘>
로그인 하면 자동으로 실행되는 쉘
보통 시스템관리자가 계정을 만들 때 로그인 쉘 지정
<로그인 쉘 변경>
$ chsh
Changing login shell for chang
Old shell : /bin/sh
New shell : /bin/csh $ logout
<쉘의 주요 기능>
명령어 처리 | 사용자가 입력한 명령을 해석하고 적절한 프로그램을 실행 |
시작 파일 | 로그인할 때 실행되어 사용자별로 맞춤형 사용 환경 설정 |
스크립트 | 쉘 자체 내의 프로그래밍 기능 |
<쉘의 환경 변수>
① 환경 변수 설정법
$ 환경변수명=문자열
→ 환경변수의 값을 문자열로 설정한다.
ex)
$ TERM=xterm
$ echo $TERM
xterm
② 환경 변수 보기
$ env
TERM=xterm
SHELL=/bin/sh
GROUP=cs USER=chang
HOME=/home/chang
PATH=/usr/local/bin:/usr/bin: ...
...
③ 사용자 정의 환경 변수
$ MESSAGE=hello
$ export MESSAGE
<쉘의 시작 파일>
시작 파일 | 쉘마다 시작될 때 자동으로 실행되는 고유의 시작 파일이다. 주로 사용자 환경을 설정하는 역할을 하며 환경설정을 위해서 환경변수에 적절한 값을 설정한다. |
시스템 시작 파일 | 시스템의 모든 사용자에게 적용되는 공통적인 설정이다. ex) 환경변수 설정, 명령어 경로 설정, 환영 메시지 출력, ... |
사용자 시작 파일 | 사용자 홈 디렉터리에 있으며 각 사용자에게 적용되는 설정이다. ex) 환경변수 설정, 프롬프트 설정, 명령어 경로 설정, 명령어 이명 설정, ... |
쉘의 종류 | 시작 파일 종류 | 시작 파일 이름 | 실행 시기 |
본 쉘 | 시스템 시작 파일 | /etc/profile | 로그인 |
사용자 시작 파일 | ~/.profile | 로그인 | |
Bash 쉘 | 시스템 시작 파일 | /etc/profile | 로그인 |
사용자 시작 파일 | ~/.bash_profile | 로그인 | |
사용자 시작 파일 | ~/.bashrc | 로그인, 서브쉘 | |
사용자 시작 파일 | /etc/bashrc | 로그인 | |
C 쉘 | 시스템 시작 파일 | /etc/.login | 로그인 |
사용자 시작 파일 | ~/.login | 로그인 | |
사용자 시작 파일 | ~/.cshrc | 로그인, 서브쉘 | |
사용자 시작 파일 | ~/.logout | 로그아웃 |
<전면 처리와 후면 처리>
① 전면 처리
$ 명령어
명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날 때까지 쉘이 기다려 준다.
② 후면 처리
$ 명령어 &
명령어들을 후면에서 처리하고 전면에서는 다른 작업을 할 수 있으면 동시에 여러 작업을 수행할 수 있다.
ex)
$ (sleep 100; echo done) &
[1] 8320
$ find . -name test.c -print &
[2] 8325
③ 후면 작업 확인
$ jobs %작업번호
→ 후면에서 실행되고 있는 작업들을 리스트 한다. 작업 번호를 명시하면 해당 작 업만 리스트 한다.
ex)
$ jobs
[1] + Running ( sleep 100; echo done )
[2] - Running find . -name test.c –print
$ jobs %1
[1] + Running ( sleep 100; echo done )
④ 후면 작업을 전면 작업으로 전환
$ fg %작업번호
→ 작업번호에 해당하는 후면 작업을 전면 작업으로 전환시킨다
ex)
$ (sleep 100; echo DONE) &
[1] 10067
$ fg %1
( sleep 100; echo DONE )
<입출력 재지정>
명령어 사용법 | 의미 |
명령어 > 파일 | 명령어의 표준출력을 모니터 대신에 파일에 추가한다. |
명령어 >> 파일 | 명령어의 표준출력을 모니터 대신에 파일에 추가한다. |
명령어 < 파일 | 명령어의 표준입력을 키보드 대신에 파일에서 받는다. |
명령어 << 단어 . . . 단어 |
표준입력을 키보드 대신에 단어와 단어 사이의 입력 내 용으로 받는다 |
명령어 2> 파일 | 명령어의 표준오류를 모니터 대신에 파일에 저장한다. |
명령어1 | 명령어2 | 명령어1의 표준출력이 파이프를 통해 명령어2의 표준입 력이 된다. |
cat 파일1 파일2 > 파일3 | 파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어 준다. |
<명령어 여러 개 사용하기>
명령어 사용법 | 의미 |
명령어1; … ; 명령어n | 나열된 명령어들을 순차적으로 실행한다. |
(명령어1; … ; 명령어n) | 나열된 명령어들을 하나의 그룹으로 묶어 순차적으로 실행한다. |
명령어1 && 명령어2 | 명령어1이 성공적으로 실행되면 명령어2가 실행되고, 그렇지 않으면 명령어2가 실행되지 않는다. |
명령어1 || 명령어2 | 명령어1이 실패하면 명령어2가 실행되고, 그렇지 않으 면 명령어2가 실행되지 않는다. |
<파일 이름 대치와 명령어 대치>
① 파일 이름 대치
대표문자를 이용하여 한 번에 여러 파일들을 나타낸다.
명령어 실행 전에 대표문자가 나타내는 파일 이름들로 먼저 대치하고 실행한다.
ex)
$ gcc *.c
$ gcc a.c b.c test.c
대표문자 | 의미 |
* | 빈 스트링을 포함하여 임의의 스트링를 나타냄 |
? | 임의의 한 문자를 나타냄 |
[..] | 대괄호 사이의 문자 중 하나를 나타내며 부분범위 사용 가능함 |
② 명령어 대치
명령어를 실행할 때 다른 명령어의 실행 결과를 이용한다. 역따옴표(`)로 에워싼 다른 명령어 부분은 그 명령어의 실행 결과로 대치된 후에 실행된다.
ex)
$ echo 현재 디렉터리 내의 파일의 개수 : `ls | wc -w`
현재 디렉터리 내의 파일의 개수 : 32
③ Quoting
특수문자의 기능을 제한(escape)하는 것을 의미한다.
\(backslash) | backslash 이후의 한 글자를 quoting |
'' | ''사이의 모든 특수문자를 quoting |
"" | $, \(backslasy), `를 제외한 ""사이의 모든 특수문자를 quoting |
따옴표를 사용해서 대치기능을 제한할 수 있다.
작은 따옴표(') | 파일이름 대치, 변수 대치, 명령어 대치를 모두 제한한다. |
큰 따옴표(") | 파일이름 대치만 제한한다. |
→ 따옴표가 중첩되면 밖깥쪽 따옴표가 효력을 갖는다.
ex)
$ name=나가수
$ echo '내 이름은 $name 현재 시간은 `date`'
내 이름은 $name 현재 시간은 `date`
$ echo "내 이름은 $name 현재 시간은 `date`"
내 이름은 나가수 현재 시간은 2016. 11. 11. (금) 10:27:48 KST
'Study > LINUX' 카테고리의 다른 글
[2020-2 리눅스 이론] 5주차 (0) | 2020.10.31 |
---|---|
[2020-2 리눅스 실습] 5주차 (0) | 2020.10.31 |
[2020-2 리눅스 실습] 3주차 (0) | 2020.09.25 |
[2020-2 리눅스 이론] 2주차 (0) | 2020.09.19 |
[2020-2 리눅스 실습] 2주차 (0) | 2020.09.19 |