{{위키데이터 속성 추적}}
{{소문자}}
{{소프트웨어 정보
| name                   = cat
| logo                   = 
| screenshot             = Cat-example-command.gif
| screenshot size        = 
| caption                = 
| developer              = [[AT&T 벨 연구소]]
| released               = {{시작 날짜와 나이|1971|11|3}}
| latest release version = 
| latest release date    = 
| operating system       = [[유닉스]], [[유닉스 계열]]
| genre                  = [[명령어]]
| license                = 
| website                = 
}}
[[파일:Cpuinfo about Intel Celeron M 410.png|thumb]]
'''<code>cat</code>''' 명령어는 파일들을 [[연결어|연결하고]] 표시하기 위해 사용되는 표준 [[유닉스]] 프로그램이다. 이름은 con'''cat'''enate(연결하다)의 동의어인 ''[[:en:wikt:catenate|catenate]]''에서 유래하였다.

== 규격 ==
[[단일 유닉스 규격]]은 인수들로서 일정한 순서로 주어지는 각각의 파일들이 그 내용을 각각의 바이트들이 그것들이 읽혀지는 그대로 출력되도록 동일한 순서로서 표준 출력어에 쓰도록 지정한다. 또한 단일 유닉스 규격은 <code>-u</code>라는 하나의 옵션을 명령한다.

만약 파일명이 <code>-</code>로 지정된다면 <code>cat</code>은 그 순서 안에 있는 바로 그 지점에서 표준 입력어를 읽는다. 만약 어떠한 파일들도 지정되지 않았다면 <code>cat</code>은 입력되는 표준 입력어를 읽는다.

== 예시 ==
여러개의 파일들을 합치는 명령은 다음과 같다.

 cat xaa xab xac > 파일이름

또는

 cat xa[a-c] > 파일이름

=== 확장 ===
<code>cat</code>의 BSD 버전([[OpenBSD]] 메뉴페이지에 따라서)과 <code>cat</code>의 GNU [[coreutils]] 버전은 다음과 같은 옵션들을 지정한다:

* <code>-b</code> (GNU only: <code>--number-nonblank</code>): 공백이 없는 출력어에 순서를 매긴다
* <code>-n</code> (GNU only: <code>--number</code>): 모든 출력어에 순서를 매긴다
* <code>-s</code> (GNU only: <code>--squeeze-blank</code>): 수많은 근접한 공백들을 밀착시킨다
* <code>-v</code> (GNU only: <code>--show-nonprinting</code>): 출력되지 않은 글자들을 보이는 것처럼 표시한다. 단 텝과 마지막 문자열은 제외한다.
* <code>-t</code> on BSD, <code>-T</code> on GNU: <code>-v</code>을 의미하나 <code>^I</code>로서 텝을 표시할 수도 있다.
* <code>-e</code> on BSD, <code>-E</code> on GNU: <code>-v</code>을 의미하나 <code>$</code>로서 마지막 문자열을 표시할 수도 있다.

