'고양이'는 무엇을 위해 사용됩니까?


14

나는 고양이 명령이 온라인에서 나오는 것을 보았고 cat간단한 명령 줄 작업을 수행하는 사람의 상황에서 무엇을하고 무엇 을했는지 궁금했습니다 .

답변:


12

cat의 주요 목적은 사기꾼이다 고양이 enate 파일. 내용이 단일 파일에있는 것처럼의 내용과 다른 cat file1 file2 ...내용을 file차례로 표시 file2합니다. 맨 페이지를 참조하십시오 .

NAME
       cat - concatenate and print files

다음 중 하나의 용도로 사용됩니다.

  • 대상 명령은 파일을 읽을 수 없으므로 여러 파일을 전달해야합니다. tr유틸리티 가 그 예입니다 . 일반적으로 하나의 파일로 다음을 수행합니다.

    tr < file
    

    그러나 파일이 여러 개인 경우 리디렉션을 사용할 수 없으므로 다음을 수행해야합니다.

    cat file1 file2 ... | tr
    
  • 대상 명령 여러 파일에서 읽을 있지만 여러 파일이 제공되면 동작이 변경 될 수 있습니다. 예를 들면 wc, 파일 이름없이 총계를 원했을 수도있는 파일 이름과 함께 각 파일의 개수를 인쇄합니다.

당신이 발생하는 대부분의 명령을 기억 ( grep, sed, awk, sort, ...) 완벽하게 정상적으로 파일을 읽을 수 있습니다.

당신이 할 경우 파일의 내용을, 용도 호출기를 - less그리고 more모두 볼 수 있도록 파일을 제시 저명하게 할 수 있으며, 훨씬 더 편리한 사용한다.


프로세스 및 명령 대체와 결합하여 여러 파일을 리디렉션 할 수있을뿐만 아니라 여러 파일을 리디렉션 할 수있는 완벽한 방법 < <(cat file[12]) tr이기도 <<<$(cat file[12]) tr합니다. 물론 cat배관이 유일한 방법은 아닙니다.
디저트

@dessert 만약 당신이 pedantic이어야한다면, 그 경로 재 지정은 여전히 ​​명령의 stdout (또는 다른 방법이라면 stdin)을 나타내는 단일 파일만을 사용합니다. Bash는 zsh처럼 실제 다중 파일 리디렉션을 지원하지 않습니다.
muru

9

cat유닉스 계열 운영 체제에서 가장 자주 사용되는 명령 중 하나입니다. 텍스트 파일과 관련하여 세 가지 관련 기능이 있습니다.

  1. 그들을 표시
  2. 그들의 사본을 결합
  3. 새로운 것 만들기.
  4. 파일 복사

고양이의 일반적인 구문은 다음과 같습니다

cat [options] [filenames] [-] [filenames]

파일 읽기

cat의 가장 일반적인 용도는 파일의 내용을 읽는 것이며, cat은 종종이 목적에 가장 편리한 프로그램입니다. 디스플레이 모니터에서 볼 텍스트 파일을 여는 데 필요한 것은 cat이라는 단어 다음에 공백과 파일 이름을 입력 한 다음 Enter 키를 누르는 것입니다. 예를 들어, 다음은 file1이라는 파일의 내용을 표시합니다.

cat file1

연쇄

고양이의 두 번째 역할은 연결입니다. (이것은 고양이의 호기심 많은 이름의 원천입니다.) 원본 파일에는 영향을 미치지 않습니다.

예를 들어 다음 명령은 세 파일 file1, file2 및 file3의 내용 사본을 연결합니다.

cat file1 file2 file3

각 파일의 내용이 모니터 화면에 표시됩니다. 이 출력은 다음을 사용하여 출력 리디렉션 연산자를 사용하여 file4와 같은 다른 파일로 쉽게 리디렉션 될 수 있습니다.

cat file1 file2 file3 > file4

파일 생성

@muru 주석 덕분에 : cat은 자체가 아닌 쉘 리디렉션 기능에 따라 새 파일을 만들 수 있습니다.

작은 파일의 경우 vi, gedit 또는 다른 텍스트 편집기를 사용하는 것보다 쉽습니다. cat 다음에 출력 경로 재 지정 연산자와 작성할 파일 이름을 입력 한 다음을 누르고 ENTER마지막으로 Ctrl& d키를 동시에 누르면 됩니다.

예를 들어, file1이라는 새 파일을 입력하여 만들 수 있습니다

cat > file1

그런 다음 & 키를 ENTER동시에 누릅니다 .Ctrld

PS1 : file1이라는 파일이 이미 있으면 덮어 씁니다.

PS2 : 추가 연산자 >>예제 cat >> file1을 사용하여 종료 된 파일에 추가 할 수 있습니다.

파일 복사

cat 명령을 사용하여 ( 쉘 재 지정 기능에 따라 ) 새 파일을 작성하고 기존 파일의 데이터를 전송할 수도 있습니다. 예 : 파일 사본을 만드십시오 oldfile.txt.

cat oldfile.txt > newfile.txt

참고 문헌 :


1
다시 3 : cat해당 파일을 만들지 않습니다. 셸은 리디렉션을 사용했을 때입니다. 당신도 잘했을 것 echo foo > file1입니다.
muru

@muru 당신은 완전히 옳지 만, 여전히 고양이 명령을 사용합니다
Maythux

1
아닙니다. 당신 cat은 실제로 다른 것에 의해 행해지고있는 것에 기여 하고 있습니다. 예를 들어, 하 less file1 > file2(거나 grep '.*' file1 > file또는 awk 1 file1 > file2같은 효과가 ... OR). 4에 대한 Ditto. 이것은 단지 오용입니다.
muru

나는 그것을 사용하고 > file동일한 결과를 줄 수 있다는 것을 알고 있지만 고양이와 함께하는 것이 타당하다고 생각할 수 없습니까?!
Maythux

1
당신은 할 수 있다면 당신은 지정한 cat파일을 생성하지 않습니다. cat파일을 만들거나 복사 한다고 말하는 것은 단순한 거짓입니다.
muru

1

파일 내용을 표시하는 데 사용할 수 있습니다. 예 : cat "my file.txt". 당신은 또한 할 수있는 man cat당신에게 무엇에 대한 세부 보여주기 위해 cat사용할 수 있습니다.


0

쉘 재 지정 (또는 파이핑)을 사용하여 파일을 생성하는 또 다른 방법 은 다음 과 cat같습니다.

cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF

cat << EOF문자열 EOF이 다시 발생할 때까지 다음 줄을 출력 합니다. 그런 다음 >( >>)는 출력을 파일로 리디렉션합니다 foo.sh. 또는 파일을 루트로 작성해야하는 경우 명령에 의해 실행 된 출력을 명령 tee( tee -a)으로 파이프 할 수 있습니다 sudo.

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • 위의 방법으로 파일 chmod +x이 성공적으로 생성되면 ( ) 파일을 실행 가능하게 만듭니다 ( &&).
  • 일부 문자 ( $) 의 특수 의미는 \의 출력 내에서 (로 ) 이스케이프되어야합니다 cat.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.