해당 게시글은 진단 스크립트 작성 시 필요한 최소한의 명령어, 옵션들만 설명하였습니다.
가. 문자열 검색
1. grep
문자열 또는 파일에서 자기가 찾고 싶은 문자가 포함된 줄을 찾아 출력해줌.
예시 1). grep "tistory hagsig" /blog/test.txt
예시 2). cat /blog/test.txt | grep -i "hagsig"
예시 3). cat /blog/test.txt | grep -i -v "hagsig"
예시 4). cat /blog/test.txt | grep -A "tistory"
[root@hagsig /]# cat /blog/test.txt
tistory
TISTORY
tistory hagsig
TISTORY HAGSIG
[root@hagsig /]# grep "tistory hagsig" /blog/test.txt
tistory hagsig
[root@hagsig /]# cat /blog/test.txt | grep -i "hagsig"
tistory hagsig
TISTORY HAGSIG
[root@hagsig /]# cat /blog/test.txt | grep -i -v hagsig
tistory
TISTORY
[root@hagsig /]# cat /blog/test.txt | grep -B 1 "hagsig"
TISTORY
tistory hagsig
2. egrep
grep 명령어의 업그레이드 버전으로 어러개의 문자를 한번에 찾을 수 있음.
예시 1). egrep "tistory|hagsig" /blog/test.txt
예시 2). cat /blog/test.txt | egrep -i "hagsig|hagsig"
[root@hagsig /]# cat /blog/test.txt
tistory
TISTORY
hagsig 0914
HAGSIG 0914
[root@hagsig /]# egrep "tistory|hagsig" /blog/test.txt
tistory
hagsig 0914
[root@hagsig /]# cat /blog/test.txt | egrep -i "tistory|hagsig"
tistory
TISTORY
hagsig 0914
HAGSIG 0914
grep, egrep 옵션 | |
옵션 | 설명 |
-i | 문자 검색시 대소문자를 구분하지 않음 |
-v | 입력한 문자가 속해있는 줄을 제외하고 출력 |
-A | 입력한 문자가 속해있는 줄의 아래 줄을 출력 |
-B | 입력한 문자가 속해있는 줄의 위에 줄을 출력 |
-C | 입력한 문자가 속해있는 줄의 위아래 줄을 출력 |
나. 변수 지정
명령어 결과 값 또는 문자 등을 변수에 저장하였다가 원하는 곳에서 불러들일 수 있음.
※ 변수명 지정 시 숫자가 맨 앞에 있으면 안된다.
예시 1). hagsig=`cat /etc/passwd | head -1`
예시 2). tistory_0914="hagsig"
예시 3). _count=$((_count+1))
[root@hagsig /]# vi test.sh
hagsig=`cat /etc/passwd|head -1`
tistory_0914="tistory|blog|hagsig"
item_count=0
echo "$hagsig"
echo ""
echo "$tistory_0914"
echo ""
_count=$((_count+1))
echo "$_count"
[root@hagsig /]# sh +x test.sh
root:x:0:0:root:/root:/bin/bash
tistory|blog|hagsig
1
다. 문자열 편집
1. awk
문자열 또는 파일에서 필드를 나누어 자기가 원하는 형식으로 값이 출력되도록 할 수 있음.
예시 1). uname -a | awk '{print $1}'
예시 2). awk -F":" '{print $1}' /test.txt
예시 3). cat /test.txt | awk -F":" '$1=="root"'
예시 4). cat /test.txt | awk -F":" '$1=="root" {print $1 " is uses " $7}'
[root@hagsig /]# uname -a
Linux hagsig 2.6.32-504.el6.i686 #1 SMP Wed Oct 15 03:02:07 UTC 2014 i686 i686 i386 GNU/Linux
[root@hagsig /]# uname -a | awk '{print $1}'
Linux
[root@hagsig /]# uname -a | awk '{print $2}'
hagsig
[root@hagsig /]# cat /test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@hagsig /]# awk -F":" '{print $1}' /test.txt
root
bin
[root@hagsig /]# awk -F":" '{print $2}' /test.txt
x
x
[root@hagsig /]# cat /test.txt | awk -F":" '$1=="root"'
root:x:0:0:root:/root:/bin/bash
[root@hagsig /]# cat /test.txt | awk -F":" '$1=="root" {print $1 " is uses " $7}'
root is uses /bin/bash
awk 옵션 | |
옵션 | 설명 |
-F | 필드 구분 문자 지정 |
2. sed
원하는 값만 출력되도록 하거나 특정 문자를 자기가 원하는 값으로 바꾸어 출력할 수 있음.
예시 1). sed 's/*/#/g' file
예시 2). cat file | sed -i 's/*/#/g'
[root@hagsig /]# cat /blog/test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@hagsig /]# sed 's/x/#/g' /blog/test.txt
root:#:0:0:root:/root:/bin/bash
bin:#:1:1:bin:/bin:/sbin/nologin
[root@hagsig /]# cat /blog/test.txt | sed 's/x/#/g'
root:#:0:0:root:/root:/bin/bash
bin:#:1:1:bin:/bin:/sbin/nologin
sed 옵션 | |
옵션 | 설명 |
s | 문자 치환 |
g | 문자 치환 범위를 줄 전체로 변경 |
라. 파일 재지향
1. >
명령어의 결과, 메시지 등을 파일로 저장할고 싶을 때 사용. 같은 파일명이 있다면 덮어쓰기 함.
예시 1). echo "tistory hagsig" > /blog/test.txt
예시 2). ifconfig > /blog/test.txt
[root@hagsig /]# cat /blog/test.txt
test file
[root@hagsig /]# echo "tistory hagsig" > /blog/test.txt
[root@hagsig /]# cat /blog/test.txt
tistory hagsig
2. >>
> 와 같은 기능을 제공하지만 같은 파일명이 있을때 덮어쓰는게 아닌 붙여쓴다는 차이점이 있다.
예시 1). echo "tistory hagsig" >> /blog/test.txt
예시 2). ifconfig >> /blog/test.txt
[root@hagsig /]# cat /blog/test.txt
test file
[root@hagsig /]# echo "tistory hagsig" >> /blog/test.txt
[root@hagsig /]# cat /blog/test.txt
test file
tistory hagsig
'인프라 취약점 진단 · 모의해킹 > 리눅스 서버 진단 · 모의해킹' 카테고리의 다른 글
리눅스 진단 스크립트 - 0.1 쉘 스크립트 작성 방법(초급) (0) | 2021.01.09 |
---|