2022년 1월 4일 화요일

[ Shell script ] 쉘 스크립트 짤 때 많이 쓰는 명령어 5가지

 

shell script 짤 때 자주 쓰는 리눅스 명령어 5가지

  • 1. 문자열을 찾을 수 있는 grep
  • 2. 파일을 찾을 수 있는 find
  • 3. 특정 문자열을 출력할 수 있는 awk
  • 4. 문자열을 바꾸는 sed
  • 5. 날짜와 시간 관련 date

1. Grep
grep [옵션] 패턴 파일

grep 'for' ./ShellScript/for.sh
    for num in 1 2 3

#-i:대소문자 무시
grep 'for' -i ./ShellScript/for.sh

#-e: 여러 개의 패턴을 사용할 경우 (or)
grep -e 'for' -e'file' ./ShellScript/for.sh
    for 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+B
done 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




댓글 없음:

댓글 쓰기