본문 바로가기
[Linux]

[Linux 기초] 쉘 스크립트란 무엇인가?

by SAMSUNG Metaverse-Cloud 2022. 12. 17.
728x90

 

쉘 스크립트란 무엇인가?

우리는 쉘을 이용해서 하나만의 명령을 지정할 수 있지만 여러개의 명령을 순차적으로 실행하는것을 통해서 하나의 업무를 진행할 수 있다. 순차적으로 명령을 실행해야 하는 것을 어딘가에 작성한 후 추후에 재사용할 수 있도록 하는 것이다. 

또한 6개월 ~ 1년사이에 한번씩 사용하지만 매우 복잡한 코드거나 하나라도 오타가 나면 안될 경우 역시 쉘 스크립트를 사용하는 것이 안전하고, 사용자에게 편의를 준다. 

 

 

쉘 스크립트 실습

 

먼저 우리는 간단한 실습을 위해 script라는 디렉토리를 만든 다음 script 디렉토리로 이동 해 주었다. 우리는 .log으로 끝나는 파일들을 정기적으로 bak 이라는 디렉토리로 백업을 시키려고 한다. 

 

먼저 쉘 스크립트가 아닌 명령어를 통해서 실행해보도록 하자.

 

 

 

먼저 touch 명령어를 이용해서 a,b,c 라는 로그 폴더를 만든다.

 

 

 

 

그 후 bak이라는 디렉토리를 생성해 준다.

그리고 우리는 log 폴더를 복사해야 하므로 cp(copy) 명령어를 쓴 후 세 파일의 공통점이 .log 파일이라는 것이므로 에스탈리스크.log 라고 입력한 후 복사할 디렉토리를 입력한다.

ls 명령어를 통해 bak 디렉토리의 내부를 살펴본 결과 세 파일이 잘 복사된 것을 확인할 수 있다. 

 

만약 위의 작업이 한번이 아닌 정기적으로 이루어져야 한다면 그 때 마다 명령어를 사용해서 입력하는 것은 비효율 적이다. 

 

 

 

그럼 이제 bash 쉘 스크립트를 만들어 볼 것이다. 

 

먼저 nano 명령어를 통해서 backup이라는 파일을 만들어준다.

 

 

가장 먼저 우리가 작성할 것은 #!/bin/bash를 작성한다.

이는 backup이라는 프로그램을 실행시킬때 운영체제는 첫번째 줄에 있는 #! 이라는 기호를 본다. 그 기호 뒤 /bin/bash를 보고 밑에 작성 될 명령어들이 /bin/bash 라는 프로그램을 통해서 해석되어야 한다라는 사실을 알 수 있다.

이것은 약속이다. 

그다음 우리가 하려고 하는 일은 만약 현재 디렉토리에 bak이라는 디렉토리가 없다면 만들고 있다면 만들지 않는 것이다. 

그리고 그 후 현재 디렉토리에 있는 모든 파일 중 .log로 끝나는 파일을 bak라는 디렉토리로 복사하려고 한다. 

 

그 다음 작성하는 것은 if ! [ -d bak ]; then 이다. 이 문법은 만약 bak이라는 이름을 가진 디렉토리가 존재하지 않는다면 이라는 의미이다.

그 아래줄에 tab키를 누르고 들여쓰기를 해서 mkdir bak 즉 bak이라는 디렉토리가 없으면 bak이라는 디렉토리를 생성해라 라는 의미이다.

fi는 if의 반대로 만약 디렉토리가 존재한다면 이라는 의미이며

마지막 cp *.log bak은 .log로 끝나는 모든 파일을 bak으로 복사해라 라는 의미이다.  작성을 완료한 후 저장해 준다. 

 

 

저장한 후 ls -l을 통해 디렉토리의 내부를 살펴본 결과 backup이라는 파일이 만들어 진 것을 알 수 있다. 

 

 

backup을 실행시키기 위해서 ./backup을 통해서 실행시켰지만 실행이 되지 않는다. 

그 이유는 현재 backup이라는 파일에 실행 권한이 없기 때문이다. 위에 backup을 보면 rw rw r만 존재하기 때문에 실행 권한이 없다. 

 

 

우리는 chmod 명령어를 통해서 backup 파일에 x 즉 실행 권한을 넣어준다. 

그리고 다시한번 ls명령어를 통해서 살펴보니 rwxrwxr-x로 x 권한이 들어간 것을 확인할 수 있다. 

 

그 후 우리는 먼저 bak 파일을 삭제한 후 ls 명령어를 통해 bak 디렉토리가 잘 지워진 것을 볼 수 있었다. 

그 후 ./backup을 통해 쉘 스크립트를 실행시키고 ls 명령어를 사용했다. 

그러자 bak 디렉토리가 잘 생성된 것을 확인할 수 있었고 bak 디렉토리 안에는 a,b,c의 로그파일이 존재하는 것을 확인할 수 있었다.

 

 

마지막으로 bak 디렉토리 안 c.log 파일을 지훈 후 다시한번 쉘 스크립트를 실행한다.

그리고 ls명령어를 사용하자 c.log까지 다시 잘 복사된 것을 확인할 수 있었다. 

 

 

출처

https://opentutorials.org/course/2598/14204

 

쉘 스크립트 - 생활코딩

강의소개 쉘을 통해서 명령을 실행시키는 작업을 한번에 실행할 수 있는 방법을 알아봅니다.  수업 강의 1 - Shell script 소개 강의 2 - Shell Script 사례 예제 #!/bin/bash if ! [ -d bak ]; then mkdir bak fi cp *.lo

opentutorials.org

 

728x90