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 / 명령어 / whereis - 명령의 바이너리·소스·매뉴얼 위치 찾기

Linux / 명령어 / whereis - 명령의 바이너리·소스·매뉴얼 위치 찾기

Linux whereis 명령어로 프로그램의 바이너리, 소스와 매뉴얼 페이지 위치를 찾는 방법을 설명합니다. 검색 범위 제한과 which·find와의 차이도 정리합니다.

Linux / 명령어 / bzip2 - 파일을 bzip2 형식으로 압축하기

Linux / 명령어 / bzip2 - 파일을 bzip2 형식으로 압축하기

Linux bzip2 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / whatis - 명령어의 한 줄 설명 확인

Linux / 명령어 / whatis - 명령어의 한 줄 설명 확인

whatis 명령어로 매뉴얼 페이지의 한 줄 설명과 섹션을 확인하는 방법을 설명합니다. 정규 표현식·와일드카드 검색, apropos·type과의 차이 및 색인 문제 해결법을 정리합니다.

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

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

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

Linux / 명령어 / gzip - 파일을 gzip 형식으로 압축하기

Linux / 명령어 / gzip - 파일을 gzip 형식으로 압축하기

Linux gzip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / join - 공통 필드로 두 파일 결합

Linux / 명령어 / join - 공통 필드로 두 파일 결합

Linux join 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux fold 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / awk - 필드별 텍스트 분석과 계산

Linux / 명령어 / awk - 필드별 텍스트 분석과 계산

Linux awk 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux free 명령어의 total, used, free, buff/cache, available과 Swap 항목을 설명합니다. 메모리 부족을 판단할 때 함께 확인할 지표와 주의점도 정리합니다.

Linux / 명령어 / date - 현재 시각 표시와 출력 형식 지정

Linux / 명령어 / date - 현재 시각 표시와 출력 형식 지정

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