Devin.KR
로그인

리눅스 head 명령어 사용법 - 파일 앞부분 확인과 실전 예제

개발자 조회 1

이 명령어를 언제 쓰는가

처음 보는 데이터 파일을 받았을 때 가장 먼저 확인해야 할 것은 "이게 어떤 형식인가"다. 컬럼 구분자가 콤마인지 탭인지, 헤더 행이 있는지, 인코딩이 깨지지 않았는지. 이럴 때 head 로 앞 몇 줄만 뽑아 본다.

수 GB짜리 파일이어도 앞부분만 읽고 바로 끝나기 때문에 즉시 결과가 나온다. 파일 크기를 모를 때 무심코 cat 을 치는 대신 습관적으로 head 를 치는 것이 안전하다.

기본 형식

head [옵션] 파일...

옵션을 주지 않으면 앞에서 10줄을 출력한다. 파일을 여러 개 주면 각각의 앞부분을 ==> 파일명 <== 헤더와 함께 보여준다. 파일명을 생략하면 표준 입력을 읽으므로 파이프 뒤에 붙일 수 있다.

자주 쓰는 옵션

옵션의미예시
-n N앞에서 N줄을 출력한다head -n 3 data.csv
-c N줄이 아니라 앞에서 N바이트를 출력한다head -c 64 image.png
-n -N마지막 N줄을 제외하고 출력한다 (GNU 전용)head -n -1 report.txt
-q파일이 여러 개여도 파일명 헤더를 찍지 않는다 (GNU 전용)head -q -n 1 *.csv

-n 3-3 으로 줄여 쓸 수도 있다. 다만 스크립트에는 의미가 분명한 -n 3 을 쓰는 편이 낫다.

실전 예제

1) 넘겨받은 CSV의 헤더와 첫 데이터 행을 확인한다. 컬럼 순서와 구분자를 파악하는 첫 단계다.

head -n 3 users.csv

2) 디렉터리 안 모든 로그의 첫 줄만 모아 본다. 로그마다 시작 시각이 언제인지 한눈에 비교할 때 쓴다.

head -n 1 /var/log/app/*.log

출력은 이런 형태다.

==> /var/log/app/access.log <==
2026-08-24T09:00:01Z GET /health 200

==> /var/log/app/error.log <==
2026-08-24T09:13:44Z ERROR db connection refused

3) 파일의 실제 형식을 바이트 단위로 확인한다. 확장자는 .png 인데 열리지 않을 때 매직 넘버를 본다.

head -c 16 upload.png | xxd

4) 정렬 결과의 상위 N건만 뽑는다. 접속이 가장 많은 IP 10개를 보는, 실무에서 가장 자주 쓰는 조합이다.

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 10

5) 마지막 줄(합계 행)을 떼어내고 본다. 리포트 파일 끝에 붙은 요약 행을 빼고 데이터만 다룰 때 쓴다.

head -n -1 monthly-report.txt

함정과 주의점

macOS·BSD 의 head 에는 -n -1 이 없다. "마지막 N줄 제외"는 GNU coreutils 확장이라 macOS 에서 실행하면 illegal line count 오류가 난다. macOS 에서 같은 일을 하려면 Homebrew 로 coreutils 를 설치해 ghead -n -1 을 쓰거나, sed '$d' 로 대체한다. 파일명 헤더를 끄는 -q 도 macOS 에는 없다(invalid option -- q). 서버 스크립트를 맥에서 테스트할 때 자주 걸리는 지점이다.

파이프 앞 명령이 Broken pipe 오류를 낼 수 있다. head 는 필요한 줄을 읽으면 바로 종료하고, 그 순간 앞 명령이 SIGPIPE 를 받는다. 대부분은 조용히 끝나지만 파이썬 스크립트 같은 것은 BrokenPipeError 스택 트레이스를 뱉는다. 정상 동작이므로 에러로 오해하지 않는다. 스크립트를 set -o pipefail 로 돌리는 중이라면 이 종료 코드 때문에 파이프라인 전체가 실패로 판정될 수 있으니 주의한다.

바이너리 파일을 -n 으로 자르면 터미널이 깨진다. 줄 단위로 자른 결과에 제어 문자가 섞이기 때문이다. 바이너리는 반드시 -c 로 바이트를 자르고 xxdod -c 로 넘겨서 본다.

함께 보면 좋은 명령어

  • tail — 반대로 파일의 끝부분을 본다. 로그 확인은 대개 이쪽이다.
  • less — 앞부분만으로 부족해서 파일 전체를 훑어야 할 때로 넘어간다.
  • file — 열기 전에 파일 종류부터 판별한다. 바이너리를 잘못 여는 사고를 막는다.