본문 바로가기
Back-end/Script

[Shell] 자주사용하는 명령어 정리

by 허도치 2020. 2. 10.
1. grep
1-1. grep이란?

- 기본 출력이나 파일에서 지정한 패턴과 일치하는 라인을 탐색하는 명령어.
- 패턴은 정규표현식을 사용.

 

1-2. 사용법

$ grep [OPTIONS...] PATTERN [FILE...]
$ [출력] | grep [옵션...] PATTERN [파일...]

 

1-3. 옵션

-E, --extended-regexp
: 확장 정규 표현식 사용.

-F, --fixed-strings
: 일반 문자열로 사용.

-G, --basic-regexp
: 기본 정규 표현식으로 사용, 기본값.

-P, --perl-regexp
: Perl 정규 표현식으로 사용.

-e, --regexp=PATTERN
: 탐색에 사용할 정규표현식 입력.

-f, --file=FILE
: 파일에서 PATTERN을 읽어서 사용.

-i, --ignore-case
: 대/소문자 무시.

-w, --word-regexp
: 단어 단위로 매칭.

-x, --line-regexp
: 라인 단위로 매칭.

-z, --null-data
: 라인을 newline(\n)이 아닌 NULL(\0)로 구분.

-v, --invert-match
: 매칭되지않는 라인 탐색.

 

1-4. 간단 사용예제

#프로세스 목록에서 'java'만 출력하기.
$ ps -ef | grep -i "java" | grep
-v "grep"

#현재 목록에서 'error'가 포함된 파일의 정보 출력.
$ ls -al | grep -i "error"

#파일에서 'Exception' 탐색하기.
$ grep -i "Exception" dochi.txt

 

 

2. watch
2-1. watch란?

- 지정한 명령어를 일정 주기로 반복하여 실행하는 명령어.
- 주로 프로세스를 모니터링 할 때 사용됨.

 

2-2. 사용법

$ watch [OPTIONS...] 명령어

 

2-3. 옵션

-n, --interval=seconds
: 지정한 초를 주기로 실행.


-t, --no-title
: 헤더를 출력하지 않음.


-d, --differences
: 이전 결과에서 변경된 부분을 표시.

 

2-4. 간단 사용예제

# 현재시간 출력하기
$ watch --interval=1 date"+%Y-%m-%d %H:%M:%S"

# 매 1초마다 'java' 프로세스 확인.
$ watch -d --interval=1 'ps -ef | grep -i "java" | grep -v grep'

 

 

3. wc
3-1. wc란?

- 파일의 라인, 단어, Byte의 수를 출력하는 명령어.

 

3-2. 사용법

$ wc [OPTIONS...] [FILE]
$ [출력] | wc [OPTIONS...]

 

3-3. 옵션

-c, --bytes
: 파일 또는 출력의 바이트 수.

-m, --chars
: 파일 또는 출력의 문자 수.


-l, --lines
: 파일 또는 출력의 라인 수.

-w, --words
: 파일 또는 출력의 단어 수.


-L, --max-line-length
: 파일 또는 출력에서 가장 긴 라인의 길이.

 

3-4. 간단 사용예제

#데이터 파일의 라인수.
$ wc -l dochi_contents.dat
$ cat dochi_contents.dat | wc -l

#데이터 파일의 용량.
$ wc -c dochi_contents.dat
$ cat dochi_contents.dat | wc -c

 

 

4. head
4-1. head란?

- 파일의 처음 라인에서 밑으로 10개의 라인을 출력.
- 주로 데이터 파일을 확인할 때 사용.

 

4-2. 사용법

$ haed [OPTIONS...] [FILES...]

 

4-3. 옵션

-c#[K], --bytes=#[K]
: 입력한 바이트의 수(#)만큼 출력, K=1000단위.

-[n]#[K], --lines=#[K]
: 입력한 라인 수(#)만큼 출력, n은 생략가능, K=1000단위.

-q, --quiet, --silent
: 파일명을 표시하지 않음.

-v, --verbose
: 파일명을 표시.

 

4-4. 간단 사용예제

#데이터 파일을 100라인 출력.
$ head -100 dochi_contatns.dat
$ head -n100 dochi_contatns.dat
$ head --lines=100 dochi_contatns.dat

#데이터 파일을 100라인을 파일명과 함께 출력.
$ head -100v dochi_contatns.dat
$ head -vn100 dochi_contatns.dat
$ head --lines=100 --verbose dochi_contatns.dat

#데이터 파일을 100바이트 출력.
$ head -c100 dochi_contatns.dat
$ head --bytes=100 dochi_contatns.dat

 

 

5. tail
5-1. tail이란?

- 파일의 마지막 라인에서 위로 10개의 라인을 출력.
- 주로 로그를 모니터링할 때 사용.

 

5-2. 사용법

$ tail [OPTIONS...] [FILES...]

 

5-3. 옵션

-c#[K], --bytes=#[K]
: 입력한 바이트의 수(#)만큼 출력, K=1000단위.

-[n]#[K], --lines=#[K]
: 입력한 라인 수(#)만큼 출력, n은 생략가능, K=1000단위.

-q, --quiet, --silent
: 파일 이름을 나타내는 헤더를 표시하지 않음.

-v, --verbose
: 파일 이름을 나타내는 헤더를 표시.

-f, --follow, --follow=descriptor
: 파일을 트랭킹하여 라인이 추가될 때 마다 출력됨.

-F, --follow=name
: 파일명이 변경되는 것을 트래킹.


# --follow와 함께 쓰이는 옵션
--pid
: 프로세스가 종료되었는지 트래킹.


--max-unchanged-stats=N
: 파일에 변화가 트래킹되지 않더라도 N번째 후에 다시 확인.

--retry
: 파일에 접근할 수 없을 때, 트래킹을 다시 시도할 것인지 여부.

-s, --sleep-interval=N
: N초마다 파일 또는 프로세스(--pid)를 확인.

 

5-4. 간단 사용예제

#데이터 파일의 마지막 100줄 출력.
$ tail -100 dochi_contents.dat

#로그 파일 트래킹
$ tail -F dochi_action_20200210.log

#로그 프로세스 트래킹
$ tail -f --pid=12345

 

 

마치며

- 개발하면서 자주 사용하는 명령어들은 이곳에 지속적으로 기록해두기로 하겠다.
- 티스토리에서 서식이라는 기능을 처음 사용해봤는데, 화면이 화려해져서 기분이 좋다.

 

'Back-end > Script' 카테고리의 다른 글

[Shell] 조건문 - IF, CASE IN  (0) 2020.02.06
[Shell] Arguments 사용하기  (0) 2020.02.06
[Shell] 알파벳 대소문자 변경  (0) 2020.02.06

댓글