일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- AWS 시험후기
- histoy옵션
- rm -f
- uptime -s
- 버프스위트
- Unable to create a new virtual machine: No permission to perform this operation.
- 버프슈트
- svn: Can't find a temporary directory: Internal error
- Default vpc
- Default 삭제
- 패키지 출력
- pam_tally -u
- i-node full
- AWS
- aws 자격증 접수 오류
- ln -Tfs
- pam_tally2.so
- pam_tally -u -r
- Default 생성
- burpsuite
- 리눅스 telnet
- CentOS-Base.repo
- 모바엑스텀 설치
- uptime -p
- uptime -V
- root로그인안됨
- 장치에 남은 공간이 없음
- HISTTIMEFORMAT
- Burp Suite
- 프리티어 비용 발생
- Yesterday
- Today
- Total
리눅스 확장 명령어(grep, find) 사용 방법 본문
grep 명령어(파일 내용을 검색)
grep 명령어는 문자열 패턴으로 하나 또는 이상의 파일들에 내용을 검색합니다. grep 명령어는 패턴에 포함된 모든 줄을 화면으로 출력하며, 파일 내용을 바꾸지는 못합니다.
grep 명령어의 사용방법
grep option(s) pattern file_name(s)
옵션 | 정의 |
-i | 대소문자 구분 없이 검색 |
-l | 검색패턴과 일치하면 파일명을 출력 |
-n | 검색패턴과 일치하면 출력 값에 줄 번호를 붙여서 출력 |
-v | 패턴과 일치하지 않는 정보 출력 |
-c | 패턴과 일치하는 라인 수 출력 |
-w | 단어단위의 패턴을 사용하여 검색 |
grep -i root /etc/group
# grep -i Root /etc/group root: x: 0: # * 대소문자 구분 없이 root를 검색합니다. |
grep -l root /etc/group
# grep -l root /etc/group /etc/group # * root가 있는지 없는지 표시합니다. |
grep -l root group passwd hosts
# cd /etc # grep -l root group passwd hosts group passwd # * root가 포함된 파일명을 검색 합니다. hosts에는 없어서 출력이 되지 않습니다. |
grep -n root /etc/group
# grep -i root /etc/group 1: root: x: 0: # * 줄번호를 붙여줍니다. |
grep -v root /etc/group
# grep -l root /etc/group bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon tty:x:5: disk:x:6: lp:x:7:daemon mem:x:8: kmem:x:9: wheel:x:10: mail:x:12:mail,postfix uucp:x:14: man:x:15: games:x:20: gopher:x:30: video:x:39: dip:x:40: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: dbus:x:81: usbmuxd:x:113: utmp:x:22: utempter:x:35: rpc:x:32: oprofile:x:16: desktop_admin_r:x:499: desktop_user_r:x:498: floppy:x:19: vcsa:x:69: rtkit:x:497: abrt:x:173: hsqldb:x:96: avahi-autoipd:x:170: cdrom:x:11: tape:x:33: dialout:x:18: saslauth:x:76: rpcuser:x:29: nfsnobody:x:65534: postdrop:x:90: postfix:x:89: wbpriv:x:88: haldaemon:x:68:haldaemon gdm:x:42: ntp:x:38: cgred:x:496: apache:x:48: radvd:x:75: pulse:x:495: pulse-access:x:494: stapusr:x:156: stapsys:x:157: stapdev:x:158: fuse:x:493: kvm:x:36:qemu qemu:x:107: sshd:x:74: tcpdump:x:72: slocate:x:21: mysql:x:500: # * root를 제외한 결과를 출력 합니다. |
grep -c root /etc/group
# grep -c root /etc/group 1 # vi 편집기 연습하기 # vi test.txt ------------------ root root root root ------------------- esc :wq # grep -c root test.txt 4 * 라인수를 보여줍니다. |
메타문자
grep 명령어는 몇몇의 정규표현 메타문자로 더 나은 검색패턴을 정의하는 것을 지원합니다.
메타문자 | 목적 | 예제 | 결과 |
^ | 줄의 시작을 지정 | '^pattern' | "pattern"이 포함된 시작 라인과 일치 |
$ | 줄의 끝을 지정 | 'pattern$' | "pattern"이 포함된 끝 라인과 일치 |
. | 문자 하나와 일치 | 'p.....n' | "p"와 "n"사이에 포함된 5문자와 일치 |
* | 항목에 0번 이상 일치 | ‘[a-z]*' | 소문자들만 일치. 나머진 아무것도 필요 x |
[ ] | 패턴에 하나 이상의 문자가 일치 | ‘[Pp]attern' | "Pattern"이나 "pattern"이 포함된 줄과 일치 |
[^] | 패턴에 문자를 제외하고 일치 | '[^a-m]attern' | a에서 m사이의 문자를 제외하고 "attern" 과 조합해서 일치 |
grep '^no' /etc/passwd
# grep '^no' /etc/passwd nobody:x:99:99:Nobody:/:/sbin/nologin # * /etc/passwd 파일에 "no"로 시작하는 문자의 줄과 일치하는 줄을 출력합니다. |
grep '^r..t' /etc/passwd
# grep '^r..t' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin # * /etc/passwd 파일에 "r"와 “t"사이에 2개의 문자를 포함하는 줄을 출력 합니다. |
grep 'adm$' /etc/group
# grep 'adm$' /etc/group sys:x:3:bin,adm # * /etc/group 파일에 "adm"으로 끝나는 줄을 출력 합니다. |
grep -l root group passwd hosts
# grep '^no' /etc/passwd nobody:x:99:99:Nobody:/:/sbin/nologin # * /etc/passwd 파일에 "no"로 시작하는 문자의 줄과 일치하는 줄을 출력합니다. |
egrep 명령어 사용
egrep 명령어는 확장된 정규표현 메타문자를 사용하여 파일의 내용을 검색합니다. 확장된 정규표현 메타문자는 grep 명령어에 정규표현 메타문자에 몇 가지 메타문자를 포함합니다.
확장 메타문자
메타문자 | 목적 | 예제 | 결과 |
+ | 하나이상의 문자와 일치 | '[a-z]+ark' | 하나 이상의 소문자와 일치 예를들어, ("airpark", "bark", "dark", "landmark")등이 올 수 있습니다. |
x | y | x 나 y 둘 중 아무거나 일치 | 'apple|orange' | "apple"나"orange" 둘 중 하나와 일치 |
( | ) | 문자 하나와 일치 | 'p.....n' | "p"와 "n"사이에 포함된 5문자와 일치 |
* | 항목에 0번 이상 일치 | ‘[a-z]*' | 소문자들만 일치. 나머진 아무것도 필요 x |
[ ] | 패턴에 하나 이상의 문자가 일치 | ‘[Pp]attern' | "Pattern"이나 "pattern"이 포함된 줄과 일치 |
[^] | 패턴에 문자를 제외하고 일치 | '[^a-m]attern' | a에서 m사이의 문자를 제외하고 "attern" 과 조합해서 일치 |
egrep 명령어의 사용방법
egrep -option(s) pattern file_name(s)
egrep 'N(e|o)+' /etc/passwd
# egrep 'N(e|o)+' /etc/passwd nobody:x:99:99:Nobody:/:/sbin/nologin # # egrep -n 'N(e|o)+' /etc/passwd 15:nobody:x:99:99:Nobody:/:/sbin/nologin # * 패턴 N("e" 또는 "o")과 하나 이상의 문자를 포함하는 모든 줄을 검색합니다. |
fgrep 명령어 사용
fgrep 명령어는 문자 그대로나 문자 그룹으로 검색합니다. fgrep 명령어는 모든 정규표현 메타문자 그대로를 읽습니다. fgrep 명령어에서 정규 표현 메타문자들은 특별한 의미를 가지지 않습니다. 예를 들면 "?" 문자는 정규표현 메타문자에서 한 문자를 의미하지 않고 그냥 "?"문자로만 인식합니다.
fgrep 명령어의 사용방법
fgrep option(s) string file_name(s)
fgrep 'root' /etc/passwd
# fgrep 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin # # fgrep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 11:operator:x:11:0:operator:/root:/sbin/nologin # * /etc/passwd 파일에서 (root) 문자를 포함하는 모든 줄을 검색 합니다. |
find 명령어(파일과 디렉터리 검색)
find 명령어를 사용하면 계층적 디렉터리의 파일이나 디렉터리 위치를 알 수 있습니다. 이 명령어는 파일이름, 크기,소유자, 수정시간, 파일 유형 등 표준 검색을 사용합니다.
find 명령어 사용 방법
find pathname(s) expression(s) action(s)
| 정의 |
pathname | 검색을 시작하는 절대경로나 상대경로로 설정 |
expression | 하나 이상의 검색 옵션을 설정 합니다. 옵션을 여러 개 지정 할 때는 "AND" 절을 넣어 줘야 하고, 이때 표현식 전부는 참이어야 합니다. |
action | 파일을 찾고 난 뒤에 설정 기본은 일치한 파일의 경로를 화면에 보여줍니다. |
find 명령의 pathname 옵션
옵션 | 정의 |
~ | home 디렉터리를 뜻 합니다. 관리자라면 /root 와 동일합니다. 사용자가 user라면 /user 와 동일합니다. |
/ | 제일 최상위 경로입니다. |
이 외에도 경로는 자기 자신이 정하면 됩니다. /etc, /usr, /bin, /dev 등등 많습니다. |
find 명령의 expression 옵션
옵션 | 정의 |
-name filename | 파일명과 일치하는 파일들을 찾습니다. “ ” 안에 메타문자들을 사용할 수 있습니다. |
-size [+|-]n | +n이라고 하면 n블록보다 더 큰 파일, -n은 작은 파일 n이라고 하면 n문자 크기인 파일을 찾을 수 있습니다. 한 블록은 512byte |
-atime [+|-]n | n일 전에 접근한 파일을 찾습니다. +n은 n일 이전에 접근한 파일이며 -n은 n일 내에 접근한 파일을 찾는 옵션입니다. n은 n일날 접근한 파일을 찾습니다. |
-mtime [+|-]n | 파일의 내용이 수정된 시각을 기준으로 합니다. -atime옵션과 유사합니다. |
-user loginID | 소유주가 loginID와 일치하는 파일들을 모두 찾습니다. |
-type | 파일이나 디렉터리 형태로 찾습니다. |
-perm | Permission 비트와 일치하는 파일들을 찾습니다. |
find 명령어의 action 옵션
옵션 | 정의 |
-exec command {} \; | command로 지정한 명령어를 실행 찾은 파일의 경로명은 {}로 표기 백슬러쉬(\)와 세미콜론(;)은 명령어의 끝을 의미 |
-ok command {} \; | 각 파일을 찾아서 실행하기 전에 확인 -exec 명령어의 대화양식 |
기본설정으로 찾은 파일을 현재경로로 화면에 표시 | |
-ls | 찾은 파일의 innode 번호, Permission, 하드링크 수, 소유자, 그룹, 크기, 수정날짜 등을 표시 |
find ~ -name passwd
find /root -name passwd
# find ~ -name passwd # find /root -name passwd * 아무것도 나오지 않습니다. passwd는 home디렉터리 밑에 없습니다. |
find / -name passwd
# find / -name passwd /usr/bin/passwd /etc/passwd /etc/pam.d/passwd /selinux/class/passwd /selinux/class/passwd/perms/passwd # * 최상위 경로에서 시작했기 때문에 전체가 나온다고 봐도 됩니다. |
find / -name passwd -ls
# find / -name passwd 1188078 32 -rwsr-xr-x 1 root root 30768 2월 22 2012 /usr/bin/passwd 787385 4 -rw-r--r-- 1 root root 1796 11월 16 04:50 /etc/passwd 785257 4 -rw-r--r-- 1 root root 146 2월 22 2012 /etc/pam.d/passwd ..... # * innode 번호, Permission, 하드링크 수, 소유자, 그룹, 크기, 수정날짜 경로 등을 표시 합니다. |
find ~ -size +10
# find ~ -size +10 /root/.cache/event-sound-cache.tdb.bdfbd8c7dc133f88d4bdf47b00000022.x86_64-redhat-linux-gnu /root/.cache/ibus/bus/registry.xml /root/.gstreamer-0.10/registry.x86_64.bin /root/.gconfd/saved_state /root/.pulse/bdfbd8c7dc133f88d4bdf47b00000022-device-volumes.tdb /root/.pulse/bdfbd8c7dc133f88d4bdf47b00000022-stream-volumes.tdb /root/install.log.syslog /root/install.log /root/.gnupg/gpg.conf # * 10 블록(512-byte 블록)보다 큰 파일을 사용자의 홈 디렉터리에서 찾습니다. |
find /var –mtime +2
# find /var –mtime +2 .... 엄청많이 나와영~! # * 2일전에 수정 되지 않은 파일들을 찾습니다. |
find /root/다운로드 -type f
find /root/다운로드 -type d
# find ~ -size +10 # find /root/다운로드 -type f # find /root/다운로드 -type d /root/다운로드 # * file과 directory를 찾습니다. |
'리눅스 > Linux 공부내용' 카테고리의 다른 글
리눅스 프로세스(ps) 사용방법 (0) | 2016.12.27 |
---|---|
리눅스 퍼미션(Permission)사용 방법 (4) | 2016.12.22 |
리눅스 메뉴얼 보기(man) 특수값 설정 (0) | 2016.12.15 |
리눅스 vi 편집기 (0) | 2016.12.13 |
리눅스 디렉터리 / 파일 삭제(rmdir, rm) (0) | 2016.12.07 |