강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
bash 쉘을 이용한 스크립트 만들기 #6
조회 : 14,196  


bash 쉘을 이용한 스크립트 만들기 #6


0. 개요

앞서한 강좌에서 bash script를 하기위한 문법적인 부분중 피룡한 부분은 다되었다고 해도 크게 무리는 아니다
하지만 bash script의 경우 문법만가지고 할수 있는 부분은 극히 적다
여러가지 명령어들과 그에 따른 조합을 이용해서 이루어지고 이부분에 필요에 따라 분기 반복 문자열 파싱 패턴 메치등의 여러가지의 프로그램적인 요소와 실제 시스템에서 사용되는 명령어의 실행으로 이루어지기 때문이다
이번 강좌에서는 bash script를 사용하기 위해 유용한 명령어들에 대해 알아보자


1. 디버깅하기

"#!/bin/bash" 를 처음에  "#!/bin/bash -x" 로 해주면 된다 .


 -f -X '\''!*.@(pdf|PDF)'\'' acroread gpdf xpdf' ']'
+++ line='complete -f -X '\''!*.@(pdf|PDF)'\'' acroread gpdf xpdf'
+++ line='complete -f -X '\''!*.@(pdf|PDF)'\'' acroread gpdf xpdf'
+++ line=' acroread gpdf xpdf'
+++ list=("${list[@]}" $line)
+++ read line
+++ '[' 'complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf' '!=' 'complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf' ']'
+++ line='complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf'
+++ line='complete -f -X '\''!*.@(?(e)ps|?(E)PS|pdf|PDF)'\'' kpdf'
+++ line=' kpdf'
+++ list=("${list[@]}" $line)
+++ read line


위 와 같이 각 실행 부분에 대해 알려준다



2. 문자열 치환

sed  
패턴에 따른 문자열 치환
# sed -e "s/[old_patten]/[new_patten]/g" /path/to/filename

공 백 라인 삭제
# sed -e "/^$/d"  /path/to/filename


3. 전형화된 파일에서 필드 구분

ex) 파일내용   필드 구분자 : \:   row구분자 : \n
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh

# awk -F : '{print $1}' /etc/passwd
# cat /etc/passwd | awk -F : '{print $1}'
두가지다 아래와 같이 출력된다
root
daemon
bin
sys
sync
games
man
lp
mail

# cut -d :  -f 1 /etc/passwd
# cat /etc/passwd | cut -d :  -f 1
두가지 다 아래와 같이 출력된다
root
daemon
bin
sys
sync
games
man
lp
mail


4. 검색 및 탐색
파일명으로  검색할경우
find /path/to/ -type f -name [patten]

파 일사이즈로  검색할경우
find /path/to/ -type f -size +1024000

파일생성일자로 검색
find /path/to/ -type f -ctime +24

파일내용으로 검색할경우
grep [patten] /path/to/filename

특정디렉토리 아래로 모든파일을  재귀적으로 내용을 검색할때
grep [patten] /path/to/ -R


5. 파일 길이 알아보기
각 라인 마다 번호 붙이기
     공백 라인은 제외하고 번호붙이기
     nl /path/to/filename
     1         #!/bin/bash
       
     2         for i  in $( ls ) ; do
     3          echo   "$i\n"
     4         done

     공백라인 상관없이 번호붙이기
     cat -n  /path/to/filename
     1         #!/bin/bash
     2    
     3         for i  in $( ls ) ; do
     4          echo   "$i\n"
     5         done

     파일길이에 대한 자센 정보
     wc /path/to/filename
     5 12 74 /path/to/filename
     [라인수] [단어수] [문자 수] [파일]


6 .  날자 시간
현재 날짜 알아보기
# date
2010. 05. 16. (일) 18:52:31 KST

포멧을 지정할경우
# date +"%Y%m%d %H%M%S"
20100516 185341

특정 프로그램의 실생기산구하기
# time ls -al

....
real    0m0.040s
user    0m0.008s
sys    0m0.012s


7. 마무리

bash script 를 사용할때  자주 사용되는 몇가지 명령어들에 대해  알아보았다 여기서 알아번것은 기본 사용법이며  보다 디테일하게 사용하기 위해서는 man page 등을 참고하여 사용하여야 한다
다음번에는 위의 명령어들 외에 다른 명령어들에 대해 알아보도록 하겠다 .

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1743


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
이재석
본명 : 이재석
e-mail : locli앳superuser.co.kr
소속 : (주)수퍼유저코리아