shell script
shell공간에 한줄한줄 절차적으로 동작하는 프로그램을 짜는 것
Vim 환경설정
shell script를 이용하기 전에 vim 환경설정을 만들어줄 필요성이 있다.
협업을 할 때, 각자가 적은 소스코드의 환경설정이 틀리면 다른 사람이 받아봤을 때 깨질 수 있기 때문이다.
~/.vimrc
set smartindent set tabstop=4 set expandtab set shiftwidth=4
~는 자신의 home 디렉토리 위치를 의미
위의 코드는 스페이스 4개 만큼 자동적으로 tab이 되도록 해주는 설정이다.
shell에는 최상위의 shell은 sh, 리눅스의 최상위면서 sh보다는 한단계 낮은 bash가 있다.
기본적인 문법
$ vi s1.sh
#!/bin/bash
echo "My name is Jongin"
printf "My name is %s\n" Jongin
str="Hello "
echo "${str}Wrold"
#!/bin/bash : bash쉘로 작성하겠다.
echo : 출력
printf : 포멧 출력
${ } : 변수임을 알려주는 기호 ( 없어도 되지만, 다른 문자열과 구별하기 위해서 사용한다.)
결과
$ bash s1.sh
bash 쉘로 작성했기 때문에 bash (파일명)을 통해서 해당 파일을 실행할 수 있다.
vi 에디터 안에서 실행하는 법
shell 화면으로 나가지 않고, vi에디터에서 ":!" 명령어를 이용하면 해당 명령어의 실행값을 shell창에서 확인할 수 있고, enter를 입력하면 다시 vi 창으로 돌아올 수 있다.
주의할점
쉘 스크립트에서는 공백 사용에 주의해야한다!
변수와 "=" 사이에 스페이스를 입력하면 안되고, 변수를 초기화 할 때에도 공백을 넣으면 공백으로 인식되기 때문에 제대로 된 값이 안나오게 되기 때문이다.
Loop
$ for i in {1..5}; do echo $i; done
프로그래밍을 해본사람은 문법은 달라도 위의 명령어를 보면 어떤 코드인지 이해할 수 있을 것이다.
for문을 이용해서 loop를 실행
{1..5} 는 {1,2,3,4,5} 행렬이랑 같은 구조이다.
{1,2,3,4,5} 의 행렬에서 loop를 돌때마다 index순서대로 하나씩 꺼내와서 i 에 넣어주는 것
그렇게 loop정의가 끝나면 ";"으로 구분해서 do부분에 loop가 돌 때마다 실제로 실행할 코드부분을 입력한다. loop가 돌 때마다. echo (출력)을 통해서 변수 i($i)를 출력한다는 의미
그리고 done으로 loop문의 종료를 알린다.
Loop 심화
현재 디렉토리에 있는 파일중에서 .txt의 확장자를 가지고 있는 파일의 이름과 내용을 출력하는 쉘 스크립트
ls 명령어는 파일 목록을 보여준다
ls *.txt 정규화를 이용하면 *는 모든 것을 의미하기 때문에 *.txt는 확장자가 txt인 모든 이름의 파일을 의미
위의 개념을 이용하면
#!/bin/bash
for i in `ls *.txt`
do
echo "--------------------------"
echo $i
cat $i
echo "=========================="
done
` ` : `` 안에 있는 명령어를 실행해라
ls *.txt의 결과물 ( a.txt, b.txt, ps.txt)를 loop를 통해서 하나하나 i에 넣고 그 값을 이용해서
파일의 이름과 내용을 출력하는 코드다.
별칭 활용하기
파일에 실행권한 ('x')가 있을 때, "./s1.sh"로 바로 실행을 할 수 있다.
이렇게 전부 입력하는 시간을 단축하기 위해서 별칭으로 만들고 사용하는 방법이다
$ alias s1='~/s1.sh'
s1만 입력하더라도 s1.sh파일이 실행되도록 해주는 것이다.
이러한 명령은 linux를 종료하게 되면, 초기화 되기 때문에 계속 사용하고 싶다면??
.bashrc 파일이나 .profile파일에 명령어를 추가하면, 로그인했을 때 자동으로 실행되기 때문에 항상 사용할 수 있게 된다.
.bashrc
파일 맨아래에 추가!
s1만 입력해도 실행되는 것을 볼 수 있다.
참고문헌
'IT 공부 > Linux' 카테고리의 다른 글
[ Linux ] Shell script (3) (0) | 2021.06.03 |
---|---|
[ Linux ] shell script (2) (0) | 2021.06.02 |
[ Linux ] 쉘 스크립트 이용해서 자동으로 명령 실행 (0) | 2021.05.31 |
[ Linux ] putty 와 telnet 설치 (0) | 2021.05.30 |
ubuntu에서 vim 에디터 사용하기 (0) | 2021.05.27 |