자주 쓰는 linux shell script 및 명령어
Published by Nineye under development on February 19, 2009요즘 들어 linux서버쪽에서 개발을 많이 하고, windows에서도 cygwin을 이용한 개발을 많이 하다보니, shell script에 대한 이해가 부족해서 자주 헤매고 많은 삽질을 한다…
그래서 이제는 삽질이 아니라 삽즐~~~을 위해 자주 쓰는 script및 명령어를 정리 한다.
- 명령어를 특정 파일들에 일괄적으로 적용시키기
nineye]find ./ -name “*.h” -exec 명령어 {} \;
==> 현재 디렉토리로부터 하위 디렉토리까지 확장자가 “h”인 모든 파일들에 대해 명령어를 실행시킨다. -name(다음의 문자열에 해당하는 파일명을 가지는 파일 선택) -exec(다음의 명령어를 실행) {}(find의 결과로 선택된 모든 파일들을 의미) \;(;문자가 script에서 명령줄의 종료를 의미함)
nineye]find ./ -name “*.h” -exec 명령어 {} \; -o -name “*.cpp” -exec 명령어 {} \;
==> -o 옵션은 or의 의미로, 뒷 문장도 동일하게 실행..
ex) nineye]find ./ -name “*.h” -exec unix2dos {} \;
==> 현재 디렉토리로부터 하위 디렉토리까지 확장자가 “h”인 모든 파일들에 대해 내부 텍스트를 unix(LF) 포맷에서 dos(CRLF) 포맷으로 바꾼다.
ex) nineye]find ./ -name “*” -exec grep ‘abc’ {} \; == grep -r abc *
==> 현재 디렉토리로부터 하위 디렉토리까지 모든 파일에 대해 abc의 문자열 검색
ex) nineye]find / -name “*.eml” -exec rm -f {} \;
==> 현재 디렉토리로부터 하위 디렉토리까지 확장자가 eml인 모든 파일을 삭제
- 원하지 않는 사용자 죽이기~
root]skill -KILL hahaha
==> hahaha라는 사용자를 완전히 추방시킨다.
- 특정 터미널에 접속한 사용자 죽이기~
root]skill -KILL -v pts/14
==> pts/14에 연결된 사용자를 추방시킨다.
- 파일 안의 특정 문자열을 다른 문자열로 대체
nineye]sed ’s/$’”/`echo \\\r`/” input.txt > output.txt
==> stream editor인 sed명령을 이용해서 문자열 검색 명령어인 s명령어를 이용하여 $(줄의 끝)을 echo \\\r(\r) 로 대체. 그러면 unix 포맷인 “LF”가 dos 포맷인 “CRLF”로 바뀌어 결국 unix2dos의 역할을 한다. 단, 주의해야 할 점은 input.txt와 output.txt파일이 같은 파일이면 output.txt는 빈 파일이 되어 버린다는 것. 같은 파일에 적용해서 원본을 날렸다는… ㅠ,.ㅜ 파이프가 아니라 redirection이기 때문에 앞에서 이미 연 파일에 대한 영향인 것 같음.
- 현재 위치 이하의 모든 디렉토리의 권한을 755로 변경
find -type d -print0 |xargs -0 chmod 755
- 현재 위치 이하의 모든 파일의 권한을 644로 변경
find -type f -print0 |xargs -0 chmod 644