본문 바로가기
카테고리 없음

[Linux] 간단한 쉘 스크립트 작성 (Shell Script)

by 떵해이 2020. 12. 4.
300x250

앞서 쉘을 먼저 공부하셔야 합니다.

쉘에 대해 it-serial.tistory.com/39 참조하시면 됩니다.

쉘로도 간단한 프로그래밍을 할 수 있습니다.

간단하게 사용하는 방법을 익혀보도록 하겠습니다.

 

○ 쉘(shell) 프로그래밍이란 ?

    ▷ 쉘의 내장된 기능을 사용한 프로그램 만드는 것

     쉘도 함수, 변수, 반복문 등 같은 기능을 가지고 상황에 따라 다르게 처리되는 쉘 스크립트 만들수 있음

     여러개의 동일한 명령을 반복적으로 실행할 경우 사용

        (그 외에도 사용하는 이유는 더 있습니다.)

     가장 기본적으로 사용되는 bash쉘을 이용

        (어떤 언어로 작성할지에 따라 파일의 확장자나 내용형식이 바뀜)

 

○ 쉘 스크립트(Shell Script)란 ?

     리눅스/유닉스 쉘에 의해 실행되도록 설계된 컴퓨터 프로그램

     쉘에서 제공하는 문법적 내용이 들어가있는 실행 가능 파일

     실행 파일 내용의 해석기(interpreter) 방식으로 동작

     컴파일 되지 않는 프로그램

 

 

● 쉘(shell) 스크립트 작성 방법

 

가장 기본적으로 사용되는 bash쉘을 이용해서 작성해도록 하겠습니다.

 

① 스크립트를 작성할 파일을 만들어야 합니다. (vi 또는 touch 등으로 파일 생성)

중요한 건 파일의 확장자를 잘적어야 합니다.

저희는 bash쉘을 사용해서 프로그램을 만들기로 했으니까 확장자명을 .sh로 생성합니다.

 

ex_test란 이름으로 만들어 보겠습니다.

# vi ex_test.sh 명령어로 파일을 만듬과 동시에 파일의 수정모드로 들어가보겠습니다.

 

 

② 이제 안에 스크립트(내용)를 작성해야합니다.

파일의 첫번째 줄에 bash쉘을 이용하는 프로그램을 만들겠다고 적어줘야 합니다.

bash의 절대 경로를 적어주어야 합니다.

(혹시나 파이썬 같은 다른 언어를 사용할 경우에는 해당 언어의 절대 경로를 찾아서 사용해야합니다.)

#![사용하는 언어의 경로] 

 

※ #!를 '셔뱅' shebang이라고 부릅니다.

    이 셔뱅은 스크립트 맨 처음에 꼭 사용해야 합니다.

    셔뱅의 뜻은 해당 인터프리터(interpreter)를 이용해서 해석하겠다는 뜻

                       인터프리터를 지정하는 명령어(?)라고 생각하시면 됩니다.

 

파일 수정모드안에서 파일 첫번째 줄에 꼭 입력해야 합니다.

#!/bin/bash

 

 

③ 이제부터는 실행할 명령어를 나열하면 됩니다.

명령행에서는 실행하는 것과 동일하게 나열하면 됩니다.

일단 echo라는 명령을 통해 파일을 실행하면 글이 나오도록 한번 작성해보겠습니다.

 

# echo "shell programming start"

# echo "shell programming fun"

# echo "shell programming end"

 

작성 후에 # :wq 명령을 통해 저장하고 vi모드에서 나옵니다.

 

 

# ll 명령어로 파일 확인

파일 ex_test.sh가 잘 생성되어 있습니다.

하지만 파일을 실행시키기 위한 권한인 x가 없습니다.

권한을 잘모르신다면 it-serial.tistory.com/26 참조하시면 됩니다.

 

 

⑤ 권한을 부여해주도록 하겠습니다.

# chmod 755 ex_test.sh 명령어를 통해 파일에 실행 권한을 부여했습니다.

