`less`가있을 때`cat`을 사용해야 할 이유가 있습니까?


59

cat파일을 보는 데 사용 했습니다. 그런 다음 less일반적으로 더 낫다는 것을 알았으며 파일이 수십 행보다 길면 필수입니다.

내 질문 : cat대신 사용해야 할 이유 가 less있습니까? cat더 나은 솔루션 이있는 상황 이 있습니까?


17
less그리고 cat다른 문제를 해결하고 자신의 문제 영역에서 다른 것보다 각각 더 낫다
데이비드 헤퍼 넌

2
나중에 cat출력을 파이프하는 데만 사용 합니다 less.
FUZxxl

1
내가 자주 사용하는 cat콘솔에 매우 짧은 파일을 인쇄하려면에있는 파일 /proc과는 /sys아주 좋은 후보입니다. 이렇게하면 여러 파일의 내용을 동시에 볼 수 있습니다.
Feuermurmel

답변:


20

저는 개인적 view으로 정적 콘텐츠 나 tail -f동적 콘텐츠를 선호 합니다.

그러나 이것은 귀하의 질문에 대답하지 않습니다. "당신이 적은 경우 더 많이 사용하는 이유";-)

그러나 고양이보다 적은 것을 선호하는 경우가 있습니다. 나는 보통 X11-windows로 작업합니다. 이 창에는 수백 줄로 설정할 수있는 스크롤 버퍼가 있습니다.

cat위해-200 줄을 말한 다음 스크롤 막대로 마우스를 사용하는 것이이 less경우 보다 사용하기가 더 편합니다 .


4
으로 view당신이 보통을 의미 vim -R하거나 해당 이름을 가진 다른 뭔가가?
manatwork

아니요-읽기 전용 모드의 vi 또는 vim입니다. CentOS는 기본적으로 해당 별칭을 설정합니다. 보안 디렉토리에서 파일을 볼 때 HIDS를 트리거하지 않습니다.
Nils

2
less +F무엇을 tail -f합니까.
legends2k

2
실제로 view는 별칭이 아닙니다. 링크입니다 ( vi또는 vim). vi본다 argv[0]시작할 때 인 경우, (이 아래에 호출 된 것을 이름 확인)와 viewrview, 그것은 읽기 전용 설정 모드 (입력 한 것처럼 vim -R).
G-남자

91

두 명령을 모두 사용하여 파일의 내용을 볼 수 있지만 원래 목적은 상당히 다릅니다.

많은 기능을 확장합니다 . 후자는 파일 내용을 한 번에 한 화면 씩 볼 수 있도록 만들어졌습니다. 적은 뒤로 이동 및 더 나은 메모리 관리와 같은 기능을 추가하지 않습니다 (첫 번째 줄을보기 전에 전체 파일을 읽을 필요가 없음).

cat은 파일을 연결하고 결과를 표준 출력에 인쇄합니다. 하나의 파일 만 제공하면 해당 파일의 내용이 표시됩니다. 여러 파일을 제공하면 '강력한'상태가됩니다. 좋은 예는 split 과 cat 의 조합입니다 . 첫 번째 명령은 큰 파일을 작은 부분으로 나눕니다. 두 번째는 작은 부분을 하나의 파일로 연결합니다.

귀하의 질문으로 돌아 가면 cat은 상호 작용없이 파일을 완전히 읽거나 연결 해야하는 자율 스크립트에서 선호됩니다. 파일보기의 관점에서, 그것은 맛의 문제라고 생각합니다.


4
less항상 파일 내에서 검색 할 수 cat있지만 그렇지 않습니다.
Bernhard

@ Bernhard : 고양이 출력에 grep을하는 것은 어떻습니까?
user3527975

23

일반적으로 cat파일의 무언가를 기반으로 명령을 입력해야 할 때 사용 합니다. cat쉘 프롬프트에 액세스하는 동안 파일이 작 으면 (작은 경우) 볼 수 있기 때문에 더 편리합니다. 또한 파이프 라이닝이 가능합니다.


3
한 파일의 경우 표준 입력을 리디렉션하는 것도 가능하며 종종 선호됩니다.
프로그래머

17
고양이가 더 나은 솔루션 인 상황이 있습니까?

하나 이상의 파일을 처리하고 연결하려고 할 때.

매뉴얼 페이지에서 :

cat f - g
        Output f's contents, then standard input, then g's contents.

15

의 유일한 목적이 있음을 강력하게 주장하는 사람들이있을 수 있습니다 cat사기입니다 고양이 enate 파일. 다른 모든 용도에는 more(또는 less)가 있습니다.