== 유닉스 문화 ==
=== Jargon File 정의 ===
[[Jargon File]] 버전 4.4.7은 <code>cat</code>의 정의로서 다음을 열거한다:
{{인용문|
전체 파일을 스크린에 분출하거나 정지없이 어떤 다른 출력 싱크에 분출한다 (blast와 동의어).
<br/>
확장어로서는 많은 양의 데이터를 준비되지 않은 타겟에 쏟아버리거나 조심스럽게 그 데이터를 열람하려는 의도없이 쏟아버리는 것을 말한다. 사용법: 바보처럼 간주된다. 드문 외부 유닉스 사이트들. 같이 보기: <code>[[dd (Unix)|dd]]</code>와 [[Block-transfer instruction|BLT]]
<br/>
유닉스 팬들 중에서 <code>cat(1)</code>는 [[사용자 인터페이스]] 디자인의 훌륭한 예로서 간주된다. 그 이유는 파일들 사이의 무수한 공간이나 헤더들과 같은 것들 없이 파일 내용물을 전달해 주기 때문이다. 또한 문자열로 구성하려는 파일만을 요구하지 않고 어떤 종류의 데이터라도 처리할 수 있기 때문이다.
<br/>
유닉스 비판자들 사이에서는 <code>cat(1)</code>은 너무나 불분명한 이름 때문에 나쁜 사용자 인터페이스 디자인의 기본적인 예로 간주된다. 이것은 두 개 혹은 그 이상의 파일들을 연결하려기보다는 하나의 파일을 [[표준 출력어]]로 보내기 위해서 보다 많이 사용된다. 전자의 연산에 대한 <code>cat</code> 이름은 말하자면 [[리스프]]의 <code>[[CAR and CDR|cdr]]</code>만큼 직관적이지 않다.
<br/>
이러한 대항들은 일종의 만들어진 성전이다....  [[cat (Unix)#Useless use of cat|UUOC]]을 함께보라.
}}

=== cat의 쓸모없는 사용 ===
UUOC<ref>[[유즈넷]]의 ''comp.unix.shell''에서 나온 말</ref>은 "Useless Use of cat(cat의 쓸모없는 사용)"을 의미한다. ''comp.unix.shell''에서 얻어진 지혜를 준수하므로 "cat의 목적은 파일들을 연결(혹은'catenate')하는 것이다. 만약 오직 하나의 파일만이 있다면, 그 파일을 아무것과도 연결시키지 않는다면 이는 시간 낭비이고 프로세스를 낭비하는 일이다." 그럼에도 불구하고 아래 같은 일을 하는 사람들이 있다.

 '''cat''' ''file'' | ''some_command and its args'' .....

동일하고 더 저렴한 것 대신에

 <''file'' ''some_command and its args'' ...
이나 (동일하고 보다 더 규범적으로)

 ''some_command and its args'' ... <''file''

1995년 이래로 UUOC에 대한 정기적인 상이 수여되었고, 이는 일반적으로 [[펄]] 권위자인 [[Randal L. Schwartz]]에 의해서 주어진다. 이 상과 다른 비슷한 상들에 대한 웹 페이지가 있다. [[영국인]] [[해커]]들 사이에서는 UUCO의 정형화된 예들의 활동이 때때로 ''[[moggy|demoggification]]''으로 불린다.

가벼운 편집증 환자들은 많은 유명한 키보드 매핑들에서 < 와 > 키가 다른 키들 옆에 있도록 주어진 경우들에 대해서는 cat을 사용하는 것이 여전히 더 안전하다고 간주한다. 리스크가 낮다고 할지라도 < 대신에 > 을 사용하는 영향은 매우 크고 굉장히 비쌀 수 있다.

== zcat ==
<code>zcat</code>은 <code>cat</code>과 비슷한 [[유닉스]] 프로그램으로, 개별 파일들의 압축상태를 풀고 그것들을 표준 출력어에 [[연결]]시킨다. 일반적으로 <code>zcat</code>은 <code>[[compress]]</code>로 압축된 파일들에서 작동되었으나, 오늘날에는 <code>[[gzip]]</code>이나 심지어는 <code>[[bzip2]]</code> 아카이브들에서도 작동될 수 있다. 이러한 시스템들에서는 <code>gunzip -c</code>과 동일하다.<ref name='man'>[http://www.freebsd.org/cgi/man.cgi?query=zcat&apropos=0&sektion=1&manpath=FreeBSD+7.0-RELEASE&format=html] {{웨이백|url=http://www.freebsd.org/cgi/man.cgi?query=zcat&apropos=0&sektion=1&manpath=FreeBSD+7.0-RELEASE&format=html |date=20140209084819 }}zcat manual page in FreeBSD 7.0</ref>

== 같이 보기 ==
* [[Coreutils]]
* [[유닉스 명령어 목록]]
* [[Split (유닉스)|<code>split</code>]], 파일을 cat이 다시 연결할 수 있는 조각들로 분리시키는 명령어
* [[tac (유닉스)|<code>tac</code>]], 파일들을 반대로 연결시킬 수 있는 비슷한 도구
* [[TYPE (도스 명령어)|<code>type</code>]], a [[DOS]], [[OS/2]] 그리고 [[마이크로소프트 윈도우]] 명령어로 파일의 내용물을 표시한다.

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{man|cu|cat|SUS|파일들을 합치거나 출력}}
=== 매뉴얼 페이지 ===
* {{man/format|1|cat|http://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html|파일들을 작성하거나 합침|[[GNU]] [[Coreutils]] reference}}
* {{man|1|cat}}
* {{man|1|cat|Linux}}
* {{man|1|cat|OpenBSD|파일들을 합치거나 출력}}
* {{man|1|cat|FreeBSD}}
=== 기타 ===
* [http://www.iki.fi/era/unix/award.html UUOC awards]

{{유닉스 명령어}}

[[분류:유닉스 텍스트 처리 유틸리티]]
[[분류:표준 유닉스 프로그램]]
[[분류:유닉스 SUS2008 유틸리티]]