-
[따배쉘] 5.Bash shell scriptLinux 2022. 8. 25. 19:10
옮
===
5.Bash shell script
===
script : 하나의 파일에 기존에 존재하는 명령어들을 집어넣어서 순차적으로 interpret해서 실행
예)Shell script
program : 소스코드를 하나의 파일에 넣고 컴파일러가 컴파일해서 바이너리로 만들어서 동작시키도록 해주는 것
예)C, C++, Java
▽그냥 터미널에 한줄 한줄 씩 입력할 것을 스크립트로 쭉 써놓은 것인듯 한줄 한줄 해석하고
===
Shell script
Shell program이라고도 표현한다
뭐지 Shell은 interpreter인데?
Shell script : 리눅스 커맨드들을 모아놓고 순차적으로 실행하는 것
Shell program : if, loop등 프로그램 문법을 집어넣어서 프로그램처럼 만들어놓은 것
누가 딱 이렇게 정해놓은건 아니고 두개가 가능하구나 정도로 알아들으면 된다
===
===
vi test.sh
df -h /
===
이렇게 만들어놓고 실행 퍼미션이 있어야 한다
저기에 x가 있어야 해
그리고 실행하면
날짜와 함께 root Filesystem의 사용량을 출력해주는 script
===
특별히 기능이 있다
Shell script안에서
#으로 시작하면 comment(설명)
첫번째 줄 첫번째 컬럼에서 #!/bin/bash, #!/bin/csh 이렇게 쉘 이름을 넣어주면 셔뱅라인, 해시뱅라인이라고 부르고 script를 실행할 sub shell의 이름이다. 아무것도 안넣어주면 로그인쉘로 동작한다. 일반적으로 sub shell을 정한다
sub shell로 동작
top-down방식
===
sub shell이란?
bash가 shell을 만들어주는 프로그램. 바이너리 프로그램으로 존재한다
vi test.sh하면 vi에디터가 실행되듯이
/bin/bash하면 bash shell이 실행된다 - shell안에서 또 다른 shell을 실행할 수 있다 vi에디터 실행하듯이
로그인 쉘과 구분해서 따로 실행한 쉘을 sub shell이라고 부른다
===
/bin/bash에서 실행이 됨. sub shell상태다
디렉토리를 이동하고 exit하면 sub shell이 종료되고, 그 shell자체가 없어진다
그래서 종료 한 다음 pwd를 해보면 ~로 돌아와 있다(로그인쉘로 돌아옴) ▽마치 커맨드창 하나 더 연거네?
===
셔뱅, 해시뱅 : shell script를 실행하는데, sub shell을 만들어서 실행해줘 라는 말
/bin/bash를 먼저 하는건데 #!를 붙이는 것
===
예)
===
shell script실행할 때 PATH라고 하는 환경변수를 잘 활용하면 좋다
내가 어떤 디렉토리를 만들고 쉘스크립트를 그곳에 모아두고, 여기에 모아놓은 쉘 스크립트를 실행하기 좋게 하기 위해 PATH에 추가. 그러면 커맨드를 실행할 때 PATH 디렉토리에서 찾아서 실행, 없으면 다음, 다음.. 순차적으로 찾아 실행
===
PATH=$PATH로 이전것을 가져온 뒤에 추가한다
그리고 /home/ubuntu는 ~로 바꾸기 가능
등록됐다
그럼 이제 여기에다 쉘스크립트를 집어넣고 실행할 수 있다(▽어디서든 실행된다기 보다 경로 표시를 안해줘도 된다)
===
오타 : %+Y 를 +%Y로 바꿔주기
▽cat > sample.sh : https://recipes4dev.tistory.com/177
: 표준 입력으로 입력받은 내용을 파일에 쓰기 강의에서도 끝낼 때 Ctrl+D하셨어
저렇게 주석 달아주면 좋다
===
실행하려고 실행커미션
이전엔 ./sample.sh라고 현재 디렉토리를 명시해줬어야 했는데
PATH에 현재 디렉토리가 등록돼서 그냥 sample.sh라고만 해도 된다
===
예2)
df는 시스템 전체 디스크 공간
du는 특정 디렉토리 디스크 사용량
2>는 에러 메시지가 뜨면 /dev/null 에다가 버리는 것 = 정상적인 메시지만 보도록 하는 것
echo하나 집어넣으면 빈 라인 하나 만들어준다
▽cat > varUsage.sh : cat이 어떤 내용을 받아서 뿌려주는건데, > varUsage.sh 했으니 저기다 뿌릴거고 키보드다 끝낼땐 Ctrl+D이고 vi같은 편집기에 익숙하지 않을 때 보통 사용한대
콘솔에서 작업할 때 Ctrl+v가 안먹히면 Shift + Insert, shift+del은 잘라내기, Ctrl+Insert는 복사
===
특정 디렉토리(/var) 사용량 모니터링 해주는것. 실행하려면 chmod +x 해주고
실행해보면
===
예3)
ls > /tmp/날짜.txt
이거를 스크립트로 해보기 문제내고 강의 끝
'Linux' 카테고리의 다른 글
[따배리] 2.man, ls, mkdir, rmdir, cd, cp, mv, rm (0) 2022.08.29 [따배리] 1.디렉토리들 (0) 2022.08.28 [따배쉘] 4.Redirection, Pipeline (0) 2022.08.25 [따배쉘] 3.Metacharacters, Quoting, Nesting, Alias, Prompt (0) 2022.08.15 [따배쉘] 0.~2.Shell이란, 변수, 환경변수 (0) 2022.08.15