본 글은 아래 영상을 통해 공부하고 작성했습니다. 제 글보다 영상 시청이 더 도움 될 것입니다.
- 용어 정리 -
Script
하나의 파일안에 기존에 존재하는 명령어들을 집어넣어 순차적으로 해석하여 실행하도록 하는것
대표적으로 perl script와 shell script가 있다.
Program
소스 코드를 파일에 집어 넣어두어 컴파일러가 컴파일하고 바이너리 명령어(프로그램)를 생성하여 동작시키도록 하는 것
대표적으로 C, C++, Java가 있다.
Shell Script
리눅스 명령어들을 모아놓고 순차적으로 실행되도록 하는 것
Shell Program
Shell Script에 추가적으로 from if while과 같은 프로그램 문법을 집어 넣어서 좀 더 프로그램처럼 만들어 놓은 것
Shell Script란?
- 리눅스 Command들을 모아 놓은 ASCII Text 파일
- 실행 퍼미션을 할당해야 실행 가능
- Bash shell script에서 특별히 의미가 정해진 기능이 있다.
- #은 Comment(주석)을 의미한다.
- #!/bin/bash는 스크립트를 실행할 sub shell의 이름으로 셔뱅 또는 해시뱅으로 불린다.
- Shell 구문은 기본 top-down 방식으로 해석해서 실행된다.
Sub Shell이란?
로그인 쉘: 사용자가 로그인하여 실행된 쉘
Sub Shell: 로그인 쉘에서 또 다른 쉘을 실행시켰을 때 동작하는 쉘
즉, Shell Script 작성할 때 Sub Shell을 지정하지 않으면 로그인한 쉘로 Shell Script가 동작하게 되므로 일반적으로 Sub Shell을 지정해서 Shell Script를작성한다.
쉘 스크립트 사용 팁
Shell Script를 작성하여 보관할 디렉토리 bin을 생성하고 그 겅로를 PATH 환경변수에 등록하면 쉘 스크립트를 보다 쉽게 사용할 수 있다.
# vi bin/sample.sh
#!/bin/bash
#: Title : Sample bash script
#: Date : 2021-07-22
#: Author : "joon"
#: Version : 1.0
#: Description : Print Hello World
echo "Today : $(date +%Y-%m-%d)"
echo "Hello, Linux World"
쉘 스크립트 작성시 주석으로 설명을 달아주는 것이 좋다.
chmod u+x bin/sample.sh
실행 권한을 주어야 쉘 스크립트 실행이 가능하다.
Shell script 실습
1.
# vi test.sh
echo "==================="
date +%Y-%m-%d
echo "==================="
df -h /
위와 같이 test.sh 이름으로 테스트용 쉘 스크립트 파일을 작성한다.
# chmod u+x test.sh
쉘 스크립트는 반드시 실행권한이 있어야 스크립트 파일로써 실행시킬 수 있다.
# ./test.sh
2.
# vi bin/varUsage.sh
#!/bin/bash
#: Author : "joon"
#: Description : Print /var directory usage
echo "[/var Directory]"
echo "==============================="
date +%Y-%m-%d
echo "==============================="
du -sh /var 2> /dev/null
echo
chmod u+x bin/varUsage.sh
실습 문제
다음의 조건에 맞는 shell script를 작성하세요.
1) 현재 디렉토리의 모든 파일 목록을 /tmp/날짜.txt 파일에 저장하는 shell script를 작성하시오.
# vi bin/joon.sh
#!/bin/bash
ls -l > /tmp/$(date +%Y-%m-%d).txt
# chmod u+x bin/joon.sh
# joon.sh
'Bash Shell Programming' 카테고리의 다른 글
Bash Shell Programming(7) (0) | 2021.07.23 |
---|---|
Bash Shell Programming(6) (0) | 2021.07.23 |
Bash Shell Programming(4) (0) | 2021.07.21 |
Bash Shell Programming(3) (0) | 2021.07.21 |
Bash Shell Programming(2) (0) | 2021.07.19 |