본문 바로가기
OS & Server/Linux

[Linux] 리눅스에서 쉘 스크립트(Shell Script)로 명령어 실행

by 주리니e 2023. 2. 15.
728x90

[Linux] 리눅스에서 쉘 스크립트(Shell Script)로 명령어 실행

 

 

리눅스에서 쉘 스크립트(Shell Script)를 만들어 명령어 자동실행 프로그래밍을 할 수 있다. 윈도우에서는 배치파일을 실행하면 그 안에 프로그래밍된 명령어들이 자동으로 실행되는데 윈도우 배치파일의 리눅스 버전이 쉘 스크립트이다.쉘 스크립트를 자동실행함으로써 효율적이고 간편하게 작업처리를 할 수 있다. 다만 쉘 스크립트는 인터프리터 방식으로 한줄 한줄씩 실행하여 다소 속도가 느릴 수 있다. 필자의 경우에는 데이터베이스에 저장되어 있는 특정 파일명들을 실제 리눅스에서 지울 때 쉘 스크립트를 이용하여 간단하게 삭제할 수 있었다.



  • 쉘 스크립트 만들기

쉘 스크립트를 생성하기 위해 vi 편집기를 이용해 파일 하나를 만든다.

$ vi jiurinie.sh

쉘 스크립트의 맨 상단에는 쉘 스크립트가 실행될 때 어떤 쉘로 스크립트를 실행할지 정의해야 한다. 쉘에는 여러 버전이 있지만 가장 많이 쓰이는 bash쉘로 선언을 하고 아래 문장을 넣은 후 wq를 눌러 저장한다.

#!/bin/bash

echo $(date)

exit 0



 

  • 쉘 스크립트 권한 설정

ls -al 명령어로 확인하면 쉘 스크립트의 권한을 확인할 수 있다. chmod 명령어를 통해 쉘 스크립트를 실행할 수 있도록 권한을 변경하자.

[jiurinie@playground ~]$ ls -al
total 8
drwxr-xr-x. 2 jiurinie jiurinie   27 Feb 15 17:25 .
drwx------. 5 jiurinie jiurinie 4096 Feb 15 17:21 ..
-rw-r--r--. 1 jiurinie jiurinie   31 Feb 15 17:21 jiurinie.sh
$ chmod 755 jiurinie.sh
#또는
$ chmod +x jiurinie.sh

 



  • 쉘 스크립트 실행 방법

쉘 스크립트 실행 방법은 세가지가 있다. 앞에 sh나 bash를 붙이면 위에 설정한 실행 권한 없이도 실행이 가능하다.

[jiurinie@playground ~]$ ./jiurinie.sh 
Wed Feb 15 17:36:36 KST 2023

[jiurinie@playground ~]$ sh jiurinie.sh 
Wed Feb 15 17:36:58 KST 2023

[jiurinie@playground ~]$ bash jiurinie.sh 
Wed Feb 15 17:37:16 KST 2023

 



  • 쉘 스크립트 활용 예제

데이터베이스(예 : PostgreSQL)에 저장된 특정 파일들이 리눅스 파일시스템에 존재하는 경우 이 파일들을 지우고 싶을 때 다음과 같이 명령어를 생성한다. 이 명령어를 쉘 스크립트에 저장 후 실행하면 한번에 여러 명령어를 삭제 할 수 있다. 쉘 스크립트에서 변수 및 반복문을 선언하여 명령어를 생성해 사용할 수도 있으며, 파일명들이 순서대로 되어 있지 않은 경우에는 다음과 같이 사용하면 편리하다. 아래 쉘 스크립트는 파일이 존재하지 않는 예외상황은 처리하지 않았음을 감안해주길 바란다.

SELECT 'rm -rf '
       || file_name AS command
FROM   (SELECT '/usr/share/attachments/FILE-'
               || Lpad(generate_series :: text, 5, '0') AS file_name
        FROM   generate_series(1, 5))a

#!/bin/bash

rm -rf /usr/share/attachments/FILE-00001
rm -rf /usr/share/attachments/FILE-00002
rm -rf /usr/share/attachments/FILE-00003
rm -rf /usr/share/attachments/FILE-00004
rm -rf /usr/share/attachments/FILE-00005

echo Complete!

exit 0
[jiurinie@playground ~]$ ./jiurinie.sh 
Complete!

 



  • 쉘 스크립트 문법 검사 사이트
 

ShellCheck – shell script analysis tool

ShellCheck finds bugs in your shell scripts

www.shellcheck.net

 

 

 

728x90

댓글