5-5 檔案相關指令- touch, cat, more, less
檔案相關指令- touch, cat, more, less
本單元將說明新建空白檔案、如何觀看檔案內容,以及當檔案內容大於一頁可顯示範圍時的翻頁處理指令,活用這些指令將對日後管理工作有很大的助益。
觀看檔案內容- cat
想觀看一個檔案的內容時,可使用 cat 指令加上欲觀看的檔名,命令規格為:
cat [選項] 檔案名稱
例如:想要觀看 /etc/inittab 檔案內容時,可以執行以下指令:
cat /etc/inittab
想要觀看 /var/log/messages 檔案內容時,可以執行以下指令:
cat /var/log/messages
利用 cat 指令搭配大於符號「>」來產生文字檔,「>」符號會將輸入的文字資料輸出至右邊的檔案中:
[root@centos ~]# cat > test.txt this is the first line (輸入三行文字) here's second line blablabla ( 輸入完成時按下 Ctrl+D) [root@centos ~]# ls -l test.txt (檢視 test.txt 是否產生了) -rw-r--r-- 1 root root 52 12 月 6 10:41 test.txt [root@centos ~]#
若想要在檔案內容輸出時加上行號,可使用 -n 選項:
[root@centos ~]# cat -n > test.txt this is the first line (輸入三行文字) here's second line blablabla ( 輸入完成時按下 Ctrl+D) [root@centos ~]# cat test.txt (檢視 test.txt 內每行加上了行號) 1 this is the first line 2 here's second line 3 blablabla [root@centos ~]#
如果檔案內容超過一頁的範圍時,很難看到檔案的全部內容,cat 指令通常 會配合分頁顯示的命令 (more),本章後續會說明 more 的用法,會把 cat 指令與 more 等指令一起整合應用。
輸出檔案內容並分頁顯示- more
more 指令其中一個用法,可以將特定檔案的內容顯示到螢幕上,並提供單向的分頁停頓功能。例如:
more /root/anaconda-ks.cfg
此時會顯示 /root/anaconda-ks.cfg 的檔案內容,由於一頁能顯示 23 列資料, more 指令在顯示一頁時,會暫停及等待使用者按下空白鍵才繼續顯示第二頁資料,按下 q 鍵則可以結束 more 指令,並回到命令字元下。
使用 less 指令觀看檔案內容
less 指令與 more 類似,但 less 功能更多,more 的分頁停頓功能只能單向往後分頁,less 除了能往後分頁外亦能往前移動。less 指令能在文字檔案內搜尋、並移動到特定的位置、行等位置。使用 less 觀看文字檔時,在最後一行會顯示冒 號「 : 」,可輸入移動與搜尋功能,例如:「 :20 」移動到文件的第 20 行:
觀看檔案最後與最前面的內容- tail 與 head
Linux 與 UNIX 提供了用來觀看檔案尾端的指令 tail,tail 可顯示檔案尾端的內容,而不需將檔案全部讀入記憶體。由於 Linux 的穩定性高,許多網路服務 (伺服器) 都會以 Linux 為平台來架設,因此伺服器所產生的記錄檔 (log 檔,或稱日誌檔) 的內容很多,有時會大到數百 MB 至數十 GB,最新產生的記錄大都 位於記錄檔的尾端,如果只需要觀察最新的記錄資訊而開啟該檔案,記憶體的 耗費與讀取磁碟檔案的時間消耗經常會影響整體主機的效能。因此,使用 tail 或 head 可避免讀取整個檔案,而只讀取尾端或前端資料而顯示在螢幕上。
- 讀取尾端資料- tail
本節示範時會使用 /var/log/messages 這個檔案來做為範例檔案,/var/log/ 目錄是專門放置系統記錄檔的目錄,而開機時偵測硬體與啟動服務的記錄都會寫入 /var/log/messages 檔案,檔案的內容因人而異。
tail [選項] [檔案名稱] ...
tail 後直接給檔案名稱會顯示該檔案尾端 10 列的資料:
利用 cat -n 指令可以在原檔案內容加上行號,可驗證 tail 是否顯示的是最後 10 列:
[root@localhost ~]# cat -n /var/log/messages 1 May 11 10:42:01 localhost rsyslogd[2309]: [origin software="rsyslogd" swVersion="8.37.0-13.el8" x-pid="2309" x-info="http://www.rsyslog.com"] rsyslogd was HUPed 2 May 11 10:50:08 localhost systemd[1]: Starting system activity accounting tool... 3 May 11 10:50:08 localhost systemd[1]: Started system activity accounting tool. 4 May 11 10:55:08 localhost systemd[1]: Starting Check pmlogger instances are running... 5 May 11 10:55:09 localhost systemd[1]: Started Check pmlogger instances are running. 6 May 11 10:58:08 localhost systemd[1]: Starting Check PMIE instances are running... 7 May 11 10:58:08 localhost systemd[1]: Started Check PMIE instances are running. 8 May 11 11:00:08 localhost systemd[1]: Starting system activity accounting tool... 9 May 11 11:00:08 localhost systemd[1]: Started system activity accounting tool. 10 May 11 11:02:05 localhost systemd-logind[1407]: Session 4 logged out. Waiting for processes to exit. 11 May 11 11:02:05 localhost systemd-logind[1407]: Removed session 4. [root@localhost ~]#
- tail 的重要選項
-n 列數
顯示檔案尾端最後列數,例如:tail -n 3 /var/log/dmesg,可顯示 dmesg 檔最後 3 列資料:
[root@localhost ~]# tail -n 3 /var/log/messages May 11 11:00:08 localhost systemd[1]: Started system activity accounting tool. May 11 11:02:05 localhost systemd-logind[1407]: Session 4 logged out. Waiting for processes to exit. May 11 11:02:05 localhost systemd-logind[1407]: Removed session 4. [root@localhost ~]#
-f 追蹤選項
系統管理實務上經常需要「隨時」監控或觀察記錄檔有無新的訊息,由此判斷伺服器是否正常運作,所以當記錄檔有新資料時能夠馬上得知,追蹤選項可以達到這個需求。
/var/log/messages 是系統記錄檔(system log),大部份的系統記錄都會寫入 messages 檔案,系統記錄檔內有記錄日期與時間、產生記錄的程式或服務、記錄類型與主機名稱,檔案的內容因人而異。利用 tail -f 選項除了列出檔案尾端資料外,會持續監控該記錄檔,有新資料會馬上顯示在螢幕上。
產生空白檔案- touch
有幾種方式可以產生(建立)新檔案,可以使用文字編輯器編輯一個新檔案,這部份本書留待下個章節文字編輯器章節會詳細說明,亦可利用一個很方便的指令 touch 來新增一個空白的檔案。
- 改變檔案的更動時間指令- touch
touch 指令可用來改變特定檔案的更動時間,例如:原來 /root/anaconda-ks. cfg 的更動時間為 4 月 10 日 20 點 04 分,如下:
改變 /root/anaconda-ks.cfg 的更動時間,最後 anaconda-ks.cfg 的時間被改為現在時間,如 5 月 11 日 11 點 14 分,這是筆者假定的現在時間。
0 問答