티스토리 뷰

- 출처

https://www.inflearn.com/course/command-line/

https://www.inflearn.com/course/%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9-%EB%A6%AC%EB%88%85%EC%8A%A4-%EA%B0%95%EC%A2%8C/

https://www.inflearn.com/course/%EC%99%BC%EC%86%90%EC%BD%94%EB%94%A9-vim-%EC%97%90%EB%94%94%ED%84%B0/


- 데몬 : 항상 실행되어 있는 프로그램

 

- 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   줄 앞에서부터 시작해서 아무 글자나 오다가 처음 만나는 탭까지를 없애버린다.

 

 

 

'프로그래밍' 카테고리의 다른 글

C - 1  (0) 2020.04.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함