본문 바로가기
공부하는 하스씨/Linux

Shell Script (1) - 기본기 다지기

by 박하스. 2008. 8. 27.
728x90
반응형

우선 첫째날로 기본기 다지기에 들어가겠다.

UNIX 서버를 운영중이라면 SHELL Script 를 통해 더욱 강력한 서버를 구성할 수 있다.

알아둔다면 업무자동화는 물론 다양한 방면으로 활용가능하다.

동영상 강의나 책을 보면서 정리된 내용을 옮겨 적는 것이라 좀 난잡할 수도 있다.


=====================================================================================================================

script는 실행권한 필요

- chmod 를 이용하여 실행권한을 주어야 실행 가능하다.

$ chmod 755 script.sh

$ chmod a+x script.sh


=====================================================================================================================

Foreground / Background Process

- login 되어 Foreground 에서 작업중이다가 &를 사용하여 Background 로 Process를 돌림으로써, 여러가지 작업을 동시에 할 수 있다.

- 동시에 Background Process가 실행하면 먼저 큐에 도착한 녀석이 먼저 처리된다.  ($ date & pwd &)


=====================================================================================================================

subshell

- 생성시기 : 명령어 사용 시, 스크립트 실행 시 (부모 shell은 subshell이 종료될 때까지 sleep 됨)

- 부모 shell 의 환경변수(복사본)와 지역변수(초기화본)를 상속한다.


=====================================================================================================================

$ stty -a 

- 현재 사용중인 터미널의 메타문자들을 보여준다. 설정된 대로 키가 먹힌다.


- erase : ^H  (한글자 지우기)

- kill : ^U  (한줄 지우기)

- susp : ^Z

- intr : ^C  (인터럽트. 실행 도중 작업을 중지시킨다.)

- eof : ^D  (파일의 끝. 파일에 내용을 다 썼으면 ^D로 파일의 끝을 알린다.)

- stop : ^S/^Q (출력정지/재출력 - 출력이 계속해서 올라갈 경우, 출력을 정지 시킬 수 있다.)

사용자 삽입 이미지

=====================================================================================================================

$ who | tee test.txt | sort

- tee 명령을 통해 출력을 'T' 처럼 2방향으로 갈라 출력을 달리 줄 수 있다.

- 아래 그림에서 who 라는 명령을 sort 하려고 하는 도중에 tee가 끼어들어 who 내용을 test.txt로 redirection 하고 있다.

사용자 삽입 이미지

우측방향> who의 내용이 sort 되어 터미널에 보여진다.

아래방향> who의 내용이 test.txt 파일로 떨어진다.

사용자 삽입 이미지

=====================================================================================================================

문자열 사용과 명령어 대치 (' ' /  ` ` / " ")

- 따옴표 사용법을 알아야 한다.

' ' : 100% 동일한 문자열. ' ' 안에 있는 내용은 쓴 내용 그대로 나온다.

` ` : 명령어 대치.

          $ echo ls    ▶  ls 그대로 출력

          $ echo `ls`  ▶  ls 명령의 결과를 출력


" " : 내부에 ` ` 명령어 대치를 사용할 수 있는 문자열

사용자 삽입 이미지

=====================================================================================================================

&& 와 ||

- 명령1 && 명령2 : 명령1 성공시 명령2 실행

- 명령1 || 명령2 : 명령1 실패시 명령2 실행


$ df -k && echo ------------------ && ls   

- df -k 명령이 정상적으로 실행 완료 되었기 때문에 ehco 명령이 실행되고, 이것도 성공했기 때문에 ls 까지 실행된다.

사용자 삽입 이미지


- bdf라는 명령이 존재하지 않아 실패하였으므로, echo로 Failure를 찍는다.

사용자 삽입 이미지


=====================================================================================================================

명령어 그룹으로 묶기

- 괄호를 사용하여 명령어를 그룹으로 묶을 수 있다.


$ (date; ls; pwd) > out.txt

사용자 삽입 이미지

=====================================================================================================================

sleep 과 wait

- sleep : 지정한 시간동안 대기

- wait : 지정한 프로세스가 끝날때까지 대기


사용자 삽입 이미지


=====================================================================================================================

$ echo $?

- 직전에 실행된 프로세스가 성공했는가?

- 0이면 성공. 0이 아니면 실패.


=====================================================================================================================

내장 명령어

$ eval `echo x=5`    ☞  ` ` 안의 결과를 실행한다.

$ exec   ☞  명령을 subshell을 생성하여 실행하지 않고, 바로 shell에서 실행한다. 실행이 끝나면 창이 바로 닫힌다.

$ shift    ☞  파라미터를 shift 시킨다.

$ umask   ☞  umask를 지정한다.



728x90
반응형

'공부하는 하스씨 > Linux' 카테고리의 다른 글

루트킷 #2  (0) 2008.10.11
루트킷 #1  (0) 2008.10.11
Shell Script (2) - 환경변수와 지역변수, Borune Shell  (0) 2008.08.27
공유 라이브러리로 컴파일 하기  (0) 2008.08.27
Makefile 참고 자료.  (0) 2008.08.26