그러나 이것은 하나의 매우 중요한 사실을 고려하지 않습니다 cat. 나는 그 명령을 너무 자주 사용하여 한 문자가 적습니다.

또 다른 이유는 파일을 만들려고 할 때입니다. 웹에서 다음과 같은 파일로 텍스트를 복사하여 붙여 넣는 경우가 종종 있습니다 (명령 프롬프트 표시).

$ cat > filename
<Cmd-V>
<Ctrl-D>
$

즉, filename쓰기 액세스를 위해 파일 을 열고 내용을 붙여 넣고 Ctrl- 를 눌러 스트림을 닫습니다 D. 어느 쪽 lessmore그렇게없고, 편집기를 여는 것보다 빠릅니다 수 있습니다.


4
당신이 셸 zsh을 사용하는 경우, 당신은 그래서 그것을 설정할 수 있습니다 $<filename(여기서 $프롬프트이다)에 연결된 표준 입력으로 $ PAGER를 호출합니다 filename. 입력 할 때보 다 문자 수가 적습니다 cat.
Kevin Cathcart

@Kevin 알고 싶었지만 나는 bash 사용자입니다.
Konrad Rudolph

2
Mac OS X에서는을 사용 pbpaste > filename하며 X에는 비슷한 것이 있다고 생각합니다. cat붙여 넣기가 아닌 빠른 파일 작성에 여전히 사용 합니다.
cobbal

@ cobbal Hehe, 나는 다른 목적으로 pbcopy/ pbpaste를 사용하더라도 그 생각을 결코하지 않았습니다 .
Konrad Rudolph

1
실제로의 두 문자 이하 - 당신은 눌러야 q종료합니다 less: D
마틴 폰 WITTICH

9

때때로 당신은 페이지 매김을 less원하지 않고 완전한 파일을 원하기 때문에 당신이 사용할 수 있습니다 cat.


4

내가 사용 catgrep(여러) 파일.

cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"

나는 grep파일 이름을 지원한다는 것을 알고 있지만 다른 검색어에 대해 동일한 파일을 가져 오는 경우 검색어가 줄의 마지막 항목 인 명령을 편집하는 것이 더 쉽습니다. 줄을 다시 Ctrl + 화살표 키로 다시 사용해야합니다.


4

cat 여러 바이너리 파일을 하나의 큰 파일로 연결하는 데 사용할 수 있습니다.

cat data.001 data.002 data.003 > bigdata.dat

3

내가 사용 less -FX하게하는, less처럼 행동 cat파일이 한 화면에 표시 할 수 있습니다 때. 로부터 less(1)맨 :

-F or --quit-if-one-screen
       Causes less to automatically exit if the entire file can be dis-
       played on the first screen.

-X or --no-init
       Disables sending the termcap initialization and deinitialization
       strings  to  the  terminal.   This is sometimes desirable if the
       deinitialization string does something unnecessary, like  clear-
       ing the screen.

2

유닉스 변종이 많기 때문에 많은 사람들이 시스템을 관리 할 필요가 없습니다. 일이 시작되면 제한된 환경이라고 불리는 시스템에서 재부팅하고 시스템에 들어갈 수 있습니다.

당신은 명령 행을 얻고 작고 일반적으로 정적으로 링크 된 유용한 명령으로 여겨지는 작은 세트에 접근합니다. vi를 편집기로, 또는 더 작은 ed이지만 emacs 또는 vim은 얻을 수 없습니다. 당신은 고양이를 얻을 것입니다. 이는 리소스가 잘못 구성되었거나 모두 사용되지 않았기 때문에 너무 많은 리소스를 사용하지 않고 시스템을 복구 할 수있는 충분한 도구를 제공하는 것입니다. 그러한 상황에 대한 명령이 적을수록 불필요한 것입니다.


2

그리고 less모든 GNU / Linux 배포판에 사전 설치되어 있지 않습니다. (예 : 젠투) cat아마도 어디에나있을 것입니다.


2

cat화면에 숙박. 모든 것이 less사라집니다.

Volker Siegel의 설명 :

출력은 cat화면 에 유지됩니다. less닫은 후 재난으로 표시되는 모든 것 .


1

'less'내에서 'v'를 눌러 파일을 편집하거나 '!'를 사용할 수 있으므로 권한 에스컬레이션에 문제가있을 수 있습니다. 쉘 명령을 보냅니다.

