본문 바로가기
OS/Linux Server

[Shell Programming] 5. Bash shell Script

by Haengsin 2022. 3. 2.
Bash shell Script 란?

: 하나의 파일에 기존에 존재하는 명령어들을 집어넣어 순차적으로 해석(Interprete)해서 실행하는 것.

 

- 리눅스 Command 들을 모아 놓은 ASCII Text 파일.

- 파일에 실행 퍼미션을 할당해야 실행 가능.

- Bash Shell Script 에서 특별히 의미가 정해진 기능

#			#comment
#!/bin/bash		#셔뱅.해시뱅.스크립트를 실행할 sub shell 이름

- Shell 구문을 기본 top-down 방식으로 해석해서 실행됨.

 

※ Sub shell

$ ls /bin/bash
$ pwd
$ /bin/bash		# Sub Shell
   $ cd /
   $ pwd
   $ exit
$ pwd

(1) Shell Script 예시

 

(2) Shell Script 예시(2) : 명령어처럼 사용할 수 있는 셀 스크립트를 생성하여 보자.

- 홈디렉토리에 명령어를 저장할 디렉토리를 생성.

mkdir ~/bin

- 명령어 경로에 추가. (환경 변수 PATH 뒤에 추가)

[centos@linux-mypc bin]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/centos/.local/bin:/home/centos/bin
[centos@linux-mypc bin]$ PATH=$PATH:/home/centos/bin
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/centos/.local/bin:/home/centos/bin:/home/centos/bin

- 특정 디렉토리(/var)의 사용량을 나타내는 셀 스크립트 파일을 생성

$ sudo vi varUsage.sh

#!/bin/bash

echo "============="
date +%Y-%m-%d
echo "============="
du -sh /var 2> /dev/null # /var의 사용량 출력, 에러 메시지는 /dev/null 로

- 실행 권한 수정

$ chmod +x varUsage.sh

- 실행

$ varUsage.sh

(3) Shell Script 예시(3) : 현재 디렉토리의 모든 파일의 목록을 /tmp/날짜.txt 파일에 저장하는 shell script 작성.

- 즉, 아래 내용을 자동으로 생성하여 주는 shell script를 작성해보자.

[centos@linux-mypc bin]$ ls > /tmp/$(date +%Y%m%d).txt
[centos@linux-mypc bin]$ cat /tmp/
20220302.txt                                                           .Test-unix/

 

[centos@linux-mypc bin]$ sudo vi out.sh

## out.sh
#!/bin/bash

path=`pwd`

ls $path > /tmp/$(date +%Y-%m-%d).txt

[centos@linux-mypc bin]$ sudo chmod +x out.sh
[centos@linux-mypc bin]$ out.sh
[centos@linux-mypc bin]$ ls /tmp
2022-03-02.txt
[centos@linux-mypc bin]$ cat /tmp/2022-03-02.txt
out.sh
sample2.sh
sample.sh
varUsage.sh

[centos@linux-mypc bin]$ cd ..
[centos@linux-mypc ~]$ ls
bin  blk.sh  casf  date.out  deploy  error.txt  file1  message.txt  test.sh
[centos@linux-mypc ~]$ cat /tmp/2022-03-02.txt
bin
blk.sh
casf
date.out
deploy
error.txt
file1
message.txt
test.sh

 

 

Reference

- https://www.youtube.com/watch?v=onbFKxEEgHg&list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&index=7