Có bao giờ một lý do để sử dụng 'cat` khi bạn có` less` không?


59

Tôi đã từng sử dụng catđể xem các tập tin. Sau đó, tôi đã học được rằng lessthường là tốt hơn, và là phải nếu tập tin dài hơn vài chục hàng.

Câu hỏi của tôi: Có bao giờ một lý do để sử dụng catthay vì less? Có bất kỳ tình huống mà catmột giải pháp tốt hơn?


17
lesscatgiải quyết các vấn đề khác nhau và chúng đều tốt hơn các vấn đề khác trong lĩnh vực vấn đề của riêng chúng
David Heffernan

2
Tôi chỉ sử dụng catđể chuyển đầu ra của nó vào lesssau đó.
FUZxxl

1
Tôi thường sử dụng catđể in các tệp rất ngắn lên bàn điều khiển, các tệp trong /proc/syslà ứng cử viên rất tốt. Bằng cách này tôi có thể xem nội dung của nhiều tệp cùng một lúc.
Feuermurmel

Câu trả lời:


20

Cá nhân tôi thích view nội dung tĩnh hoặc tail -fcho nội dung động.

Điều này không trả lời câu hỏi của bạn, mặc dù. Có một câu nói "tại sao sử dụng nhiều hơn nếu bạn có ít hơn" ;-)

Nhưng có những trường hợp tôi thích mèo hơn: tôi thường làm việc với X11-windows. Các cửa sổ này có bộ đệm cuộn có thể được đặt thành hàng trăm dòng.

Thực hiện catcho - giả sử 200 dòng và sau đó sử dụng chuột với thanh cuộn sẽ thoải mái hơn với tôi so với sử dụng lesstrong những trường hợp này.


4
Ý viewbạn là bình thường vim -R, hay bạn có cái gì khác với cái tên đó?
manatwork

Không - chỉ vi (hoặc vim) ở chế độ chỉ đọc. CentOS đặt bí danh theo mặc định. Điều này sẽ không kích hoạt HIDS khi xem tệp trong thư mục được bảo mật.
Nils

2
less +Flàm những gì tail -fkhông.
huyền thoại2k

2
Thật ra, viewkhông phải là bí danh; đó là một liên kết (đến vihoặc vim). vinhìn vào argv[0]khi nó bắt đầu (để xem tên nó được gọi bên dưới) và, nếu đó là viewhoặc rview, nó đặt chế độ chỉ đọc (như thể bạn đã gõ vim -R).
G-Man

91

Mặc dù cả hai lệnh đều cho phép bạn xem nội dung của tệp, mục đích ban đầu của chúng khá khác nhau.

ít mở rộng khả năng của nhiều hơn . Cái sau được tạo để xem nội dung của một tệp một lần. ít thêm các tính năng như chuyển động lùi và quản lý bộ nhớ tốt hơn (không cần đọc toàn bộ tệp trước khi có thể xem các dòng đầu tiên).

mèo nối các tập tin và in kết quả trên đầu ra tiêu chuẩn. Nếu bạn chỉ cung cấp một tệp, bạn sẽ thấy nội dung của tệp đó. Nó trở nên 'mạnh mẽ' khi bạn cung cấp nhiều tệp. Một ví dụ điển hình là sự kết hợp giữa tách và mèo. Lệnh đầu tiên sẽ chia một tệp lớn thành các phần nhỏ. Phần thứ hai sau đó sẽ ghép các phần nhỏ thành một tệp duy nhất.

Quay lại câu hỏi của bạn, mèo sẽ được ưu tiên trong một tập lệnh tự trị yêu cầu các tệp phải được đọc hoàn toàn (hoặc nối) mà không cần tương tác. Về mặt xem tập tin, tôi nghĩ đó là một câu hỏi về hương vị.


4
lessluôn luôn cho phép tìm kiếm trong tập tin mà catkhông.
Bernhard

@Bernhard: Còn việc thực hiện grep trên đầu ra của mèo thì sao?
dùng3527975

23

Tôi thường sử dụng catkhi tôi cần gõ một lệnh dựa trên một cái gì đó trong tệp. catthuận tiện hơn vì bạn có thể xem tệp (nếu nó nhỏ) trong khi bạn có quyền truy cập vào dấu nhắc trình bao. Nó cũng cho phép lót ống.


3
Đối với một tệp, chuyển hướng đầu vào tiêu chuẩn cũng có thể và thường được ưa thích hơn.
AProgrammer

17
Có bất kỳ tình huống mà mèo là một giải pháp tốt hơn?

Khi bạn đang xử lý nhiều hơn một tệp đó và muốn ghép chúng lại.

Từ trang người đàn ông:

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

15

Có những người tranh luận dữ dội rằng mục đích duy nhất của catlà để con mèo file enate. Đối với mỗi sử dụng khác, có more(hoặc less).

