情景l(fā)inux—不曾了解的cat用法

情景

cat是linux命令中最為基礎(chǔ)的命令之一,它是“concatenate”(連接)的簡寫,作用概述是concatenate and print files,即:連接和查看文件內(nèi)容。

常見用法有:

  • 查看單個文件:cat file1
  • 順序查看多個文件:cat file1 file2 ...

一般cat會結(jié)合重定向符號(重寫>、追加>>)使用,如常見的用法有:

  • 將一個文件的內(nèi)容追加到另一個文件中:cat file1 >> file2
  • 合并多個文件產(chǎn)生新文件:cat file1 file2 > newfile
  • 用鍵盤輸入創(chuàng)建一個新文件:cat << EOF > file3
$ cat << EOF > file3
> a
> b
> c
> EOF

>是命令行的提示符,不是你需要輸入的內(nèi)容。當(dāng)輸入“EOF”按回車后命令自動結(jié)束。

$ cat file3
a
b
c

cat命令本身也支持參數(shù),但用法簡單,功能單一,感興趣的話可以自行man cat。
cat還可以通過管道符“|”連接其它命令,但許多時候cat并不是必需的:
想知道文件的行數(shù),可以使用cat file1 | wc -l,但wc -l file1一樣可以做到。
想過濾文件中特定的字符串,可以使用cat file2 | grep "some string",但grep "some string" file2一樣可以做到。

突破

在搜索引擎項目工作時,看到過研發(fā)工程師在調(diào)試問題時這樣使用了cat——他們啟動服務(wù)后,使用了命令cat some_data.txt > /dev/null,雖然當(dāng)時沒有直接向他們請教原委,但這個命令給我留下了深刻的印象:

  1. /dev/null是linux的位桶文件,寫入它的內(nèi)容會永遠(yuǎn)丟失,從它那里什么也讀取不到。一般用法是想丟棄命令產(chǎn)生的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤時,通常使用command > /dev/null 2>&1,因此,cat some_data.txt > /dev/null似乎沒有任何效果。
  2. 當(dāng)時觀察到cat some_data.txt > /dev/null這個命令的執(zhí)行時間非常長,這說明了some_data.txt這個文件也足夠大。但第二次執(zhí)行這個命令時,執(zhí)行時間則大大縮減了。

由以上大致可以判斷出,該用法是為了將文件內(nèi)容導(dǎo)入到內(nèi)存中,以便需要使用文件內(nèi)容時能夠快速獲取。一般來說,從硬盤中讀取數(shù)據(jù)需要5ms到10ms的時間,而從內(nèi)存中讀取數(shù)據(jù)時通常只需要50ns到100ns的時間,這就是page cache(頁高速緩沖存儲器)的作用。

總結(jié)

這個經(jīng)歷給我的體會是,許多時候,我們認(rèn)為自己掌握了全部或絕大部分,而實際上,只是因為自己知道的太少,并且不認(rèn)為自己知道的太少——我們壓根不覺得是因為自己不知道。就像美國前國防部長拉姆斯菲爾德說過的那樣:

because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns - the ones we don't know we don't know.

我們有已知的已知,已知的未知,以及未知的未知。

相關(guān)鏈接

https://fulmicoton.com/posts/pagecache/
https://hoytech.com/vmtouch/
https://www.zhihu.com/question/28511196/answer/45604224

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容