Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

head는 파일이나 표준 입력의 앞부분만 출력하는 명령입니다. 기본값은 처음 10줄이며, 파일 형식과 헤더를 빠르게 확인하거나 파이프라인의 결과 수를 제한할 때 사용합니다.

이 글에서는 head의 기본 문법과 주요 옵션, 실제 사용 예제, 관련 명령과의 차이, 사용할 때 주의할 점을 설명합니다.

head 명령어란?

줄 수는 -n, 바이트 수는 -c로 지정합니다. 여러 파일을 주면 파일명 헤더를 붙여 각 결과를 구분합니다. GNU 구현에서는 음수 개수로 끝부분을 제외한 나머지를 출력하는 확장도 제공합니다.

기본 문법

head [옵션] [파일 ...]

옵션과 세부 동작은 구현과 버전에 따라 달라질 수 있습니다. 현재 시스템에서는 head --help와 man head으로 설치된 명령의 설명을 확인하세요.

head 기본 사용법

처음 10줄 보기

옵션을 생략하면 각 입력의 첫 10줄을 출력합니다.

head access.log

원하는 줄 수 출력하기

-n 뒤에 줄 수를 지정합니다.

head -n 25 access.log

처음 몇 바이트 출력하기

문자 수가 아니라 바이트 수이므로 다중 바이트 문자 경계가 잘릴 수 있습니다.

head -c 64 sample.bin

앞부분만 읽은 결과

head -n 2는 입력에서 처음 두 행만 출력합니다. 원본을 바꾸지 않고 작은 샘플을 확인할 때 유용합니다.

printf 'one\ntwo\nthree\n' | head -n 2

예시 출력:

one
two

파이프 앞 명령이 많은 데이터를 생산한다면 head가 일찍 종료하면서 앞 명령에 끊긴 파이프 오류가 발생할 수 있습니다. 자동화에서는 전체 파이프라인의 종료 상태를 확인하세요.

주요 옵션

옵션 설명
-n NUM 처음 NUM줄을 출력합니다.
-c NUM 처음 NUM바이트를 출력합니다.
-q 여러 파일을 처리할 때 파일명 헤더를 숨깁니다.
-v 파일이 하나여도 파일명 헤더를 표시합니다.
-n -NUM GNU 구현에서 마지막 NUM줄을 제외하고 출력합니다.
-c -NUM GNU 구현에서 마지막 NUM바이트를 제외하고 출력합니다.

실전 활용 예제

CSV 헤더와 샘플 확인하기

전체 파일을 열지 않고 첫 행과 일부 데이터를 빠르게 봅니다.

head -n 6 sales.csv

여러 로그 앞부분 비교하기

-v로 파일명을 확실히 표시해 결과 출처를 구분합니다.

head -v -n 5 app.log worker.log

명령 결과 일부만 보기

생산 명령이 head 종료 후 SIGPIPE를 받을 수 있으므로 엄격한 파이프라인에서는 종료 상태를 해석할 때 주의합니다.

find /var/log -type f | head -n 20

head와 관련 명령 비교

명령 주요 역할 적합한 상황
head 앞부분 출력 헤더와 샘플 확인
tail 끝부분 출력·추적 최근 로그 확인
sed 범위 선택과 편집 복잡한 줄 범위 처리
less 대화형 전체 탐색 긴 파일 검색

사용할 때 주의할 점

-c는 문자 수가 아닙니다

UTF-8 문자의 중간 바이트에서 끊으면 깨진 문자가 표시될 수 있습니다.

정렬 전 head는 원래 순서를 따릅니다

가장 큰 값이나 최신 항목을 원한다면 먼저 적절히 정렬해야 합니다.

파이프 종료 상태를 확인합니다

set -o pipefail 환경에서는 앞 명령의 SIGPIPE가 실패처럼 나타날 수 있습니다.

FAQ

기본으로 몇 줄을 출력하나요?

일반적으로 처음 10줄입니다.

첫 줄만 보려면 어떻게 하나요?

head -n 1 파일을 사용합니다.

마지막 줄은 어떤 명령으로 보나요?

tail을 사용합니다.

처음 1KB만 출력할 수 있나요?

GNU head에서는 head -c 1K 파일처럼 크기 접미사를 사용할 수 있습니다. 구현별 지원 여부를 확인하세요.

관련 글과 공식 문서

같은 카테고리의 다른 글
Linux / 명령어 / readlink - 심볼릭 링크 대상 경로 확인

Linux / 명령어 / readlink - 심볼릭 링크 대상 경로 확인

Linux readlink 명령어로 심볼릭 링크에 저장된 대상 경로를 확인하는 방법을 설명합니다. 상대 링크, 깨진 링크, 경로 정규화 옵션과 realpath의 차이도 정리합니다.

Linux / 명령어 / time - 명령 실행 시간 측정

Linux / 명령어 / time - 명령 실행 시간 측정

Linux time 명령어로 명령과 파이프라인의 실행 시간 및 자원 사용량을 측정하는 방법을 설명합니다. Bash 예약어와 GNU /usr/bin/time의 차이, 출력 저장과 정확한 비교 방법을 정리합니다.

Linux / 명령어 / nohup - 로그아웃 후에도 명령 계속 실행

Linux / 명령어 / nohup - 로그아웃 후에도 명령 계속 실행

Linux nohup 명령어로 로그아웃 후에도 작업을 계속 실행하는 방법을 설명합니다. 백그라운드 실행, 입출력 리디렉션, PID 확인과 종료, 로그 관리 및 systemd·tmux와의 차이를 정리합니다.

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux tree 명령어로 디렉터리와 파일 구조를 계층적으로 확인하는 방법을 설명합니다. 설치, 깊이 제한, 숨김 파일, 제외 패턴, 크기·권한 표시와 JSON 저장 방법까지 정리합니다.

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux rpm 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / alias - 명령어 별칭 만들기

Linux / 명령어 / alias - 명령어 별칭 만들기

Bash alias 명령어로 자주 쓰는 명령과 옵션 조합에 짧은 별칭을 만드는 방법을 설명합니다. 별칭 저장, 우회, 함수와의 차이 및 확장되지 않는 경우도 정리합니다.

Linux 강좌 / 표준 입력·출력, 리디렉션과 파이프 이해하기

Linux 강좌 / 표준 입력·출력, 리디렉션과 파이프 이해하기

표준 입력·출력·오류의 차이를 이해하고 파일 리디렉션과 파이프를 실습합니다. 덮어쓰기 위험과 리디렉션 순서도 함께 설명합니다.

Linux / 명령어 / curl - URL 요청과 HTTP 응답 확인

Linux / 명령어 / curl - URL 요청과 HTTP 응답 확인

Linux curl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / 현재 위치 확인하고 이동하기 - pwd, ls, cd, tree

Linux 강좌 / 현재 위치 확인하고 이동하기 - pwd, ls, cd, tree

pwd, ls, cd, tree를 연결해 현재 위치를 확인하고 디렉터리를 탐색합니다. 절대·상대 경로의 차이와 안전하게 돌아오는 방법도 실습합니다.

Linux / 디스크 관리 / 파티션, 포맷, 마운트

Linux / 디스크 관리 / 파티션, 포맷, 마운트

Linux에서 디스크를 관리할 때 필요한 파티션 생성, 파일 시스템 포맷, 마운트 방법을 정리했습니다.