Option | 설명 |
---|---|
-i | 검색 패턴 대소문자 무시 |
-l | 매칭되는 패턴이 있는 파일 이름 출력 |
-n | 매칭되는 줄 번호 표시 |
-v | 검색 패턴을 제외하고 검색 |
-c | 검색 패턴과 매칭 되는 줄 개수 출력 |
-w | 단어 단위로 검색 |
[user@localhost ~]$ grep -E "root|bash" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
user:x:1000:1000:user:/home/user:/bin/bash
[user@localhost ~]$ egrep "root|bash" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
user:x:1000:1000:user:/home/user:/bin/bash
[user@localhost ~]$ grep root aaa
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
\^root
^root
[user@localhost ~]$ grep ^root
^C
[user@localhost ~]$ grep ^root aaa
root:x:0:0:root:/root:/bin/bash
[user@localhost ~]$ grep \^root aaa
root:x:0:0:root:/root:/bin/bash
[user@localhost ~]$ grep \\^root aaa
\^root
^root
[user@localhost ~]$ fgrep ^root aaa
\^root
^root
#############################
[user@localhost ~]$ grep -E 'n(o|e)' aaa ### 'n(o|e)+'
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
옵션
- -name : 정확하게 일치하는 파일명을 검색. 여러개 한번에 못함.
[root@localhost ~]# ls -l aaa bbb -rw-r--r--. 2 root root 7 4월 24 15:57 aaa -rw-r--r--. 2 root root 7 4월 24 15:57 bbb [root@localhost ~]# find . -type f -name "aaa|bbb" [root@localhost ~]#
- -perm : 특정 권한을 가진 파일 검색
[user@localhost ~]$ find . -type f -perm 0200 [user@localhost ~]$ find . -type f -perm -0200 | head -5 ./.bash_logout ./.bash_profile ./.bashrc ./.cache/gdm/session.log.old ./.cache/gdm/session.log [user@localhost ~]$ ### -0200 ### 처음 0 : special permission ### 두번째 2 : user ### 세번째 0 : group ### 네번째 0 : other ### - : 0200이라는 권한이 있으면 찾아주는 필터링. 다른 권한 포함(마이너스 기호가 없으면 절대 값)
- exec : 찾은 파일에 적용할 명령어 (exec + 명령어 + {} \;)
[root@localhost ~]# touch a.jpg b.jpg c.jpg [root@localhost ~]# ls -l *jpg -rw-r--r--. 1 root root 0 4월 25 11:10 a.jpg -rw-r--r--. 1 root root 0 4월 25 11:10 b.jpg -rw-r--r--. 1 root root 0 4월 25 11:10 c.jpg [root@localhost ~]# find . -type f -name aaa -exec rm -f {} \; [root@localhost ~]# ls -l aaa ls: cannot access aaa: 그런 파일이나 디렉터리가 없습니다 [root@localhost ~]#
- -newer : 해당 파일보다 나중에 생성된 파일 찾기
- -empty : 빈 파일이나 디렉토리 찾기
(참고) nouser 필터 : 계정 생성, 계정 홈디렉토리 권한 확인, 계정 삭제, 남아있는 홈 디렉토리 권한 확인(nouser 상태)[root@localhost ~]# useradd test1 [root@localhost ~]# grep test1 /etc/passwd test1:x:1001:1001::/home/test1:/bin/bash [root@localhost ~]# ls -ld /home/test1 drwx------. 3 test1 test1 78 4월 25 11:02 /home/test1 [root@localhost ~]# userdel test1 [root@localhost ~]# grep test1 /etc/passwd [root@localhost ~]# ls -ld /home/test1 drwx------. 3 1001 1001 78 4월 25 11:02 /home/test1 [root@localhost ~]# find / -type f -nouser find: ‘/proc/6712/task/6712/fdinfo/5’: 그런 파일이나 디렉터리가 없습니다 find: ‘/proc/6712/fdinfo/6’: 그런 파일이나 디렉터리가 없습니다 /var/spool/mail/test1 /home/test1/.bash_logout /home/test1/.bash_profile /home/test1/.bashrc
vim 편집기 모드
- Command 모드
- Last line 모드 (:)
- Edit 모드 (i)
- 2,3모드에서 1모드로 가려면 esc
- 2,3모드끼리는 직접 이동 불가 (1모드를 거쳐야 함)
(Last Line 모드)
1. 종료 : q (q!는 저장 안하고 종료)
2. 저장하고 종료 : wq / x
3. 저장 : w (w + 파일명 : 다른이름으로 저장)
(Command 모드)
1. 저장하고 종료 : 대문자 ZZ (shift+zz)
(Command 모드 -> Edit 모드로 진입하는 단축키 : iIaAsSoO)
단축키 | 기능 |
---|---|
i | 커서의 위치에서 바로 입력 |
I | 커서위치 라인 제일 앞으로 이동 후 입력 |
a | 커서의 위치 한칸 뒤에서 입력 |
A | 커서위치 라인 제일 뒤로 이동 후 입력 |
s | 커서 위치에서 문자를 삭제 후 입력 (ns : 커서의 위치부터 n개의 문자를 삭제) |
S | 커서위치 라인 전체 삭제 후 입력 |
o | 커서 위치의 아래 라인으로 들여쓰기 후 입력 (no : 커서의 위치부터 n개의 라인을 들여쓰기 후 입력) |
O | 커서라인 위쪽으로 들여쓰기 후 입력 |
(Last Line 모드)
단축키 | 기능 |
---|---|
방향키 or hjkl | 이동 |
^ | 라인의 시작점 |
$ | 라인의 마지막 |
H | 화면의 가장 첫번째 줄 |
L | 화면의 가장 마지막 줄 |
M | 화면의 중간 줄 |
gg | 문서의 가장 첫번째 줄 |
G | 문서의 가장 마지막 줄 |
w | 다음 단어로 이동 |
b | 이전 단어로 이동 |
(Last Line 모드에서)
set nu : 라인번호 표시
set nonu : 라인번호 제거
n(숫자입력) : 해당 라인으로 이동
(Command 모드에서)
단축키(삭제) | 기능 |
---|---|
x | 커서뒤의 문자 삭제 (nx : n개의 문자 삭제) |
X | 커서 앞쪽의 문자 삭제 (nX : n개의 문자 삭제) |
dd | 커서 줄 삭제 (ndmd : n * m dd) |
D | 커서 다음부터 줄 마지막까지 삭제 |
dw | 커서 다음 단어 삭제 |
d^ | 커서부터 라인의 맨 앞까지 삭제 |
d$ | 커서부터 라인의 맨 뒤까지 삭제 |
dH | 커서에서부터 화면 출력된 가장 위 라인까지 삭제 |
dM | 커서에서부터 화면 출력된 중간 라인까지 |
dL | 커서에서부터 화면 출력된 가장 아래 라인까지 삭제 |
dgg | 커서에서부터 문서 가장 위쪽까지 삭제 |
dG | 커서에서부터 문서 가장 아래쪽까지 삭제 |
참고
(Last Line 모드에서)
- n(숫자입력) : 해당 라인으로 이동
- 1,10d : 1~10번 라인까지 삭제
- 8,10y : 8~10번 라인까지 복사 → 원하는 위치로 이동 후 p(붙여넣기)
- 1,5c : 1~5번 라인까지 잘라내기 → esc로 탈출하면 화면에 출력 → 이동후 p
- 1,5c : 1~5번 라인까지 잘라내기 → 글자 입력 →엔터 / esc → 잘라낸 위치에 글자입력
- 1,$s/nologin/hahaha/g : 1번줄부터 마지막줄까지 nologin이라는 단어를 hahaha로 모두 변경
- 1,$s/nologin/hahaha/gc : 대화형 (y/n/a/q/l/^E/^Y) yes/no/all/quit/alone/
- 2,5 co 10 : 2~5번째 라인 내용 복사해서 10번째 라인 다음에 붙여넣기 (11번째에)
- 2,5 m 10 : 2~5번째 라인 내용 잘라내고 10번째 라인 다음에 붙여넣기 (11번째에)
파일 두개를 동시에 실행 : vim aaa bbb
(Last Line 모드)
n : 다음 파일
N : 이전 파일
(Last Line 모드)
vs : 좌우 화면 분할
sp : 상하 화면 분할
ctrl + ww : 문서간 이동 토글
u + g + o = a (user + group + other = all)
rwx (읽기 쓰기 실행)
r : read : 2^2 =4
w : write : 2^1=2
x : excute : 2^0=1
-: none : 0
퍼미션은 심볼릭과 넘버릭으로 명시할 수 있다.
심볼릭 : - - - x / - w - / - w x / r - - / r - x / r w - / r w x
넘버릭 : 0 / 1 / 2 / 3 / 4 / 5 / 6 / 7
실행의 원리를 이해하는 것이 필요. ⇒ 실행은 엑세스다.
파일의 실행은 확장자가 아닌 파일의 시작 데이터에 있는 파일 시그니처를 읽고 그것에 맞는 응용프로그램을 연결시켜 동작한다.
이 때, 파일 시그니처를 읽어들이기 위해서는 파일의 데이터에 직접 접근이 가능해야 하고, 결국 실행은 파일 데이터에 접근해서 파일 시그니처를 읽는 행위로 볼 수 있다.
실행 권한 존재 여부에 따라 파일 시그니처에 접근하거나 접근하지 못하는 것으로 나뉠 수 있다.
directory 구조의 이해
(읽기)
(쓰기)
(실행)
[root@localhost ~]# ls -l aaa
-rw-rw----. 1 root root 2259 4월 25 12:12 aaa
[root@localhost ~]# chmod ug-rw aaa
[root@localhost ~]# ls -l aaa
----------. 1 root root 2259 4월 25 12:12 aaa
[root@localhost ~]# chmod ug+rwx aaa
[root@localhost ~]# ls -l aaa
-rwxrwx---. 1 root root 2259 4월 25 12:12 aaa
[root@localhost ~]# chmod a-rwx aaa
[root@localhost ~]# ls -l aaa
----------. 1 root root 2259 4월 25 12:12 aaa
[root@localhost ~]# umask
0022
### 실제 적용되는 permission = (full permission - umask 값)
### 실제 적용되는 file permission : 644
### 실제 적용되는 directory permission : 755
연습 : etc 폴더에 umask 문구가 포함된 파일 찾기 2가지
[root@localhost ~]# grep -il umask /etc/* 2> /dev/null /etc/bashrc /etc/csh.cshrc /etc/login.defs /etc/profile [root@localhost ~]# find /etc -type f -exec grep -il umask {} \; /etc/pki/tls/certs/Makefile /etc/pki/tls/certs/make-dummy-cert /etc/pki/tls/certs/renew-dummy-cert /etc/security/namespace.init /etc/bashrc /etc/csh.cshrc /etc/profile /etc/login.defs /etc/X11/xinit/Xsession /etc/bash_completion.d/git