Linux / 명령어 / cat - 파일 내용 출력과 결합

cat은 파일 내용을 표준 출력으로 보내고 여러 파일을 순서대로 연결하는 명령입니다. 짧은 텍스트를 빠르게 확인하거나 파일을 결합할 때 유용하지만, 긴 파일을 읽을 때는 less가 더 편리합니다.

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

cat 명령어란?

이름은 concatenate에서 왔습니다. 인수 없이 실행하면 표준 입력을 읽으며, 파일을 여러 개 지정하면 지정한 순서대로 내용을 출력합니다. 원본 파일은 바꾸지 않지만 셸 리디렉션의 대상을 잘못 지정하면 파일이 비워질 수 있습니다.

기본 문법

cat [옵션] [파일 ...]

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

cat 기본 사용법

파일 내용 출력하기

짧은 설정 파일이나 로그 조각을 화면에서 확인합니다.

cat /etc/os-release

여러 파일 이어서 출력하기

파일 사이에 구분 문자를 자동으로 넣지 않으므로 필요한 경우 별도로 추가합니다.

cat part-01.txt part-02.txt

새 파일로 결합하기

출력 리디렉션으로 결과를 저장합니다. 입력 파일과 출력 파일을 같은 경로로 지정하면 셸이 먼저 출력 파일을 비우므로 사용하지 마세요.

cat chapter-1.txt chapter-2.txt > book.txt

표준 출력 결과 확인하기

cat은 입력 파일의 내용을 순서대로 그대로 출력합니다. 다음은 샘플 두 행을 만든 뒤 확인하는 예제입니다.

printf 'one\ntwo\n' > sample.txt
cat sample.txt

예시 출력:

one
two

cat은 긴 파일을 페이지별로 멈추지 않으므로 결과가 화면을 빠르게 지나갈 수 있습니다. 내용을 탐색하려면 less를 사용하세요.

주요 옵션

옵션 설명
-n 모든 출력 줄에 줄 번호를 붙입니다.
-b 비어 있지 않은 줄에만 번호를 붙이며 -n보다 우선합니다.
-s 연속된 빈 줄을 한 줄로 줄입니다.
-E 각 줄 끝에 $를 표시합니다.
-T 탭 문자를 ^I로 표시합니다.
-A 탭·줄 끝 등 보이지 않는 문자를 함께 표시합니다.

실전 활용 예제

줄 번호와 함께 검토하기

오류 메시지의 줄 번호와 설정 파일을 대조할 때 유용합니다.

cat -n app.conf

보이지 않는 문자 확인하기

줄 끝의 공백이나 탭, CRLF 문제를 조사할 때 표시 옵션을 사용합니다.

cat -A script.sh

표준 입력을 파일로 저장하기

입력이 끝나면 Ctrl+D로 EOF를 전달합니다. 편집 작업에는 전용 편집기가 더 안전합니다.

cat > memo.txt

cat와 관련 명령 비교

명령 주요 역할 적합한 상황
cat 출력·결합 짧은 파일과 파이프 입력
less 대화형 페이지 보기 긴 파일 탐색
tac 줄 순서 역전 최신 줄을 먼저 확인
paste 행 단위 병합 열 형태로 파일 결합

사용할 때 주의할 점

큰 파일은 less로 확인합니다

대용량 파일을 터미널에 모두 출력하면 화면과 터미널 버퍼를 불필요하게 소모합니다.

자기 자신으로 리디렉션하지 않습니다

cat file > file은 cat이 읽기 전에 셸이 파일을 비울 수 있습니다.

바이너리 파일 출력을 피합니다

제어 바이트가 터미널 표시를 흐트러뜨릴 수 있으므로 file, hexdump 또는 xxd를 사용합니다.

FAQ

cat은 파일 내용을 수정하나요?

아닙니다. 기본 동작은 읽어서 표준 출력으로 보내는 것입니다. 다만 리디렉션 대상은 셸이 생성하거나 덮어쓸 수 있습니다.

여러 파일 사이에 빈 줄이 자동으로 들어가나요?

아닙니다. 각 파일의 바이트를 그대로 이어 출력합니다.

줄 번호는 어떻게 표시하나요?

모든 줄은 -n, 내용이 있는 줄만은 -b를 사용합니다.

긴 로그도 cat으로 보면 되나요?

가능하지만 탐색과 검색이 필요하면 less가 적합합니다.

관련 글과 공식 문서

같은 카테고리의 다른 글
Linux / 명령어 / cd - 디렉터리 이동

Linux / 명령어 / cd - 디렉터리 이동

Linux cd 명령어로 절대·상대 경로, 홈과 이전 디렉터리로 이동하는 방법을 설명합니다. 심볼릭 링크 처리, CDPATH, 스크립트와 sudo cd의 한계 및 오류 해결법도 정리합니다.

Linux / 명령어 / rm - 파일과 디렉터리 삭제

Linux / 명령어 / rm - 파일과 디렉터리 삭제

Linux rm 명령어로 파일과 디렉터리를 삭제하는 방법을 설명합니다. 재귀 삭제, 대화형 확인, 루트 보호 옵션과 복구가 어려운 삭제를 안전하게 다루는 원칙을 정리합니다.

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

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

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

Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

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

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux / 명령어 / ln - 하드 링크와 심볼릭 링크 생성

Linux ln 명령어로 하드 링크와 심볼릭 링크를 만드는 방법을 설명합니다. 두 링크의 차이, 상대 경로, 깨진 링크와 기존 링크 교체 시 주의점도 정리합니다.

Linux / 명령어 / id - 사용자 ID와 그룹 정보 확인

Linux / 명령어 / id - 사용자 ID와 그룹 정보 확인

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

Linux / 명령어 / parted - 파티션 표와 빈 공간 확인·관리

Linux / 명령어 / parted - 파티션 표와 빈 공간 확인·관리

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

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

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

Linux / 명령어 / unalias - 명령어 별칭 삭제

Linux / 명령어 / unalias - 명령어 별칭 삭제

Bash unalias 명령어로 특정 별칭이나 모든 별칭을 제거하는 방법을 설명합니다. 일시 제거와 영구 제거, 별칭 우회 및 함수·변수 삭제와의 차이를 정리합니다.

Linux / 명령어 / sort - 텍스트 행 정렬

Linux / 명령어 / sort - 텍스트 행 정렬

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