Nhưng điều này không tính đến một thực tế khá quan trọng: catlà một ký tự ít hơn để gõ. Tôi sử dụng những lệnh đó thường xuyên đến mức một nhân vật ít hơn là không có trí tuệ.

Một lý do khác là khi bạn muốn tạo một tập tin. Tôi thường sao chép và dán văn bản từ web vào một tệp như thế này (dấu nhắc lệnh được hiển thị):

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

Đó là, tôi mở một tệp filenameđể truy cập ghi, dán nội dung và đóng luồng bằng cách nhấn Ctrl- D. Không lessphải cũng không morethể làm điều đó, và nó nhanh hơn việc mở một trình soạn thảo.


4
Nếu bạn sử dụng zsh làm shell, bạn có thể thiết lập nó để $<filename(nơi $là dấu nhắc) gọi $ PAGER với stdin được kết nối với filename. Đó là thậm chí ít ký tự để gõ hơn cat.
Kevin Cathcart

@Kevin Rất vui được biết nhưng tôi là người dùng bash.
Konrad Rudolph

2
Trên Mac OS X, tôi sử dụng pbpaste > filenamevà tôi tin rằng X có một cái gì đó tương tự. Tôi vẫn sử dụng catđể tạo tập tin nhanh, chỉ không để dán.
cobbal

@cobbal Hehe, tôi chưa bao giờ nghĩ về điều đó mặc dù tôi sử dụng pbcopy/ pbpastecho các mục đích khác.
Konrad Rudolph

1
Đó thực sự là hai ký tự ít hơn - bạn phải nhấn qđể thoát less: D
Martin von Wittich

9

Đôi khi bạn không muốn phân trang mà lesschỉ muốn tập tin hoàn chỉnh để bạn sử dụng cat.


4

Tôi sử dụng catđể grep(nhiều) tập tin.

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

Tôi biết grephỗ trợ tên tệp, nhưng nếu bạn đang grepping cùng một tệp cho các cụm từ tìm kiếm khác nhau, việc chỉnh sửa lệnh trong đó thuật ngữ tìm kiếm là điều cuối cùng trên dòng dễ dàng hơn sau đó phải nhập lại ctrl + phím mũi tên.


4

cat có thể được sử dụng để ghép nhiều tệp nhị phân thành một tệp lớn:

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

3

Tôi sử dụng less -FX, điều này làm cho lesshành vi giống như catkhi một tập tin có thể được hiển thị trên một màn hình. Từ less(1)trang hướng dẫn:

-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

Tôi đoán, vì sự phổ biến của các biến thể Unix bây giờ, nhiều người không phải quản trị hệ thống của họ (với sự báo thù). Khi mọi thứ trở nên khó khăn, bạn có thể khởi động lại và vào hệ thống của mình trong môi trường bị hạn chế.

Bạn nhận được một dòng lệnh và truy cập vào một tập hợp nhỏ những gì được coi là các lệnh hữu ích nhỏ và thường được liên kết tĩnh. Bạn có thể nhận vi như một trình soạn thảo hoặc thậm chí là ed nhỏ hơn, nhưng không phải là emacs hoặc vim. Bạn sẽ có được con mèo, nhưng không ít hơn. Ý tưởng là cung cấp cho bạn đủ công cụ để sửa chữa hệ thống của bạn mà không mất quá nhiều tài nguyên vì những tài nguyên đó có thể được cấu hình không chính xác hoặc tất cả đã sử dụng hết. lệnh ít phản ánh những trường hợp đó là thừa.


2

lesskhông được cài đặt sẵn trên tất cả các bản phân phối GNU / Linux. (ví dụ Gentoo) catcó lẽ ở khắp mọi nơi.


2

Các catở lại trên màn hình. Mọi thứ đều biến lessmất.

Được làm rõ bởi / cho Volker Siegel:

Đầu ra của catở lại trên màn hình. Tất cả mọi thứ được hiển thị bằng cách biến lessmất sau khi đóng cửa.


1

Có thể có vấn đề với sự leo thang đặc quyền, vì trong 'ít', bạn có thể nhấn 'v' để chỉnh sửa tệp hoặc '!' để gửi một lệnh shell.

Bạn có thể muốn cho phép một số người dùng xem một tệp mà siêu người dùng chỉ có thể đọc được, nhưng không cho phép những người dùng đó chỉnh sửa tệp hoặc sử dụng các đặc quyền siêu người dùng nói chung. Bạn có thể làm điều này bằng cách chỉnh sửa '/ etc / sudoers' để cho phép họ sử dụng 'sudo / bin / cat / etc / Quan trọng'. Bạn sẽ không muốn cho phép 'sudo / usr / bin / less / etc / Quan trọng', vì họ có thể sử dụng 'v' để chỉnh sửa tệp hoặc sử dụng '!' để khởi chạy một shell với các đặc quyền superuser đầy đủ.