일부 사용자는 수퍼 유저 만 읽을 수있는 파일을 볼 수 있지만 해당 사용자는 파일을 편집하거나 일반적으로 수퍼 유저 권한을 사용할 수 없습니다. '/ etc / sudoers'를 편집하여 'sudo / bin / cat / etc / importantfile'을 사용할 수 있도록 할 수 있습니다. 'sudo / usr / bin / less / etc / importantfile'은 'v'를 사용하여 파일을 편집하거나 '!'를 사용할 수 있으므로 허용하지 않을 것입니다. 전체 수퍼 유저 권한으로 쉘을 시작합니다.

물론 사용자는 'sudo / bin / cat / etc / importantfile | 보안 위험없이 '낮음'을 사용하고 여전히 '낮음'을 사용합니다.


1

둘은 다릅니다. 텍스트를 보는 데 사용되는 less비표준 호출기 ( more표준)이고 cat표준 유틸리티는 모든 유형 및 수의 데이터 스트림을 하나로 연결하는 데 사용됩니다.

어떤 상황에서는 같은 일을하는 것처럼 보이지만 다른 유틸리티도 마찬가지입니다.


0

편의상. 고양이는 3 자, 그 이상은 4 자입니다. 타이핑 고양이는 왼손 만 필요합니다.


1
왜 왼손 만 사용하는 것이 유리합니까? 터미널에서 마우스를 사용하지 않습니다 ...
Bernhard

0

화면에 문자를 표시하는 방법과 관련하여 less수행 할 cat수있는 작업을 수행 할 수 있습니다. 그리고 훨씬 더.

: 그러나 어떤 경우에 고양이를 사용하는 아주 좋은 이유가
less그냥 너무 복잡 매우 간단한 문제가 그것을 던질은. cat맨 페이지에서 관련 옵션을 찾기가 어려운 옵션이 너무 많습니다 .


에 탭을 표시하고 싶으십니까 Makefile?

에서 man cat첫 번째 옵션이다 -A.
설명이 도움이되지 않습니다 : -vET.
그러나 긴 옵션 이름은 옳습니다 --show-all.

그리고 cat -A Makefile내가 필요한 것을 수행합니다.


이제을 찾으십시오 less.


0

파이프와 파일에 대해 출력이 터미널 (tty)이 아닌 경우 'less'와 'more'는 모두 'cat'과 똑같이 작동합니다.

'cat'은 항상 유닉스 타입 시스템에 존재한다고 말하는 것이 안전하다고 생각합니다. 어떤 시스템에서든 '낮음'및 / 또는 '더 많음'의 존재는 예측하기 어렵습니다.

따라서 스크립트에서 페이지 매김 작업이 아닌 경우에만 Unix 유형 시스템에서 스크립트가 사용되는 위치에 'cat'이 있어야합니다.


1
글쎄, moreSingle Unix Specification에 의해 요구되는 것을 볼 수 있다고 가정하는 것이 안전합니다 .
Kusalananda

슬프게도, 그것은 그렇게 지시 될 수 있지만, 내 경험상 항상 존재하는 것은 아닙니다. 유닉스라고 주장하지 않는 많은 유닉스 계열 시스템이 있다는 점은 주목할 가치가 있습니다. 나는 a less또는 a more가 존재할 것이라고 확신 할 수 있다고 생각하지만, 특정 것을 신뢰할 수 없거나 '진정한'구현이라고 생각합니다. 최소한의 가벼운 버전입니다.
user208007

-1

grep을 통한 배관 고양이가 유용합니다 :

cat <filename> | grep -i "string of interest"

4
아니 그 언급 grep인수로 파일 이름을 소요하거나 리디렉션을 사용할 수 있습니다. 파이프는 비싸다.
Chris Down

25
축하합니다, 당신은 '무용 한 고양이 사용'상을 수상했습니다!
ThatGraemeGuy

4
@TimKennedy- "당신이있을 때 less"는 질문 제목에 있습니다 ...
Chris Down

5
공감. 나는 이것을 정기적으로한다. 다른 검색어에 대해 파일을 여러 번 grep하려는 경우 더 쉽습니다. grep wants grep [search term] [filename]따라서 터미널 기록을 사용하는 경우 검색어를 편집하기가 더 어려워집니다. grep으로 파이핑하면 검색어가 마지막 줄이며 편집하기가 더 쉽습니다.
가짜 이름

10
cat: < [filename] grep [search term]및 을 사용하지 않고도 원하는 순서를 계속 가질 수 있습니다 < filename tail -n 1000 | grep pattern. 리디렉션은 명령 줄의 어느 곳으로나 갈 수 있습니다.
camh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.