그럼 파일의 색이 초록색으로 바뀌게 됩니다.

이렇게 만들어진 파일을 '쉘 스크립트'라고 합니다.

 

 

⑥ 한번 잘실행이 되는지 실행해보도록 하겠습니다.

# ./ex_test.sh 명령어로 .(현재 있는 디렉토리) / ex_test.sh(파일 클릭)을 하였습니다.

정상적으로 실행이 이루어진 것을 확인할 수 있습니다.

 

 

● 번외로 만약에 권한을 주지 않으면 어떻게 되는지 확인해보도록 하겠습니다.

# ll 명령어로 파일과 권한 확인

이 상태에서 확인해보도록 하겠습니다.

 

 

# ./ex_test.sh 명령어로 실행

실행 권한이 없어 허가 거부가 나왔습니다.

 

 

권한이 없이도 쉘 파일을 실행할 수 있습니다.

# sh [파일명] 명령어를 통해 해보도록 하겠습니다.

# sh ex_test.sh

(혹시 다른 언어 파이썬 같은 경우도 # python [파일명] 명령어를 통해 가능합니다.)

권한 없이 정상적으로 실행되는 것까지 확인해보았습니다.

 

쉘 스크립트를 사용해야 하는 경우가 왔을 때 매번 경로를 치기 힘들 수 있습니다.

지금은 디렉토리 안에 들어가 있어서 바로 ./ex_test.sh할 수 있지만 

나의 위치(pwd)가 다른 디렉토리에 있으면 절대 경로를 쳐야지만 파일을 실행할 수 있습니다.

 

그런 불편한 점들을 없애기 위해 환경변수 PATH에 등록하면 언제 어디서든 실행할 수 있습니다.

 

환경변수를 잘모르신다면 it-serial.tistory.com/38 참조하시면 됩니다.

 

 

● 환경변수 PATH에 등록하여 사용

 

지금 쉘 스크립트 파일이 있는 위치 확인을 해야합니다.

# pwd 명령어로 지금 나의 현재 위치 확인

쉘 스크립트 파일이 /test안에 있습니다.

 

 

임시로 환경변수 등록하는 방법

일단 이렇게 사용하기 위해서는 권한을 부여해야합니다.

모두가 사용할 수 있게 실행 권한을 부여합니다.

# chmod 755 ex_test.sh

 

 

# export PATH=$PATH:[쉘 스크립트 파일이 있는 절대 경로]

# export PATH=$PATH:/test 명령어로 환경변수를 임시로 등록할 수 있습니다.

임시로 등록한다는 말은 재부팅 시 환경변수가 지워집니다.

($PATH: 이거는 앞에 붙이는 이유는 기존의 PATH설정되어 있는 것들 불러오기 위해서 입니다.

 기존의 PATH에는 우리가 사용하는 기본적인 명령어들이 다 들어있습니다. 예를 들어 pwd, ls 등)

# echo $PATH 명령어로 확인

 

 

이제 어디서든 쉘 스크립트 파일을 사용할 수 있습니다.

다른 위치로 이동하여 한번 사용해보도록 하겠습니다.

# cd /etc 명령어로 /etc로 이동 (아무 위치로 이동하셔도 됩니다.)

# ex_test.sh 명령어로 쉘 스크립트 파일 실행

 

환경변수에 경로를 추가하고 난 후 이제부터는 모든 파일의 위치에서

언제 어디서나 일반 명령어처럼 사용할 수 있습니다.

(단, 재부팅 시에 초기화 됩니다. 그렇지 않으려면 영구등록을 해주셔야 합니다.)

 

영구적으로 환경변수를 등록하시려면 /etc/profile에 등록하시면 됩니다.

자세한 사항은 위 환경 변수글을 참조하시면 됩니다.

 

※ 쉘 프로그래밍에 사용되는 기본적인 문법들은 일반적인 언어처럼 프로그램 작성이

가능하지만 비슷하면서도 조금 다른 문법을 가집니다. 한번 찾아서 공부해보시길 바랍니다.

반응형

댓글