關(guān)于 tail 命令的幾個(gè)實(shí)用例子
顧名思義,tail 命令輸出單個(gè)或多個(gè)文件的最后部分內(nèi)容。默認(rèn)情況下,tail 命令將會(huì)打印文件的最后 10 行內(nèi)容。在實(shí)際應(yīng)用中,我們經(jīng)常用它來(lái)實(shí)時(shí)讀取日志文件。
tail 命令的語(yǔ)法結(jié)構(gòu)如下所示:
作為演示,我們使用如下文件內(nèi)容來(lái)介紹 tail 命令:?
剛剛我們提到過(guò),tail 命令默認(rèn)會(huì)顯示文件的最后 10 行內(nèi)容,但是當(dāng)文件內(nèi)容總共不足 10 行時(shí),會(huì)顯示整個(gè)文件的內(nèi)容。當(dāng)然大多數(shù)情況下,我們不使用它的默認(rèn)行為,而是根據(jù)實(shí)際情況來(lái)選擇應(yīng)用。接下來(lái)我們根據(jù)例子來(lái)逐個(gè)介紹下。
1,使用 tail 命令打印文件的最后 x 行內(nèi)容
打印文件的最后 x 行內(nèi)容(而不是默認(rèn)的最后 10 行),可參考如下語(yǔ)法結(jié)構(gòu):
比如,查看文件的最后 5 行內(nèi)容:?
小提示:你也可以直接使用 tail -x 而不是 tail -n x 來(lái)顯示最后 x 行內(nèi)容。
2,打印從 x 行開(kāi)始往后的所有內(nèi)容
如果想要打印從 x 行開(kāi)始往后的所有內(nèi)容,可使用 +x 選項(xiàng),如下所示:
比如,我們的示例文檔,想要打印從第 7 行開(kāi)始的所有內(nèi)容,如下:
3,使用 tail 命令同時(shí)查看多個(gè)文件
使用 tail 命令可以同時(shí)查看多個(gè)文件。其語(yǔ)法結(jié)構(gòu)如下所示:
與 head 命令類(lèi)似,查看的各個(gè)文件名會(huì)顯示在輸出中。比如,我們想要查看 tiap.txt 和 sherlock.txt 的最后 3 行,如下所示:
提示,使用 -q 選項(xiàng)可以在輸出中不顯示文件名信息。
4,使用 tail 命令實(shí)時(shí)監(jiān)視文件
假設(shè)我們有一個(gè)文件,其內(nèi)容會(huì)實(shí)時(shí)增加(比如日志文件),tail 命令可以幫助我們實(shí)時(shí)查看新添加到文件中的內(nèi)容。這個(gè)功能可通過(guò)使用 -f 選項(xiàng)來(lái)實(shí)現(xiàn):
上述命令會(huì)首先顯示文件的最后 10 行內(nèi)容,然后當(dāng)文件有新的內(nèi)容增加時(shí),也會(huì)將新的內(nèi)容實(shí)時(shí)輸出到終端中。這個(gè)功能被廣泛用于讀取日志文件,這也可能是 tail 命令最常見(jiàn)的用法。
提示:如果使用 -F 選項(xiàng)代替 -f 選項(xiàng),tail 命令會(huì)等待輸入文件創(chuàng)建(如果不存在)后,在實(shí)時(shí)顯示文件的內(nèi)容。
5,在管道重定向中使用 tail 命令
tail 命令還可以結(jié)合??管道重定向???來(lái)使用。比如,假如在一個(gè)目錄中有許多文件,我們只想查看最后 3 個(gè)修改過(guò)的文件,那么可以按如下方式:
上述命令中,ls -lrt 按時(shí)間順序倒敘列出所有文件,然后通過(guò)管道重定向?qū)⑤敵鼋o到 tail 命令,tail 命令解析這個(gè)輸出,只顯示其最后的 3 行,這 3 行內(nèi)容就是我們所需要的最近 3 個(gè)修改的文件列表。
6,在 tail 命令的輸出中顯示行號(hào)
我們?cè)诓榭茨硞€(gè)文檔的時(shí)候,如果文檔中可以顯示行號(hào),那么對(duì)于我們來(lái)說(shuō)是非常友好的,比如我們想要查看當(dāng)前正在閱讀的在多少行,整個(gè)文件有多少行內(nèi)容,等等。
不過(guò),tail 命令并沒(méi)有內(nèi)置的顯示行號(hào)的功能。不過(guò)我們可以通過(guò)其他方式來(lái)實(shí)現(xiàn)這一功能,那就是通過(guò)使用 nl 命令以及管道重定向結(jié)合 tail 命令來(lái)實(shí)現(xiàn)。
nl 命令可以在文件內(nèi)容中顯示行號(hào),將其輸出通過(guò)管道重定向到 tail 命令中,就可以滿足我們的需求。如下所示: