Shell Script

Shell Script 기초(3)

사실 나도 모름 2023. 11. 23. 04:18
  1. Shell Script 란
  2. 기초 실습
  3. Sub Shell

 


1. Shell Script 란

Shell Script는 운영 체제의 명령어를 자동화하고 실행하기 위한 스크립트 언어다.

주로 Unix 계열 및 Linux 시스템에서 사용되며, 쉘 (Shell) 환경에서 명령어를 순차적으로 실행하도록 하는 스크립트를 작성하는 데 사용된다.

 

 

 

 


2. 기초 실습

Shell Script 파일 생성
# Shell Script 파일 하나 만들어보기
cat > test.sh
echo "====================="
date +%Y-%m-%d
echo "====================="
df -h /

 

df 는 파일시스템 별 디스크 사용량을 점검하는 명령어다.위와 같이 파일을 생성해서 실행시키면 입력한 명령어가 순차적으로 실행된다.

 

 

파일 권한부여

 

파일은 생성 시 따로 설정이 없다면 기본적으로 root가 생성한 파일은 644, 유저가 생성한 파일은 664로 생성된다.

읽기와 쓰기 권한은 있지만 실행 권한이 없다.

Shell Script는 읽고 쓰는 것이 아니라 실행되는 것이기에 반드시 파일에 실행권한을 줘야한다.

실행 권한은 파일 상세정보의 첫번째 필드에 x로 표시된다.

# test.sh 파일에 실행 권한부여
chmod +x test.sh

# 확인
ll test.sh

 

ls -a 또는 ll 명령을 통해 확인해보면 파일의 권한에 x가 붙은 것을 볼 수 있다.

# 결과
-rwxrwxr-x 1 apple apple 81 Nov 22 17:42 test.sh*

 

 

Shell Script 실행

 

이번에는 만든 Shell Script 파일을 실행해보자.

# test.sh 파일 실행
./test.sh

# 결과
=====================
2023-11-22
=====================
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  9.8G  3.1G  6.3G  33% /

 

가장 기본적인 Shell Script를 생성하고 실행해보았다.

 

 

 

 


3. Sub Shell

우리가 Shell Script를 보면 흔하게 볼 수 있는 것이 스크립트 첫 줄에 입력된 #!/bin/bash 다.

결론부터 말하자면 위 명령어는 어떤 Shell을 사용해서 스크립트를 실행할 것인지 정의하는 명령이다.

셔뱅 혹은 해시뱅이라고 불리며 저 명령을 만나면 또다른 Shell이 하나가 열리게 된다.

그 Shell 안에서 스크립트에 있는 명령어들이 실행되고 다시 원래 Shell로 돌아오게 된다.

명령어로 보아 Bash Shell을 하나 열어서 파일에 있는 명령을 실행시키고 Shell이 종료되는 형태다.

 

이해하기 쉽게 말하자면 컴퓨터로 크롬 브라우저가 하나 열려있는데 다른 작업한다고 크롬 브라우저 하나를 더 실행시키는 것과 비슷하다.(이해를 돕기 위한 것일뿐 새 탭을 하나 더 연 것이라고 생각해도 된다)

 

일반적으로 Shell 환경에서 '#' 이라고 하면 주석을 입력할 때 사용된다.

하지만 Shell Script 에서는 #! 을 사용하여 Sub Shell을 지정하는 용도로도 쓰인다.

 

참고
Shell Script 파일을 작성할 때 PATH 환경변수를 활용하면 좋다.
# PATH 환경변수에 나만의 디렉토리 경로 추가하기
PATH=$PATH:~/bin

# 확인
echo $PATH​

# 결과
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/apple/bin

 
이렇게 하면 내가 만든 스크립트를 경로를 지정하지 않더라도 파일이름만으로 실행할 수 있다.

 

 

 

실습

 

vi 혹은 vim 에디터를 사용하여 입력한다.

 

단순 Hello World! 를 출력하는 스크립트

vi sample.sh

### sample.sh 아래 내용부터 입력
#!/bin/bash
#: Title			: Sample bash script
#: Date				: 2023-11-23
#: Author			: Name
#: Version			: 1.0
#: Description			: Print Hello World
echo "Today : $(date +%Y-%m-%d)"
echo "Hello, World!"

# 실행 결과
Today : 2023-11-22
Hello, World!

 

 

 

현재 /var 디렉토리의 용량을 보여주는 스크립트

vi varUsage.sh

### varUsage.sh 아래 내용부터 입력
#!/bin/bash
#: Title			: Sample bash script
#: Date				: 2023-11-23
#: Author			: Name
#: Description			: Print /var directory usage
echo "======================================="
date +%Y-%m-%d
echo "======================================="
du -sh /var 2> /dev/null
echo

# 실행 결과
=======================================
2023-11-22
=======================================
625M    /var

 

 

 

홈 디렉토리의 모든 파일 목록을 /tmp에 날짜.txt 형식으로 저장하는 스크립트

vi storeFileList.sh

### storeFileList.sh
#!/bin/bash
#: Title			: Sample bash script
#: Date				: 2023-11-23
#: Author			: Name
#: Description		: Store File List in /tmp
ls -al ~ 1> /tmp/$(date +%Y%m%d).txt

 

 

 


 

아래 영상을 참고했습니다.

https://youtube.com/playlist?list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&si=6wfINdDSGnrchepY

 

[따배셸] 셸 프로그래밍 시리즈

 

www.youtube.com

 

'Shell Script' 카테고리의 다른 글

Shell Script 보안 - 코드 인젝션 취약점  (0) 2023.11.24
Shell Script 기초(5)  (0) 2023.11.24
Shell Script 기초(4)  (0) 2023.11.24
Shell Script 기초(2)  (0) 2023.11.22
Shell Script 기초(1)  (0) 2023.11.22