본문 바로가기

운영체제/리눅스

[리눅스] head, tail 명령어(리눅스 파일 시작, 끝 출력 명령어)

리눅스 파일 시작, 끝 출력 명령어 - head명령어, tail 명령어

리눅스에서 파일의 길이가 매우 길어서 일부만 확인해야 하는 경우가 있다.

예를들어 로그파일이 잘 작성되고 있는지 보려면

전체를 보는 대신 끝의 몇줄을 보고 최신 날짜까지 작성이 됬는지 확인할 수 있다.


이때 사용하는 명령어가 head, tail 명령어이다.

이름에서도 느낄수 있듯이

head는 파일의 앞부분을 확인하는 명령어,

tail은 파일의 뒷부분을 확인하는 명령어이다.


물론 다른 명령어들처럼 파일 외의 입력에 대해(파이프라인 활용 등) 출력 해줄 수도 있고

화면대신 파일로 출력할 수도 있다.

(이부분은 이해가 안가면 넘어가도 무관하다.)


명령어 구조는 아래와 같다.

디폴트 출력갯수는 10개이다.



head [option] filename1, filename2, ...


tail [option] filename1, filename2, ...




주요옵션

리눅스 버전에 따라 옵션이 차이가 있을 수 있음


 옵션

설명

-n num

 num수 만큼 출력해준다.

-c num

 num byte만큼 출력해준다.

-q

 여러개의 파일을 출력할 때 제목을 출력하지 않는다.

-f

 내용이 변경될 때마다 실시간으로 출력해준다.

 로그파일 모니터링 등에 활용.

 (tail만 있음)




사용예시 및 사용화면

사용 샘플파일로 

a.txt, b.txt 2개의 파일을 만들었다.

각 파일의 내용은 아래와 같다.

a.txt

a1

a2

a3

...

a13

a14

a15. 파일끝.


b.txt

b1

b2

b3

...

b13

b14

b15.  파일끝.


▼ head a.txt(파일의 앞 10줄 화면 출력)

a.txt의 위에서부터 10줄(디폴트값)이 출력된다.


▼ tail a.txt(파일의 뒷 10줄 화면 출력)

a.txt의 뒤에서부터 10줄(디폴트값)이 출력된다.



▼ head -n 5 a.txt(라인수를 지정하여 출력)

라인수를 지정하여 출력하였다.



▼ head -c n a.txt(파이트 단위로 출력)

바이트 단위로 출력하였다. 글자1개가 1바이트, 개행문자(보이지않음)가 1바이트 인 듯 하다.

1바이트를 출력했을때, 5바이트를 출력했을때는 개행없이 바로 이어졌다.



▼ head a.txt b.txt(2개의 파일을 출력)

각 파일에 대해 head명령어가 실행되었고,

1개의 파일을 출력한것과 대비하여 파일명이 추가되어 표시되고 있다.



▼ head -n 5 -q a.txt b.txt(2개의 파일을 제목없이 출력)

-q 옵션을 넣어 파일제목 없이 출력하도록 하였다.

보기쉽게 하기 위해 라인수는 5줄로 제한하였다.



▼ tail -f b.txt(실시간 출력)

-f옵션을 주어 실시간으로 변경이 모니터링 되도록 하였다.

위의 예시와 달리 명령어 입력 후 쉘입력 창이 뜨지 않고 대기중이다.

변경이 나오면 표시해준다.

빠져나오려면 Ctrl+C를 눌러주면 된다.