Tất nhiên, người dùng có thể sử dụng 'sudo / bin / cat / etc / Quan trọng | ít hơn 'và vẫn sử dụng' ít hơn, không có rủi ro bảo mật.


1

Hai là khác nhau. lesslà một máy nhắn tin không chuẩn ( morelà một máy nhắn tin tiêu chuẩn), được sử dụng để xem văn bản, trong khi catlà một tiện ích tiêu chuẩn, được sử dụng để nối bất kỳ loại và số lượng luồng dữ liệu thành một.

Chúng có thể làm điều tương tự trong một số trường hợp, nhưng sau đó một lần nữa, các tiện ích khác cũng vậy.


0

Cho thuận tiện. mèo có 3 ký tự trong khi nhiều hơn / ít hơn có 4 ký tự. Và gõ mèo chỉ yêu cầu tay trái của bạn mà thôi.


1
Tại sao chỉ sử dụng tay trái của bạn là một lợi thế? Tôi không sử dụng chuột trên thiết bị đầu cuối ...
Bernhard

0

Về cách hiển thị các ký tự trên màn hình, lesscó thể làm những gì catcó thể làm; Và nhiều hơn nữa.

Nhưng có một lý do rất tốt để sử dụng mèo cho một số trường hợp:
lesschỉ là quá phức tạp để ném nó vào những vấn đề rất đơn giản. Tôi có rất nhiều lựa chọn mà thật khó để tìm thấy catnhững cái liên quan trong trang người đàn ông.


Bạn muốn hiển thị các tab trong một Makefile?

Trong man cat, tùy chọn đầu tiên là -A.
Mô tả không hữu ích : -vET.
Nhưng tên tùy chọn dài nghe có vẻ đúng : --show-all.

cat -A Makefilelàm những gì tôi cần.


Bây giờ, đi tìm rằng cho less.


0

Cả 'ít' và 'nhiều hơn' sẽ hoạt động chính xác như 'mèo' nếu đầu ra không phải là thiết bị đầu cuối (tty), như đối với các đường ống và tệp, cả hai sẽ trở lại không phân trang.

Tôi nghĩ thật an toàn khi nói rằng 'con mèo' luôn có mặt trên bất kỳ hệ thống kiểu Unix nào bạn từng tìm thấy. Sự hiện diện của 'ít' và / hoặc 'nhiều hơn' trên bất kỳ hệ thống nào là ít dự đoán hơn.

Do đó, trong các tập lệnh, nếu bạn chỉ cần một thao tác không phân trang, 'mèo' chắc chắn sẽ có mặt ở bất cứ nơi nào tập lệnh của bạn được sử dụng trên hệ thống kiểu Unix.


1
Chà, thật an toàn khi cho rằng nó moresẽ khả dụng, được xem là bắt buộc bởi Thông số kỹ thuật Unix đơn.
Kusalananda

Đáng buồn thay, trong khi nó có thể được ủy quyền như vậy, nhưng theo kinh nghiệm của tôi, nó không phải lúc nào cũng có mặt. Điều đáng chú ý là có một số hệ thống giống Unix không tự nhận là Unix. Tôi nghĩ rằng người ta có thể khá tin tưởng rằng một lesshoặc một moresẽ có mặt, nhưng tôi nghĩ rằng người ta không thể tin tưởng một người cụ thể, cũng không phải là một triển khai 'đúng' ... thường thì người ta có biệt danh với nhau, đôi khi họ ' lại là một phiên bản nhẹ tối thiểu.
dùng208007

-1

Đường ống mèo qua grep rất hữu ích:

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

4
Không đề cập đến việc greplấy tên tệp làm đối số hoặc bạn có thể sử dụng chuyển hướng. Ống đắt tiền.
Chris Xuống

25
Xin chúc mừng, bạn đã giành được giải thưởng 'sử dụng mèo vô dụng'!
ThatGraemeGuy

4
@TimKennedy - "khi bạn có less" nằm trong tiêu đề câu hỏi ...
Chris Down

5
Nâng cao. Tôi làm điều này thường xuyên. Nếu tôi muốn grep một tệp nhiều lần cho các cụm từ tìm kiếm khác nhau, việc này dễ dàng hơn. grep muốn grep [search term] [filename]Do đó, việc chỉnh sửa cụm từ tìm kiếm sẽ rất khó khăn nếu tôi đang sử dụng lịch sử thiết bị đầu cuối. Bằng cách chuyển sang grep, thuật ngữ tìm kiếm là điều cuối cùng trên dòng và dễ dàng chỉnh sửa hơn.
Tên giả

10
Bạn vẫn có thể có thứ tự bạn muốn mà không cần sử dụng cat: < [filename] grep [search term]< filename tail -n 1000 | grep pattern. Chuyển hướng có thể đi khá nhiều bất cứ nơi nào trên một dòng lệnh.
camh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.