cat(유닉스)
cat (Unix)![]() | |
원저작자 | 켄 톰슨 데니스 리치 |
---|---|
개발자 | AT&T 벨 연구소 |
초기 릴리즈 | 1971년 11월 3일, | 전(
운영 체제 | Unix, Unix 라이크, Plan 9, Inferno, ReactOS |
플랫폼 | 크로스 플랫폼 |
유형 | 명령어 |
면허증. | 코어 유틸리티: GPLv3+ ReactOS: GPLv2+ |
cat
는 파일을 순차적으로 읽어 표준 출력에 쓰는 표준 Unix 유틸리티입니다.이 이름은 (con)catenate 파일(라틴어 catenare, "to chain")에 대한 함수에서 파생되었습니다.많은 운영체제로 이식되어 있습니다.
이력
cat
는 Unix의 초기 버전(예: Version 1)의 일부이며 대체되었습니다.pr
단일 [1]파일을 화면에 복사하기 위한 PDP-7 및 Multics 유틸리티.그것은 켄 톰슨과 데니스 리치에 의해 쓰여졌다.의 버전cat
GNUcoreutils에 번들된 는 Torbjorn Granlund와 Richard Stallman에 [2]의해 작성되었습니다.리액트OS 버전은 David Welch, Semyon Novikov,[3] 그리고 Hermés Bélusca에 의해 작성되었습니다.
시간이 지남에 따라 다음과 같은 대체 유틸리티가tac
그리고.bat
또한 다양한 [4][5]신기능을 탑재하고 있습니다.
사용.
단일 Unix 사양은 다음 동작에 대해 정의하고 있습니다.cat
인수에 지정된 시퀀스의 파일을 읽고, 그 내용을 같은 시퀀스의 표준 출력에 씁니다.이 사양에서는 1개의 옵션플래그(u는 버퍼되지 않은 출력용)를 지원하도록 규정하고 있습니다.즉, 각 바이트는 읽힌 후에 기입됩니다.GNU Core Utilities를 사용하는 운영 체제와 같은 일부 운영 체제에서는 기본적으로 이 작업을 수행하고 [6]플래그를 무시합니다.
입력 파일 이름 중 하나가 단일 하이픈(-)으로 지정되면cat
시퀀스의 해당 지점에서 표준 입력에서 읽습니다.파일이 지정되지 않은 경우cat
표준 입력에서만 읽습니다.
command-syntax는 다음과 같습니다.
cat [file_names][ file _ names ]
옵션들
일부의 예cat
옵션:[7]
- -b (GNU:), 공백이 아닌 출력 라인 수
- -e 는, 다음과 같이 행의 말미 문자를 나타냅니다(GNU 만: 같으나, 의미하지 않습니다).
- -n (GNU: ), 모든 출력 라인의 번호 지정
- -s (GNU: ), 인접한 여러 개의 빈 줄을 스퀴즈합니다.
- -t 는 를 의미하지만 탭도 다음과 같이 표시합니다(GNU: 동일하지만 암시하지 않음).
- -u stdout에 버퍼링되지 않은 I/O를 사용합니다.POSIX 에서는, 이 옵션이 없는 동작을 지정하지 않습니다.
- -v (GNU: ) 탭 및 줄 끝 문자를 제외한 인쇄되지 않은 문자를 표시합니다.
사용 사례
cat
파일을 입력 스트림에서 일반 텍스트 또는 이진 데이터를 예상하는 프로그램에 파이핑하는 데 사용할 수 있습니다. cat
는 연결 및 출력 시 텍스트 이외의 바이트를 파기하지 않습니다.따라서 텍스트 파일과 특정 형식 호환 바이너리 파일의 두 가지 주요 사용 사례가 있습니다.
텍스트 연결은 ASCII와 같은 동일한 레거시 인코딩을 사용하는 텍스트 파일로 제한됩니다. cat
에서는 바이트 순서 마크가 있는 Unicode 텍스트파일 또는 서로 다른 텍스트인코딩을 사용하는 파일을 연결하는 방법은 제공되지 않습니다.
많은 구조화된 바이너리 데이터 세트의 경우 결합된 파일이 유효하지 않을 수 있습니다. 예를 들어 파일에 고유한 머리글 또는 바닥글이 있는 경우 결과에서 이러한 파일이 즉시 복제됩니다.단, 일부 멀티미디어 디지털컨테이너 포맷에서는 결과 파일이 유효하기 때문에cat
는 파일을 추가하는 효과적인 수단을 제공합니다.비디오 스트림은 다음과 같은 파일의 중요한 예가 될 수 있습니다.cat
는, MPEG 프로그램 스트림(MPEG-1 및 MPEG-2)과 DV(디지털 비디오) 형식 등, 문제없이 접속할 수 있습니다.이것은 기본적으로 단순한 패킷스트림입니다.
예
Command | 설명. |
---|---|
cat file1.txt | 파일 내용 표시 |
cat file1.txt file2.txt | 두 개의 텍스트 파일을 연결하고 터미널에 결과를 표시합니다. |
cat file1.txt file2.txt > newcombinedfile.txt | 두 개의 텍스트 파일을 연결하여 새 파일에 쓰기 |
cat >newfile.txt | newfile이라는 파일을 만듭니다.txt. 원하는 입력을 입력하고 CTRL+D를 눌러 완료합니다.텍스트는 파일 newfile에 있습니다.txt를 클릭합니다. |
cat -n file1.txt file2.txt > newnumberedfile.txt | 옵션 -n을 사용하여 cat의 일부 구현에서는 행 번호를 지정할 수도 있습니다. |
cat file1.txt > file2.txt | file1의 내용을 복사합니다.txt를 file2로 만듭니다.txt |
cat file1.txt >> file2.txt | file1의 내용을 추가합니다.txt에서 file2로 이동합니다.txt |
cat file1.txt file2.txt file3.txt sort > test4 | 파일을 연결하고, 줄의 전체 집합을 정렬하고, 출력을 새로 만든 파일에 씁니다. |
cat file1.txt file2.txt less | file1과 file2의 연결을 입력으로 하여 프로그램을 "less" 실행합니다. |
cat file1.txt grep example | file1의 단어 "example" 인스턴스를 강조 표시합니다.txt |
command cat | TTY에 직접 쓸 때 "명령" 특수 동작(예: 페이징)을 취소합니다(cf).아래 UUOC) |
Unix 문화
전문용어 파일 정의
Jonesm File 버전 4.4.7은 이를 다음과 같은 정의로 나열합니다.cat
:
- 전체 파일을 화면 또는 기타 출력 싱크로 일시 중지 없이 내보냅니다(동기 블래스트).
- 즉, 준비되지 않은 대상에 대량의 데이터를 덤프하거나 주의 깊게 검색할 의도가 없습니다.사용방법: 어리석다고 생각됩니다.UNIX 사이트 이외에서는 거의 없습니다.「BLT」도 참조해 주세요.
Unix 팬 사이에서 는 파일 간의 공백이나 헤더와 같은 장황함 없이 파일 내용을 전달하고 파일이 텍스트 행으로 구성될 필요가 없지만 모든 종류의 데이터로 작동하기 때문에 사용자 인터페이스 설계의 훌륭한 예로 간주됩니다.
Unix의 비평가들 사이에서는, 그 애처로울 정도로 눈에 띄지 않는 이름 때문에, 나쁜 유저 인터페이스 설계의 전형적인 예로 여겨지고 있습니다.두 개 이상의 파일을 연결하는 것보다 하나의 파일을 표준 출력으로 전송하는 데 훨씬 더 많이 사용됩니다.전자의 조작의 이름은, 예를 들면 LISP와 같은 [citation needed]의미를 가지지 않습니다.
쓸데없는 고양이 사용
불필요한 cat(UUOC) 사용은 사용자에게 [8]편리한 기능만 제공하는 명령줄 구조에 대한 Unix의 일반적인 용어입니다.컴퓨팅에서, "남용"[9]이라는 단어는 두 번째 의미에서 언어구조의 과도한 또는 불필요한 사용을 비하하기 위해 사용됩니다. 따라서, 언어구조의 남용입니다.cat
'고양이 학대'라고 불리기도 합니다.공통의 예cat
남용은 시상식에서 주어진다.
cat filename 명령 arg1 arg2 argn
대신 stdin의 리다이렉션을 사용하여 다음 중 하나의 형식으로 다시 작성할 수 있습니다(첫 번째 형식이 더 일반적입니다).
command arg1 argn < filename <filename command arg1 arg2 argn
다른 이점 외에도 입력 리다이렉션 폼을 사용하면 명령어가 파일에 랜덤 액세스를 수행할 수 있지만cat
예시는 그렇지 않습니다.이는 리다이렉션 폼에 의해 파일이 stdin 파일 기술자로 열리기 때문입니다.이러한 명령어는 이 명령어를 사용하여cat
폼은 단순히 데이터를 바이트 스트림으로 제공합니다.
또 하나의 일반적인 케이스는cat
명령어가 stdin에서 동작하도록 기본 설정되어 있는 경우 is not required는 파일명을 인수로 지정하면 파일에서 읽습니다.이것은 많은 일반적인 명령어의 경우입니다.다음 예시는
cat "$file" grep "$pattern" cat "$file" 감소
대신 이라고 쓸 수 있다
grep "$pattern" "$file"에서 "$file"을 뺀 값
일반적인 인터랙티브한 사용cat
단일 파일의 경우 파일의 내용을 표준 출력으로 출력합니다.다만, 출력이 파이핑 또는 리다이렉트 되어 있는 경우는,cat
불필요합니다.
A cat
왼쪽에서 오른쪽으로 파이핑된 스트림을 읽는 것이 개념화하기 [10]쉽기 때문에 가독성을 위해 UUOC를 사용하여 쓴 것이 여전히 선호될 수 있습니다.또, 리다이렉션 기호 「>」(키보드에 인접해 있는 경우가 많다)를 잘못 사용하면, 파일의 내용이 영구적으로 삭제되는 일이 있습니다.즉, 이것을 회피하는 한 가지 방법은,cat
파이프와 함께.비교:
command < in command 2 > out < in command 2 > out
포함:
cat in command 2 > out
「 」를 참조해 주세요.
레퍼런스
- ^ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
- ^ Linux 사용자 명령어 매뉴얼 –
- ^ "reactos/cat.c at master · reactos/reactos · GitHub". github.com.
- ^ "tac(1) - Linux manual page". man7.org.
- ^ "sharkdp/bat". December 2, 2021 – via GitHub.
- ^ GNU Coreutils."GNU Coreutils 매뉴얼", GNU, 2017년 Mars 1에서 취득.
- ^ OpenBSD 매뉴얼 페이지 및 GNU Core Utilites 버전의 cat
- ^ comp.disc.shell."UUOC의 초기 수상 사례(1994년)", 구글 그룹을 통한 comp.unix.shell, 2017년 Mars 1에서 취득.
- ^ "Merriam Webster's Definition of Abuse". Retrieved 2021-02-25.
- ^ Nguyen, Dan. "Stanford Computational Journalism Lab". stanford.edu. Retrieved 2017-10-08.
외부 링크

- The Single UNIX Specification, The Open Group 버전 4 : 파일 연결 및 인쇄– Shell and Utilities Reference,
- UNIX Style 또는 cat -v 유해한 것으로 간주됨 - cat을 예시로 하는 적절한 Unix 명령어 설계에 관한 Rob Pike의 논문.
- cat(1) UNIX 첫 번째 에디션의 원본 페이지입니다.
- GNU Coreutils 참조 : 파일 연결 및 쓰기–
- OpenBSD 일반 명령어 매뉴얼 : 파일 연결 및 인쇄–
- FreeBSD 일반 명령어 매뉴얼 –
- Plan 9 프로그래머 매뉴얼, 1권 –
- 역방향 – GNU Coreutils 참조 : 파일 연결 및 쓰기