一: cat命令
cat (concatenate)是命令列玩家首先必須學習的命令之一,他通常用於讀取,顯示和拼接檔案,不過cat 的能力遠不止如此,用一行命令將來自標準輸入以及檔案的資料結合起來,這可是個讓人撓頭的難題。來看看cat的基本用法和進階用法
(1)用 cat 讀取檔案內容的一般寫法是:
$ cat file1 file2 file2
這個命令將作為命令列的參數的檔案內容拼接在一起。
列印單個檔案的內容:
列印多個檔案的內容:
類似的我們也可以用cat將來自輸入檔案的內容和標準輸入拼接在一起,將stdin和另一個檔案中的資料結合起來。方法如下:
$ echo "Text through stdin" | cat - file.txt
例:
在上面的代碼中,- 被作為stdin文本的檔案名稱
(2) cat的其他用法:
a) 擺脫多餘的空白行
有時候文字檔中可能包含多處連續的空白行。如果你需要刪除這些額外的空白行,則可以使用下面的用法:
$ cat -s file
例:
此外,有時候為了區分多個空格和定位字元,可以使用cat的-T參數,使得指令碼裡的定位字元都變為^|, 這樣方便調試
b) 顯示行號(-n參數)
使用cat 命令的-n選項會在輸出的每一行內容之前加上行號。別擔心,cat命令絕對不會修改你的檔案,他只是根據使用者提供的選項在stdout中產生一個修改過的輸出而已,例如:
注意:-n 甚至會為空白行加上行號。如果你想跳過空白行,那麼可以使用選項-b。
二:錄製並回放終端會話
當你需要為別人在終端上示範某些操作或是需要準備一個命令列教程時,通常得一邊手動輸入命令一邊示範,或者也可以錄製一段螢幕示範視頻,然後再回放出來,其實也有其他的實現方法,利用script和scriptreplay命令,我們可以錄製命令的次序和時序,將相關資料記錄在文字檔中。利用這些檔案,其他人可以在終端回放並查看命令的輸出。
例:
開始錄製終端會話
$ script -t 2> timing.log -a output.session
type commands
.....
exit
兩個設定檔被當做script命令的參數。其中一個檔案(timing.log)勇於儲存時序資訊,描述每一個命令在何時運行;另一個檔案(output.session) 用於儲存命令輸出。 -t選項勇於將時序資料匯入stderr。 2> 則勇於將stderr匯入到timing.log.
利用這個兩個檔案 timing.log和output.session,我們可以按照下面的方法回放命令執行過程:
$ scriptreplay timing.log output.session #按播放命令順序輸出