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 問答