# 쉘(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
복사했습니다!