리눅스(Linux)/Bash의 cat(concatenate, 연결) 명령어는 파일의 내용을 읽을 때 가장 많이 사용되는 명령어입니다. 지정한 파일의 내용을 화면에 출력해 주며, 그 사용법은 매우 간단합니다.
cat 명령어는 파일들을 표준 출력(standard output)으로 연결(concatenate)합니다. 기본적으로 표준 출력은 콘솔(console)이므로, 결과가 컴퓨터 화면에 표시됩니다. 이러한 특성 덕분에 파일 내용을 빠르게 확인할 때 유용하게 활용할 수 있습니다.
물론 cat 명령어에는 다른 용도도 있습니다. 먼저 기본 문법부터 살펴보겠습니다.
cat 명령어 문법
cat [OPTIONS] [FILE]
문법을 사용할 때 알아두어야 할 사항은 다음과 같습니다.
- FILE을 지정하지 않으면 표준 입력(standard input, stdin)에서 데이터를 읽습니다.
- 여러 개의 FILE을 공백으로 구분하여 지정할 수 있습니다.
- OPTIONS 자리에는 아래 표에 정리된 옵션들을 나열하면 됩니다.
- 명령어의 결과는 표준 출력(standard output, stdout)을 통해 전달됩니다.
주요 옵션
아래는 사용자 설명서(man page)에 수록된 cat 명령어의 자주 사용되는 옵션들입니다.
| 옵션 | 설명 |
|---|---|
| -A, --show-all | -vET 옵션과 동일한 효과 |
| -b, --number-nonblank | 비어 있지 않은 출력 줄에 번호를 매김 (-n보다 우선 적용) |
| -e | -vE 옵션과 동일한 효과 |
| -E, --show-ends | 각 줄 끝에 $ 문자를 표시 |
| -n, --number | 모든 출력 줄에 번호를 매김 |
| -s, --squeeze-blank | 반복되는 빈 줄을 하나로 압축하여 출력 |
| -t | -vT 옵션과 동일한 효과 |
| -T, --show-tabs | TAB 문자를 ^I 형태로 표시 |
| -v, --show-nonprinting | LFD와 TAB을 제외한 출력 불가능한 문자를 ^ 및 M- 표기법으로 표시 |
전체 사용자 설명서는 언제든지 아래 명령어로 확인할 수 있습니다.
man cat
stdin과 stdout이란 무엇인가?
표준 스트림(standard stream)에 대해서는 별도의 설명이 필요하지만, cat 명령어는 워낙 단순하기 때문에 표준 스트림 개념을 익히기에 좋은 출발점이 됩니다. stdin은 프로그램으로 데이터가 들어오는 통로이고, stdout은 프로그램의 결과 데이터가 나가는 통로입니다. 이 두 스트림을 이해하면 리눅스 명령어를 조합하는 파이프(pipe)와 리다이렉션(redirection) 기능을 훨씬 쉽게 활용할 수 있습니다.
파일을 콘솔(stdout)로 읽어오기
cat text.txt
사용법은 정말 간단합니다. cat이 파일을 읽고 그 내용을 콘솔에 출력해 주므로 바로 화면에서 확인할 수 있습니다.
파일의 내용은 stdout을 통해 출력됩니다. stdout은 기본적으로 데이터를 콘솔로 보내지만, 필요에 따라 다른 프로그램으로 전달되도록 방향을 바꿀 수도 있습니다.
파일 내용을 다른 프로그램으로 전달하기(stdin 활용)
cat text.txt | less
앞서 설명한 것처럼, cat의 출력은 다른 명령어의 입력으로 전달(redirect)할 수 있습니다.
위 명령어는 text.txt의 내용을 파이프(|)를 통해 less 명령어로 전달합니다. less는 긴 파일을 페이지 단위로 스크롤하며 볼 수 있게 해주는 도구로, 큰 파일을 열람할 때 특히 유용합니다.
여러 파일 합치기
명령어 이름의 유래가 '연결(concatenate)'인 만큼, 파일을 합치는 방법을 소개하지 않을 수 없겠죠:
cat file1 file2 > mergedfile
cat은 여러 파일을 동시에 읽을 수 있습니다. 따라서 출력을 하나의 파일로 리다이렉션(>)하면, 읽어 들인 모든 파일의 내용이 순서대로 이어져 하나의 파일로 저장됩니다. 위 예제에서는 file1과 file2의 내용이 차례대로 합쳐진 mergedfile이 생성됩니다.