티스토리 뷰
- 출처
https://www.inflearn.com/course/command-line/
- 데몬 : 항상 실행되어 있는 프로그램
- R 읽기, W 쓰기, X 실행
- 리눅스 명령어
0. !! 이전에 실행한 명령어 실행
1. sudo useradd -m user : 사용자 추가, -m 은 홈디렉토리도 만든다는 것
2. sudo passwd user : 사용자의 비밀번호 설정
3. su user : 사용자 변경
4. cat /etc/shells : 변경가능한 쉘 확인
5. chsh : 쉘 변경
6. sudo mkdir 디렉토리명 : 디렉토리 생성
7. head 문서의 앞부분을 출력
head /etc/passwd 문서의 앞부분 10줄 출력
cat /etc/passwd | head -n 10 문서를 출력하는데 10줄만 출력
cat /etc/passwd | head -n -10 문서를 출력하는데 끝에 10줄을 빼고 출력
8. tail 문서의 뒷부분을 출력
tail /etc/passwd 문서의 뒷부분 10줄 출력
tail /etc/passwd -n 3 문서의 둣부분 3줄 출력
tail /etc/passwd -n +2 2행부터 끝까지 출력
tail 파일명 -f 파일의 내용 뒷부분 10줄을 출력하고 추가되는 내용을 기다림
tail 파일명 -F -f와 같은 역할이지만, vi로 수정하거나 삭제되었다가 다시 만들어져도 팔로잉 함
9. wc 카운트 출력
wc /etc/passwd 라인수, 단어수, 바이트 출력
wc -l /etc/passwd 라인 수를 출력
wc -l /etc/passwd | cut -d ' ' -f 1 라인수만 출력
10. nl 파일 내용을 라인넘버와 함께 출력
nl /etc/passwd
cat /etc/passwd | nl
nl -ba /etc/passwd 공백에도 라인넘버를 메겨서 출력
11. sort 정렬하여 출력
cat /etc/passwd | sort 가장 앞부분 글자 기준으로 오름차순 정렬
cat /etc/passwd | sort -t: -k 3 : 을 기준 3번째 열의 첫째 글자 기준(문자로 인식)으로 정렬
cat /etc/passwd | sort -t: -k 3 -n 위와 같지만 숫자로 인식함
cat /etc/passwd | sort -t: -k 3 -n --debug 뭐를 기준으로 줄을 쳐주어 보여줌
cat /etc/passwd | sort -t: -k 5,5 --debug 5번째 열만으로 비교하여 정렬
cat /etc/passwd | sort -t: -k 3,3 -k 4,4 --debug 첫번째 기준이 같으면 두번째 기준으로 비교하여 정렬
ls -al | sort -k 5 용량을 기준으로 정렬
12. uniq 중복된 내용 제거하고 출력
uniq 파일명 | nl 연속하는 중복된 내용만을 제거
sort 파일명 | uniq | nl 정렬하고 uniq를 하기때문에 중복된 내용 모두 제거하고 출력
sort -f 파일명 | uniq -i | nl 대소문자 무시
sort 파일명 | uniq -d | nl 중복된 것만 출력
sort 파일명 | uniq -u | nl 중복되지 않은 것만 출력
grep "문자" *.확장자 | awk -F: '{print $1}' | uniq *.확장자인 파일에서 "문자"를 포함하는 파일을 찾은 다음 중복 제거한 후에 파일명만을 출력
13. cut 컬럼 잘라내기
wc /etc/passwd -l | cut -d ' ' -f 1 공백을 기준으로 하려 잘라서 출력, 라인수만 나옴
head /etc/passwd | cut -d: -f 1 : 기준 첫번째 컬럼을 기준으로 10줄 출력
head /etc/passwd | cut -d: -f 1,6 1, 6번째 컬럼을 출력
head /etc/passwd | cut -d: -f 1,6 --output-delimiter=">" 1, 6 번째 컬럼을 출력하는데 delimiter를 > 로 변경
ls -al | head | cut -b -10 10바이트까지만 잘라서 출력
ls -al | head | cut -b 10- 11바이트부터 출력
14. tr 어떤 내용을 변환한다
head /etc/passwd | tr -d '/' /를 모두 지우고 출력
head /etc/passwd | tr ':' '#' : 를 #로 바꿔서 출력
head /etc/passwd | tr [:lower:] [:upper:] 소문자를 대문자로 바꿔서 출력
15. sed stream editor
head /etc/passwd | sed -n '2,5p' 2~5번째 줄만 출력
head /etc/passwd | sed '2,5d' 2~5번째 줄을 삭제하고 출력
head /etc/passwd | sed -n '/sy/p' sy가 들어간 글자를 검색하여 출력
head /etc/passwd | sed '/sy/d' sy가 들어간 글자를 검색하고 삭제하여 출력
head /etc/passwd | sed 's/:/#/' :를 #로 바꿔서 출력, 단 행마다 첫번째 것만 바꿈
head /etc/passwd | sed 's/:/#/g' 위와 달리 전부다 바꿈
head /etc/passwd | sed -n '/games/,10p' 검색된 games부터 10번째 줄까지 출력
head /etc/passwd | sed -n '/daemon/,+2p' 검색된 daemon부터 2줄더 출력
16. awk 텍스트 처리 script language
wc /etc/passwd | awk '{ print $1 }' 공백기준으로 첫번째 출력
head /etc/passwd | awk -F: '{ print $1 }' : 기준 첫번째 출력
head /etc/passwd | awk -F: '/sy/ { print NR, $1 }' sy를 검색하고 몇번째 줄인지(NR)도 출력함
head /etc/passwd | awk -F: '/sy/ { print NR, $1, NF }' 필드가 몇개인지도 포함하여 출력
17. find 조건에 맞는 파일을 찾아 명령을 수행한다
find . 현재디렉토리에 있는 모든 파일 출력
find . | grep 파일명 파일명이 포함된 파일을 모두 찾아서 출력
find . -name "*.c" 현재 경로에서 *.c 인 파일을 출력
find `pwd` -name "*.c" 위와 같은데 절대경로까지 출력해 줌
find `pwd` -regextype egrep -regex '.*hash.*.c'
find . -empty 빈 파일과 빈 디렉토리 출력
find . -type f 일반 파일 출력
find . -type d 디렉토리 출력
find . -perm 0777 권한이 777인 것을 찾음
find . -name "*.c" -exec 명령어 {} \; *.c를 찾아서 각각 명령어를 실행한다
find . -name "*.c" -execdir 명령어 {} \; 위와 같은데 각각 해당디렉토리로 이동하여 실행한다
find . -name "*.c" -ok 명령어 {} \; exec와 같은데 실행여부를 물어본다
18. grep 파일 내용 중에 원하는 내용을 찾는다
grep 글자 *.c *.c 에서 글자가 포함된 파일을 출력
grep 글자 *.c | awk -F: '{print $1}' | sort -u 찾은 다음 첫번째 열만 출력하는데 중복된거 제거하고 출력
grep 글자 *.c -q 글자가 포함된 것을 찾기만하고 출력은 하지 않음
echo $? 환경변수에 리턴된 값을 출력 함 0이면 찾았다 1이면 못찾았다
grep "\<단어\>" *.c 단어가 포함된 것만 찾아서 출력
grep "^글자" *.c 입력한 글자로 시작하는 것만 출력
grep "글자$" *.c 입력한 글자로 끝나는 것만 출력
19. apropos man page 이름과 설명을 검색한다
apropos pthread -s 7 pthread 7번 섹션 설명 검색
20. locate 파일의 위치를 찾아 보여준다. 단, updatedb가 저장해 놓은 DB 파일 내에서 검색하므로 누락이 있을 수 있다. $ sudo apt-get install mlocate 설치해야 함
locate main.c main.c 들어가는 파일 출력
locate --regex "/main.c$" main.c로 끝나는 파일 출력
21. which 실행 파일의 위치를 보여준다.
which ls ls가 있는곳 위치 출력
. ctrl + a 쉘행 맨처음
ctrl + e 쉘행 맨끝
. cd ./ 현재 디렉토리
cd ../ 상위 디렉토리
cd / 최상위 디렉토리
cd 홈 디렉토리
. du -h 현재 디렉토리의 용량
. tar cf aaa * 현재 디렉토리의 모든 파일을 하나로 모음
. echo $? 직전 실행한 명령어의 리턴값 확인
. cat /proc/cpuinfo cpu 정보를 얻을 수 있다
. sudo apt-get install manpages-posix manpages-posix-dev man page 추가?
. kill -9 pid 프로세스 강제 종료
. ps -al 모든 프로세스 조회
. ifconfig 네트워크 조회
. reboot 리부팅
. printenv 환경설정 보여줌
. file aaa 파일의 정보 조회
. $PATH 환경변수 path 확인
. ln -s aaa bbb aaa의 소프트 링크인 bbb를 만듬
. $ dmesg 커널 메시지 출력
. $ lsmod 작동중인 모듈 출력
. $ cat /proc/meminfo 메모리 사용량 조회
- vim 명령어
0. $vimtutor
1. :wq 저장하고 종료
2. h 왼쪽, j 아래, k 위, l 오른쪽
3. 3h 왼쪽으로 3칸 이동
4. w 단어 단위로 이동
5. b 단어 단위로 역으로 이동
6. W 공백단위로 이동
7. B 공백단위로 역으로 이동
8. 0 행의 맨 앞으로 이동
8-1. ^ 행의 첫번째 글짜로 이동
9. $ 행의 맨 끝으로 이동
10. f 글자 행에서 글자를 찾아줌
10. F 글자 행에서 글자를 역으로 찾아줌
11. ; 찾은 글자를 더 찾음
12. , 찾은 글자를 역으로 더 찾음
13. t 글자 행에서 찾은 글자의 앞으로 감
14. T 글자 행에서 역으로 찾은 글자의 앞으로 감
15. /글자 문서내에서 글자를 찾아줌
15-1. n 다음 글자를 찾음
15-2. N 역으로 글자를 찾음
16. * 해당글자를 찾아 줌
16-1. # 해당글자를 역으로 찾아 줌
17. ctrl + e 한줄씩 아래로 스크롤
17-1. ctrl + y 한줄씩 위로 스크롤
17-2. ctrl + u 반페이지씩 위로 스크롤
17-3. ctrl + d 반페이지씩 아래로 스크롤
18. gg 문서의 첫행으로 이동
18-1. G 문서의 끝행으로 이동
19. a 뒤에 끼워넣기
A 행의 맨끝으로 이동하여 끼워넣기
19-1. i 앞에 끼워넣기
I 행의 맨 앞으로 이동하여 끼워넣기
19-2. o 밑으로 한줄 추가
19-3. r 한글자 교체
19-4. c 선택된 글자 삭제하고 끼워넣기
19-5 O 위로 한줄 추가
20. x 한단어씩 지움
20-1. dd 한 행을 모두 지움, 잘라내기
20-2. D 현재 위치부터 끝까지 지움
20-3. J 밑에 줄을 위의 줄끝으로 올림
20-4. p 아래 줄에 붙여넣기
20-5. P 윗줄에 붙여넣기
20-6. yy 한줄 복사하기
20-7. Y 한줄 복사하기
21. u 실행취소
21-1. ctrl + r 다시실행
21-2. . 이전 명령어 실행
22. v 비쥬얼 모드
22-1. V 비쥬얼 모드(행단위)
22-2. ctrl + v 비쥬얼 블럭(열단위)
22-3. gg -> V -> G 전체선택
23. viw 단어선택
23-1. vi( 소괄호 안에 있는 단어 선택
23-2. vi' 작은따옴표 안에 있는 단어 선택
23-3. vi" 큰따옴표 안에 있는 단어 선택
23-4. yiw 단어복사
23-5. ciw 단어삭제
24. :set hls 하이라이트 On
24-1. :noh 하이라이트 Off
25. :%s/aaa/bbb/c aaa를 bbb로 바꾸는데 하나씩 확인
25-1. :%s/aaa/bbb/g aaa를 bbb로 일괄 변경
25-2. :%s/aaa/bbb/gic aaa를 bbb로 물어보면서 변경하는데 대소문자 구별 안함
26. :vs 창을 수직으로 분할
26-1. :sp 창을 수평으로 분할
26-2. ctrl + w, 방향키 분할 창 이동
26-3. :enew 새파일 만들기
27. :E 탐색기를 열어서 파일 선택하여 열수 있다
27-1. qq 녹화 / q로 종료
27-2. @q 녹화한거 실행
28. K 함수에 대한 manual
. > 들여쓰기
< 내어쓰기
:%s/ \+/\t \+ 앞에 공백이 1칸 있는 것인데, 이 명령어는 1개 이상의 연속된 공백을 1개의 tab 으로 바꾼다.
:%s/ = /\t/g ' = ' 로 되어 있는 것을 tab 으로 바꾼다.
:%s/^/>/g 모든 줄의 가장 앞칸에 > 를 추가한다.
:%s/^ \+//g 줄 가장 앞에 있는 공백을 제거한다. trimleft와 같은 기능.
:%s/\.group\.config//g 어디에서 나타나든 모든 .group.config 라는 글자를 제거한다.
:%s/\d\+//g 숫자가 1개 이상 연속되는 것을 없애버린다.
:%s/Cluster\(\d\+\):/Cluster\1\t/g Cluster11: 과 같이 가장 끝에 : 가 있는 것을 없애고 Cluster11<tab>으로 만들어 준다. 이 경우, 단순히 : 만을 없앨 수 없는 것이 다른 부분에도 : 이 있을 수 있기 때문이다. 따라서 Cluster 라는 문자열이 나오고 그 뒤에 숫자가 1개 이상 연속된 이후 나오는 : 만을 치환하기 위해 이렇게 했다.
:%s/\t/\n/g tab을 줄바꿈으로 바꾼다. 이렇게 하면 a b c 이렇게 된 것이
a
b
c
로 바뀐다.
:%s/\d\+_//g 숫자가 연이어 나오고 바로 뒤에 _ 이 있는 것을 없앴다. 가령 Cluster933_ABC는 ClusterABC로 바뀌겠지.
:%s/^.\+\t//g 줄 앞에서부터 시작해서 아무 글자나 오다가 처음 만나는 탭까지를 없애버린다.