Linux 中的 Cat 命令——用 Bash 示例解釋連接
Linux 中的 Cat 代表串聯(lián)(將事物合并在一起),是最有用和最通用的 Linux 命令之一。雖然不像真正的貓那樣可愛可愛,但 Linuxcat
命令可用于支持使用字符串、文件和輸出的許多操作。
cat 命令具有涉及文本文件的三個主要目的:
- 創(chuàng)造
- 讀取/顯示
- 更新/修改
我們將依次介紹其中的每一個,以顯示與每個操作相關(guān)的命令和選項(xiàng)。
入門
首先,讓我們創(chuàng)建幾個名為 foo.txt 和 spam.txt 的文件。
cat > foo.txt
讓我們從使用 Linux 命令行中的命令創(chuàng)建 foo.txt 開始。
警告:如果已經(jīng)有一個名為 foo.txt 的文件,cat
使用 > 運(yùn)算符的命令將覆蓋它。
從這里提示將顯示一個換行符,允許我們輸入我們想要的文本。對于這個例子,我們將使用:
FILE 1
foo
bar
baz
要返回命令行并創(chuàng)建文本文件,我們使用 CTRL + D。
現(xiàn)在讓我們創(chuàng)建 spam.txtcat > spam.txt
并輸入以下內(nèi)容:
FILE 2
spam
ham
eggs
如果我們想在這些文件中附加或添加更多文本,我們將使用cat >> FILENAME
并輸入我們想要使用的文本。
請注意,>> 運(yùn)算符用于追加,而不是 > 運(yùn)算符。
我們不必打開文本編輯器,而是能夠從命令行創(chuàng)建一個快速簡單的文本文件,從而節(jié)省了我們的時間和精力。
本節(jié)的主要內(nèi)容是我們用于cat > FILENAME
創(chuàng)建或覆蓋文件。此外,我們可以使用cat >> FILENAME
附加到已經(jīng)存在的文件。然后在輸入我們想要的文本后,我們使用 CTRL + D 退出編輯器,返回命令行并創(chuàng)建文件。
閱讀彩虹
現(xiàn)在我們已經(jīng)創(chuàng)建了一些東西,讓我們來看看我們做了什么。
請注意,我們在以下命令中沒有 > 或 >> 運(yùn)算符,只有 cat 和文件名。
該命令cat foo.txt
將顯示以下內(nèi)容:
FILE 1
foo
bar
baz
所以cat foo.txt
讓我們讀取文件,但讓我們看看我們還能做些什么。
假設(shè)我們想弄清楚我們正在處理的文件有多少行。為此, -n 選項(xiàng)會派上用場。
使用命令cat -n foo.txt
我們可以看到我們的文件有多長:
1 FILE 1
2 foo
3 bar
4 baz
使用 -n 我們可以了解我們正在使用的文件有多少行。當(dāng)我們迭代一個固定長度的文件時,這可以派上用場。
連接文件
好的,所以我們已經(jīng)看到 cat 可以創(chuàng)建和顯示文件,但是連接(組合)它們呢?
在本例中,我們將使用文件 foo.txt 和 spam.txt。如果我們想看一看,我們可以同時查看兩個文件的內(nèi)容。我們將再次使用 cat 命令,這次使用cat foo.txt spam.txt
.
cat foo.txt spam.txt
結(jié)果如下:
FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs
請注意,以上僅顯示這兩個文件。此時我們還沒有將它們連接到一個新文件中。
要將文件連接到我們想要使用cat foo.txt spam.txt > fooSpam.txt
的新文件中,這會將結(jié)果提供給新文件 fooSpam.txt。
使用cat fooSpam.txt
將以下內(nèi)容輸出到終端:
FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs
當(dāng)我們想要將兩個以上的文件連接成一個新文件時,此命令也很有用。
這里的要點(diǎn)是我們可以使用cat FILENAME1 FILENAME 2
.
此外,我們可以使用命令將多個文件連接到一個文件中 ?cat FILENAME1 FILENAME 2 > FILENAME3
。
與貓有關(guān)的其他有趣的事情
假設(shè)我們正在處理一個文件,并且由于某種原因在文件結(jié)束之前我們不斷收到錯誤 - 看起來它的行數(shù)可能比我們預(yù)期的要多。
為了進(jìn)一步研究該文件并可能解決我們的問題,我們可以使用 -A 開關(guān)。-A 選項(xiàng)將向我們顯示行以 $ 結(jié)尾的位置,它將向我們顯示帶有 ^I 的制表符,它還顯示其他非打印字符。
如果我們正在查看一個不可打印文本文件的示例,cat nonPrintExample.txt
我們可能會得到如下內(nèi)容:
這沒關(guān)系,但可能無法告訴我們可能導(dǎo)致我們出現(xiàn)問題的字符或字符串的完整故事。
而cat -A nonPrintExample.txt
可能會給我們更多有用的輸出:
^I^I$
$
^L$
$
^G^H^H^H^Y^I^N^O^P^@$
^@^@^[g^[f^[d^[g^[6^[5^[4^[6^[=$
$
$
^X$
在這里,我們可以更清楚地表示制表符、換行符、回車符和其他字符之間可能發(fā)生的情況。
這里的要點(diǎn)是 cat -A FILENAME 可以告訴我們有關(guān)我們正在使用的文件的更深入的詳細(xì)信息。
本文應(yīng)該讓您對 cat 命令、它可以做什么以及它的功能有一個很好的概述。