쉘(Shell)이란
리눅스에서 명령어를 작성하고 프로그램을 실행시킬때는 항상 '쉘'의 도움을 받는다.
쉘이란 사용자와 리눅스 커널간의 매개체, 연결다리 라고 생각하면 된다.
사용자가 직접 커널이나 하드웨어 조작을 할 수 없기 때문에 이를 편리하고 사용자친화적(?)이게 화면을 통해 소통을 하는 방식이다.
리눅스에서 여러개의 쉘이 있지만 기본적으로 사용하는 쉘은 bash이다.
현재 사용하고 있는 쉘을 확인하기 위해서 다음과 같이 작성하면 된다.
echo $0
현재 내가 사용하고 있는 쉘은 zsh(제트쉘, 지쉘)이며 터미널 화면을 이쁘게 꾸미고 싶어서 변경 했다.
보기좋은 터미널이 개발하는데 즐거움(?)을 주기 때문이다.....(눈물)
이제 쉘의 개념을 알았으니 쉘 스크립트에 대해서 알아보자.
쉘 스크립트
우선 쉘을 제외하고 스크립트만 보자.
스크립트란 사전적으로 대본, 원고 라는 뜻을 갖는데 리눅스에서도 비슷한 의미를 갖는다.
우리가 리눅스 터미널에 코드를 작성하여 원하는 동작을 하도록 대본을 작성하는 것을 '쉘 스크립트' 라고 한다.
이 쉘 스크립트는 편집기를 통해서 작성하게 되며 nano를 통해 작성해보자.
1. 스크립트를 저장할 디렉토리 생성
2. a,b,c라는 로그파일 생성
3. 스크립트 작성
1) bak라는 디렉토리가 없으면 bak라는 디렉토리를 생성해라.
2) .log로 끝나는 파일을 전부 복사해서 bak디렉토리에 복사해라.
위의 작업을 하기 위한 코드는 다음과 같다.
~ mkdir script
~ cd script
~/script touch a.log b.log c.log
~/script nano backup
########## nano 편집기 #############
#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
########## nano 편집기 종료 #########
위와같이 코드를 작성하면 ~/ script 디렉토리에 있는 항목은 다음과 같다.
./backup 명령어로 스크립트를 실행하려고 하면 에러가 나오는데 그 이유는 r, w만 허용되어있기 때문에
즉, 읽기와 쓰기만 가능하기 때문에 실행모드도 가능하도록 바꿔야 한다.
~/script chmod +x backup
이렇게 하면 실행모드가 가능하도록 바뀐것을 확인 할 수 있다.
이제 ./backup 명령을 내리면 bak라는 디렉토리가 생기면서 .log라는 파일을 전부 bak디렉토리 안에 복사한다.
이로써 작성한 스크립트를 통해 프로그램이 실행되면 나름의 자동화 기능을 하도록 구현을 해 보았다.
사실 쉘 스크립트를 깊게 배우려면 공부해야 할 양이 상당히 많지만 아직 리눅스를 전문적으로 할 것이 아니라 잠깐 라즈베리파이를 사용할때 도움이 될 정도로 배우고 있기 때문에 이정도로만 공부를 하고 다음에 더 필요하면 그때 깊게 공부를 하도록 하자.
'리눅스' 카테고리의 다른 글
[리눅스] 백그라운드, 데몬 프로세스 (0) | 2022.01.27 |
---|---|
[리눅스] 디렉토리 구조 & 파일찾기 (0) | 2022.01.26 |
[리눅스] I/O Redirection (0) | 2022.01.24 |
[리눅스] 패키지 매니저(apt, wget, git) (0) | 2022.01.22 |
[리눅스] 에디터 편집하기(nano) (0) | 2022.01.20 |