shell script 짤 때 자주 쓰는 리눅스 명령어 5가지
- 1. 문자열을 찾을 수 있는 grep
- 2. 파일을 찾을 수 있는 find
- 3. 특정 문자열을 출력할 수 있는 awk
- 4. 문자열을 바꾸는 sed
- 5. 날짜와 시간 관련 date
1. Grep
grep [옵션] 패턴 파일grep 'for' ./ShellScript/for.shfor num in 1 2 3#-i:대소문자 무시grep 'for' -i ./ShellScript/for.sh#-e: 여러 개의 패턴을 사용할 경우 (or)grep -e 'for' -e'file' ./ShellScript/for.shfor num in 1 2 3 for file in $HOME/*#-f: 파일과 함께 사용 할 경우, pt.txt는 패턴이 저장되어 있음grep -f pt.txt ./ShellScript/for.sh#-w: 해당 라인만 결과를 출력 / -o: 해당 단어만 출력grep -w 'for' ./ShellScript/for.sh#-c: 검색한 패턴의 단어 갯수grep -c 'for' ./ShellScript/for.sh 5#-l: 패턴이 포함된 파일 목록 조회grep -l 'for' ./ShellScript/* ./ShellScript/arr_ex.sh ./ShellScript/for.sh#-H: 파일명을 앞 라인에 보여줌 / -h: 파일명을 보여주지 않음grep -H 'file' ./ShellScript/for.sh ./ShellScript/for.sh:for file in $HOME/* ./ShellScript/for.sh: echo $file#-n: 패턴이 포함된 라인 번호grep -n 'file' ./ShellScript/for.sh 8:for file in $HOME/* 10: echo $file#-A: 설정한 라인 수 만큼 라인 아래 출력 / -B: 설정한 라인 수 만큼 라인 위 출력 / -C: A+Bdone for file in $HOME/* do echo $file#-r: 하위 디렉토리까지 검색 / -R: 심볼릭 링크까지grep -r 'print "$hey"' ./*#표현식 패턴grep "^/[[[:alnum:]]*\]" ./ShellScript/for.sh
2. Find
find [옵션] [대상 경로] [표현식]find /etc -name chrony.conf/etc/chrony.conf#-L: 심폴링 링크까지 검색 / -perm: 파일권한 검색find -L /etc/ -perm 644 -name 'rc.*'#-group: 그룹소유권으로 검색find ./ -group root#-type: 파일타입으로 검색(d:디렉토리 / f:파일)find ./ -type d -name 'p*'#-a: and연산자 / -o: or연산자find ./ -size 65k -o -name 'r*'#-fprint: 검색결과를 파일로 저장find ./ -name 'p*' -fprint p-file.txt
3. Awk
awk [옵션] '패턴' 대상파일#그대로 내용 출력awk '{ print }' file-list.txt# 1번째 4번째 컬럼만 출력awk '{ print $1, $4 }' file-list.txt# 포맷적용awk '{ printf "%-5s %s\n", $3, $5 }' file-list.txt
4. Sed
sed [옵션] '명령어' 대상파일#file-list의 root를 centos로 바꾸어서 출력 (저장x)sed 's/root/centos/' ./file-list.txt | grep centos#-i : 바꾼 문자를 적용한 file-list.txt.bak이란 파일을 생성sed -i.bak 's/root/centos/' ./file-list.txt | grep root
5. Date
date [옵션]
#현재 시간을 기준으로 어제 날짜
date -d yesterday
#현재 시간을 기준으로 다양한 표현
date -d "+10 day"
date -d "-3 week"
date -d "5 years ago"
#date 포맷
date "+%Y-%m-%d %l:%M: %p"
2022-01-04 9:16 AM
댓글 없음:
댓글 쓰기