Tôi đã thấy lệnh mèo xuất hiện trong một số nội dung trực tuyến và tôi tò mò cat
không biết mình đã làm gì và làm gì trong bối cảnh ai đó chỉ đang làm một số công cụ dòng lệnh đơn giản.
Tôi đã thấy lệnh mèo xuất hiện trong một số nội dung trực tuyến và tôi tò mò cat
không biết mình đã làm gì và làm gì trong bối cảnh ai đó chỉ đang làm một số công cụ dòng lệnh đơn giản.
Câu trả lời:
cat
Mục đích chính của con mèo là tập tin con mèo . cat file1 file2 ...
sẽ hiển thị các nội dung của file
, file2
và những người khác một sau khi khác, như thể các nội dung là trong một tập tin duy nhất. Xem trang hướng dẫn :
NAME
cat - concatenate and print files
Nó có nghĩa là để sử dụng trong đó:
một lệnh đích không thể đọc từ các tệp và bạn cần truyền nhiều tệp cho nó. Một ví dụ là tr
tiện ích. Thông thường, với một tệp, bạn sẽ làm:
tr < file
Nhưng với nhiều tệp, chuyển hướng không thể được sử dụng, vì vậy bạn phải làm:
cat file1 file2 ... | tr
wc
, in số đếm cho mỗi tệp, cùng với tên tệp, nơi bạn có thể muốn chỉ là tổng số, không có tên tệp.Hãy nhớ rằng hầu hết các lệnh bạn gặp ( grep
, sed
, awk
, sort
, ...) có thể đọc các tập tin hoàn toàn tốt đẹp.
Nếu bạn muốn xem nội dung của tệp, hãy sử dụng máy nhắn tin - less
và more
cả hai đều có khả năng trình bày các tệp để xem và thuận tiện hơn rất nhiều khi sử dụng.
cat
là một trong những lệnh được sử dụng thường xuyên nhất trên các hệ điều hành giống Unix. Nó có ba chức năng liên quan đến các tệp văn bản:
Cú pháp chung của mèo là:
cat [options] [filenames] [-] [filenames]
Việc sử dụng phổ biến nhất của mèo là đọc nội dung của các tệp và mèo thường là chương trình thuận tiện nhất cho mục đích này. Tất cả những gì cần thiết để mở tệp văn bản để xem trên màn hình hiển thị là nhập từ mèo theo sau là khoảng trắng và tên của tệp rồi nhấn phím ENTER. Ví dụ: phần sau đây sẽ hiển thị nội dung của tệp có tên file1:
cat file1
Vai trò thứ hai của mèo là nối. (Đây là nguồn gốc của tên tò mò của mèo.) Không có hiệu lực trên các tệp gốc.
Ví dụ: lệnh sau sẽ ghép các bản sao nội dung của ba tệp file1, file2 và file3:
cat file1 file2 file3
Nội dung của từng tập tin sẽ được hiển thị trên màn hình điều khiển. Đầu ra này có thể dễ dàng được chuyển hướng bằng cách sử dụng toán tử chuyển hướng đầu ra sang một tệp khác, chẳng hạn như tệp4, bằng cách sử dụng như sau:
cat file1 file2 file3 > file4
Nhờ nhận xét @muru : mèo có khả năng tạo các tệp mới tùy thuộc vào tính năng chuyển hướng vỏ chứ không phải chính nó
Đối với các tệp nhỏ, việc này thường dễ hơn sử dụng vi, gedit hoặc các trình soạn thảo văn bản khác. Nó được thực hiện bằng cách gõ cat theo sau là toán tử chuyển hướng đầu ra và tên của tệp sẽ được tạo, sau đó nhấn ENTERvà cuối cùng nhấn phím Ctrl& d.
Ví dụ: một tệp mới có tên file1 có thể được tạo bằng cách nhập
cat > file1
sau đó nhấn ENTERvà đồng thời nhấn phím Ctrl& d.
PS1: Nếu một tệp có tên file1 đã tồn tại, nó sẽ bị ghi đè
PS2: bạn có thể chắp thêm vào tệp đã thoát bằng cách sử dụng >>
ví dụ toán tử cat >> file1
Lệnh cat cũng có thể được sử dụng ( tùy thuộc vào tính năng chuyển hướng shell) để tạo một tệp mới và chuyển đến dữ liệu từ một tệp hiện có. Ví dụ: tạo một bản sao của tệp oldfile.txt
:
cat oldfile.txt > newfile.txt
Người giới thiệu:
cat
không tạo các tệp đó - shell là khi bạn sử dụng chuyển hướng. Bạn có thể đã làm tốt như vậy echo foo > file1
.
cat
những gì thực sự được thực hiện bởi một cái gì đó khác. Ví dụ, làm less file1 > file2
( grep '.*' file1 > file
hoặc awk 1 file1 > file2
hoặc ...) có tác dụng tương tự. Ditto cho 4. Đây chỉ là lạm dụng.
> file
và đưa ra kết quả tương tự, nhưng tôi không thể coi nó hợp lệ để làm điều đó với mèo?!
cat
không tạo tệp. Nói cat
tạo hoặc sao chép các tập tin chỉ là sai.
Nó có thể được sử dụng để hiển thị nội dung của một tập tin. Vd : cat "my file.txt"
. Bạn cũng có thể làm man cat
để cho bạn thấy các chi tiết về những gì cat
có thể được sử dụng cho.
Đây là một cách khác để tạo tập tin bằng cách sử dụng chuyển hướng shell (hoặc đường ống) và cat
:
cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF
cat << EOF
sẽ xuất các dòng sau cho đến khi EOF
gặp lại chuỗi . Sau đó >
( >>
) sẽ chuyển hướng đầu ra vào tệp foo.sh
. Ngoài ra, nếu bạn cần tạo một tệp dưới dạng root, bạn có thể dẫn đầu ra tới lệnh tee
( tee -a
), được thực hiện bằng lệnh sudo
:
cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
chmod +x
) nếu nó được tạo thành công ( &&
).$
) nên được thoát (với \
) trong đầu ra của cat
.
< <(cat file[12]) tr
cũng như<<<$(cat file[12]) tr
cả hai cách hoàn toàn hợp lệ để chuyển hướng nhiều tệp. Tất nhiên bạn cũng cầncat
điều đó, chỉ là đường ống không phải là cách duy nhất.