在 Linux 中使用 cat 命令
cat
命令的用途不僅僅是顯示文件內(nèi)容。
cat
命令用于打印文本文件的文件內(nèi)容。至少,大多數(shù) Linux 用戶都是這么做的,而且沒有什么問題。
cat
實際上代表 “連接concatenate”,創(chuàng)建它是為了 合并文本文件。但只要有一個參數(shù),它就會打印文件內(nèi)容。因此,它是用戶在終端中讀取文件而無需任何其他選項的首選。
在 Linux 中使用 cat 命令
要使用 cat
命令,你必須遵循給定的命令語法:
cat [options] Filename(s)
這里:
[options]
用于修改cat
命令的默認(rèn)行為,例如使用-n
選項獲取每行的數(shù)字。Filename
是你輸入要使用的文件的文件名的位置。
為了簡單起見,我將在本指南中使用名為 Haruki.txt
的文本文件,其中包含以下文本行:
Hear the Wind Sing (1979)
Pinball, 1973 (1980)
A Wild Sheep Chase (1982)
Hard-Boiled Wonderland and the End of the World (1985)
Norwegian Wood (1987)
Dance Dance Dance (1990)
South of the Border, West of the Sun (1992)
The Wind-Up Bird Chronicle (1994)
Sputnik Sweetheart (1999)
Kafka on the Shore (2002)
After Dark (2004)
1Q84 (2009-2010)
Colorless Tsukuru Tazaki and His Years of Pilgrimage (2013)
Men Without Women (2014)
Killing Commendatore (2017)
那么,在沒有任何選項的情況下使用時,輸出會是什么? 好吧,讓我們看一下:
cat Haruki.txt
use cat command in Linux
正如你所看到的,它打印了整個文本文件!
但你可以做的遠(yuǎn)不止這些。讓我向你展示一些實際例子。
1、創(chuàng)建新文件
大多數(shù) Linux 用戶使用 touch
命令來 創(chuàng)建新文件,但使用 cat
命令也可以完成相同的操作!
在這種場景下,cat
命令比 touch
命令有一個優(yōu)勢,因為你可以在創(chuàng)建文件時向文件添加文本。聽起來很酷。不是嗎?
為此,你需要使用 cat
命令,將文件名附加到 >
后面,如下所示:
cat > Filename
例如,在這里,我創(chuàng)建了一個名為 NewFile.txt
的文件:
cat > NewFile.txt
當(dāng)你這樣做了,就會有一個閃爍的光標(biāo)要求你寫一些東西,最后,你可以使用 Ctrl + d
來保存更改。
如果你想創(chuàng)建一個空文件,則只需按 Ctrl + d
而不進(jìn)行任何更改。
Using cat command
這就好了!現(xiàn)在,你可以使用 ls
命令來顯示 當(dāng)前工作目錄的內(nèi)容:
use the ls command to list the contents of the current working directory
2、將文件內(nèi)容復(fù)制到另一個文件
考慮一個場景,你要將 FileA
的文件內(nèi)容重定向到 FileB
。
當(dāng)然,你可以復(fù)制和粘貼。但是如果有幾百或幾千行怎么辦?
簡單。你可以使用 cat
命令來重定向數(shù)據(jù)流。為此,你必須遵循給定的命令語法:
cat FileA > FileB
?? 如果使用上述語法重定向文件內(nèi)容,它將刪除
FileB
的文件內(nèi)容,然后重定向FileA
的文件內(nèi)容。
例如,我將使用兩個文本文件 FileA
和 FileB
,其中包含以下內(nèi)容:
check the file contents using the cat command
現(xiàn)在,如果我使用從 FileA
到 FileB
的重定向,它將刪除 FileB
的數(shù)據(jù),然后重定向 FileA
的數(shù)據(jù):
cat FileA > FileB
redirect the file content using the cat command
同樣,你可以對多個文件執(zhí)行相同的操作:
cat FileA FileB > FileC
redirect file content of multiple files using the cat command
可以看到,上面的命令刪除了 FileC
的數(shù)據(jù),然后重定向了 FileA
和 FileB
的數(shù)據(jù)。
3、將一個文件的內(nèi)容附加到另一個文件
有時你想要將數(shù)據(jù)附加到現(xiàn)有數(shù)據(jù),在這種情況下,你必須使用 >>
而不是單個 >
:
cat FileA >> FileB
例如,在這里,我將把兩個文件 FileA
和 FileB
重定向到 FileC
:
cat FileA.txt FileB.txt >> FileC.txt
redirect file content without overriding using the cat command
如你所見,它保留了 FileC.txt
的數(shù)據(jù),并將數(shù)據(jù)附加在末尾。
?? 你可以使用
>>
向現(xiàn)有文件添加新行。使用cat >> filename
并開始添加所需的文本,最后使用Ctrl+D
保存更改。
4、顯示行數(shù)
你可能會遇到這樣的情況,你想查看行數(shù),這可以使用 -n
選項來實現(xiàn):
cat -n File
例如,在這里,我將 -n
選項與 Haruki.txt
一起使用:
get the number of the lines in the cat command
5、刪除空行
在文本文檔中留下多個空白行? cat
命令將為你修復(fù)它!
為此,你所要做的就是使用 -s
標(biāo)志。
但使用 -s
標(biāo)志有一個缺點。你仍然留有一行空白:
remove blank lines with the cat command
正如你所看到的,它有效,但結(jié)果接近預(yù)期。
那么如何刪除所有空行呢? 通過管道將其傳遞給 grep
命令:
cat File | grep -v '^$'
這里,-v
標(biāo)志將根據(jù)指定的模式過濾掉結(jié)果,'^$'
是匹配空行的正則表達(dá)式。
以下是我在 Haruki.txt
上使用它時的結(jié)果:
cat Haruki.txt | grep -v '^$'
remove all the blank lines in text files using the cat command piped with grep regular expression
當(dāng)獲得完美的輸出,你可以將其重定向到文件以保存輸出:
cat Haruki.txt | grep -v '^$' > File
save output of cat command by redirection
這就是你到目前為止所學(xué)到的
以下是我在本教程中解釋的內(nèi)容的快速摘要:
命令 | 描述 |
| 將文件內(nèi)容打印到終端。 |
| 創(chuàng)建一個新文件。 |
|
|
|
|
| 顯示行數(shù),同時省略文件的文件內(nèi)容。 |
| 將 |
| 將 |
| 從文件中刪除所有空行。 |
??? 練習(xí)時間
如果你學(xué)到了新東西,用不同的可能性來執(zhí)行它是最好的記憶方式。
為此,你可以使用 cat
命令進(jìn)行一些簡單的練習(xí)。它們將是超級基本的,就像 cat
一樣是最基本的命令之一。
出于練習(xí)目的,你可以 使用 GitHub 上的文本文件。
- 如何使用
cat
命令創(chuàng)建空文件? - 將
cat
命令生成的輸出重定向到新文件IF.txt
- 能否將三個或更多文件輸入重定向到一個文件? 如果是,該如何做?