如何在 Linux 上正確使用 cat 命令
cat 可能是您將在 Linux 上首先學(xué)習(xí)的命令之一。以下是在 Linux 上使用 cat 的正確方法(和錯(cuò)誤方法)。
您將在 Linux 上使用的最基本的命令之一是 cat。乍一看似乎很神秘,但實(shí)際上使用起來(lái)很簡(jiǎn)單。
下面介紹如何在 Linux 上使用 cat 命令,以及何時(shí)不使用它。
什么是 cat?
cat 是一個(gè)非常古老的實(shí)用程序,可以追溯到 Unix 的原始實(shí)現(xiàn)。這個(gè)名字可能看起來(lái)很奇怪,但它是“連接 concatenate”的縮寫。這是將一堆東西粘在一起的花哨術(shù)語(yǔ)。在這種情況下,“東西”是指文件。cat 是將一堆文本文件粘在一起的實(shí)用程序。大多數(shù)人使用它將文件打印到屏幕或另一個(gè)文件中。
GNU 實(shí)現(xiàn)是大多數(shù) Linux 發(fā)行版上默認(rèn)安裝的 coreutils 軟件包的一部分,但 BusyBox 上也有一個(gè)在小型或?qū)崟r(shí)發(fā)行版上很常見(jiàn)的版本。
將 cat 與標(biāo)準(zhǔn) I/O 一起使用
cat 對(duì)標(biāo)準(zhǔn)輸入和輸出進(jìn)行操作。這意味著它將接受來(lái)自鍵盤或使用 I/O 重定向的其他程序的文本輸入,并且您可以使用管道將其輸出與另一個(gè)程序一起使用:
cat | some_program
請(qǐng)記住,許多其他 Linux 命令也接受標(biāo)準(zhǔn) I/O,因此您可能不需要在管道中實(shí)際使用 cat。稍后再談。
它還接受來(lái)自命令行的文件作為參數(shù)。您可以使用以下命令將整個(gè)文件打印到終端:
cat file.txt
您還可以使用 cat 打印多個(gè)文件:
cat file1 file2
這是 cat 的“連接”部分。
自行調(diào)用, cat 將等待您輸入文本并按Enter,然后回顯您在終端輸入的任何內(nèi)容,直到您按Ctrl + D。您還可以使用重定向運(yùn)算符將文本重定向到文件中:
cat > some_file
cat 的低效率使用
鑒于 cat 是一個(gè)如此基本的實(shí)用程序,很容易將它與管道一起使用。Randal Schwartz 是以 Perl 編程方面的杰出貢獻(xiàn)而聞名的人,他創(chuàng)建了Useless use of cat (UUOC)“獎(jiǎng)”(如Era Eriksson 的主頁(yè)上所見(jiàn)),并且偶爾會(huì)在 Usenet 上分發(fā)它們。
如果腳本中使用 cat 命令的代碼可以用”重定向”代替,你就可以稱其為UUOC。因?yàn)橹囟ㄏ虻男室冗\(yùn)行一個(gè)外部命令要高。比如:
cat file | tr -d 'xyz'
象cat file | somecommand這種用法,現(xiàn)被稱為UUOC,是一種效率低的用法。
UUOC 的主要條件是使用 cat 將輸出通過(guò)管道傳輸?shù)揭呀?jīng)將標(biāo)準(zhǔn)輸入或文件作為參數(shù)的命令。由于有這么多 Unix 和 Linux 命令這樣做,使用 cat 管道標(biāo)準(zhǔn)輸出或單個(gè)文件是浪費(fèi)時(shí)間。您應(yīng)該查看手冊(cè)頁(yè)以了解您想要使用的任何命令,并確保它接受標(biāo)準(zhǔn)輸入,這樣您就不會(huì)“贏得”這個(gè)獎(jiǎng)項(xiàng)。
如果您要查看長(zhǎng)文件,最好使用像 Most或文本編輯器這樣的閱讀工具。
cat:一個(gè)基本但不可或缺的 Linux 工具
cat 可能是一個(gè)基本命令,但就像許多基本的 Linux 工具一樣,它可以方便地打印文本文件并將輸出發(fā)送到其他程序。如果您想在終端中添加更多顏色,您可能需要考慮 lolcat,這是另一個(gè)基于過(guò)濾器的程序,可在終端中生成彩虹色文本。