1. 개요
Catenate(연결하다, 결합하다) 또는 Concatenate 에서 따온 명령어로 기본적으로는 표준 입력을 표준 출력으로 이어주는 역할을 한다.[1]NAME
cat - concatenate files and print on the standard output
cat - concatenate files and print on the standard output
man cat
으로 확인하면 위와 같이 나온다.2. 용도
본래 용도는 2개 이상의 파일을 서로 이어 붙여 하나로 만들기 위한 파일 병합 명령이다. 이름 그대로 catenate (또는 concatenate)의 역할이다,cat a.txt b.txt c.txt > all.txt
위와 같이 실행하면 a.txt b.txt c.txt를 모두 붙여서 all.txt 파일을 생성한다. 이게 원래의 용도이다.그런데, 리다이렉션 없이 아래와 같이만 실행하면 3개의 파일을 모두 표준 출력(stdout)에 출력한다.
cat a.txt b.txt c.txt
그런데, 인자를 하나만 주어도 되고, 이렇게 실행하면 a.txt 를 stdout 에 출력한다. cat 의 원래 용도와는 달리 이 용도로 더 많이 사용된다.cat a.txt
주로 짧은 텍스트 파일의 내용을 화면에 출력해주는 용도로 많이 쓰인다. 하지만, 파일의 내용이 길면 보기가 어렵고(특히나 가상 콘솔에서는 스크롤을 할 수 없어 이런 불편함이 더욱 커진다.) 바이너리 파일을
cat
하면 파일을 있는 그대로 화면에 뿌려 버리기 때문에 제어 문자나 특수 문자로 인식하여 화면이 왕창 깨져 버린다. 그래서 유닉스/리눅스에 익숙한 유저들은 주로 more
또는 less를 사용해 파일을 읽는다.간단한 출력 명령이지만, 유닉스/리눅스의 리다이렉션 및 파이핑 기능을 이용하여 파일 복사, 데이터 복사[2] 파일 병합[3] 등의 기능도 수행 가능하다.
3. 사용법
-v | --show-nonprinting | 화면에 표시할 수 없는 글자를 아스키로 인코딩(=치환)해서 보여준다. 상술한 예시와 같이 바이너리를 펼쳐볼 때 화면이 박살나는 것을 막을 수 있으며, grep등을 사용한 검색 등에도 유용해진다. |
4. 기타
변형판으로 출력을 아주 다채롭게 꾸며주는 lolcat 명령어도 존재한다. 이름의 유래는 당연히 영미권의 유명한 밈인 LOLcat이다.[1] 아무 인자 없이
cat
을 실행한 다음 아무 글자나 치고 엔터를 눌러 보자. 메아리처럼 방금 입력한 문장이 그대로 돌아올 것이다.[2] 가령, 일반적인 방법은 아니지만 cat
만으로 iso 파일을 구울 수 있다! 전통적으로 유닉스에서는 블록 장치와 파일을 동일한 인터페이스로 처리하기 때문이다.[3] 여러 개의 파일을 하나의 파일로 합친다.