邁向 RHCE 之路 (Day05) - 如何查看指令用法

1、前言

Linux 系統指令語法如下,欲一次執行多個指令可在指令與指令之間加上分號 (;) 即可,下述中 參數、敘述 皆為非必需,也就是說沒有參數及敘述 (單純指令) 即可,而敘述的內容可以是檔案、資料夾、或其它必須指令。

 command   options    arguments
 指令       參數       敘述
 ping      -c2        168.95.1.1




文章目錄

1、前言
2、command --help
3、whatis command
4、man command
5、info command
6、/usr/share/doc
7、Lab 實作
          Lab1.利用現有學到的指令及上述幫助方式,使用 date 指令改變系統時間?
          Lab2.利用現有學到的指令及上述幫助方式,配合 date 指令顯示指定日期於輸出的檔案名稱上?
          Lab3. 利用現有學到的指令及上述幫助方式,使用 rm 指令刪除特殊名稱檔案?



查詢系統時間 - date: 下列為透過 date 指令查詢目前系統時間。
date
  Tue Oct 11 08:53:02 CST 2011

查詢萬年曆 - cal: 下列為透過 cal 指令查詢指定年份及月份日曆,為何下列顯示月曆中少了 3 ~ 13 日? 詳細內容可參考 Wikipedia - 1752邱展毅 - 兩千年中西曆轉換
cal 9 1752
     September 1752
  Su Mo Tu We Th Fr Sa
         1  2 14 15 16           //少了 3 ~ 13 日?
  17 18 19 20 21 22 23
  24 25 26 27 28 29 30

您可透過下列方式來獲得可能的幫助:
  • command --help: 顯示指令幫助頁面 (並非每個指令都支援)。
  • whatis command: 顯示指令用途 (用一句簡短的話說明)。
  • man command: 顯示指令 Manual Pages (Man Pages)。
  • info command: 顯示指令詳細說明 (手冊 HandBook)。
  • /usr/share/doc: 於此路徑下有各式各樣的說明文件。
  • Red Hat Document: Red Hat 官方說明文件。

以下說明為適用於 --help 及 man 所顯示的項目。
  • [ ]: 中括號內為 選項 (可要可不要)
  • < >: 此選項內為 變數
  • ...: 表示可使用 多個
  • a|b|c: 表示為 或,也就是 a or b or c 即可
  • -abc: 表示為 混合,也就是 -a -b -c



2、command --help

以下範例為嘗試利用上述方式來獲取指令 cal 相關資訊。
cal --help
  cal: invalid option -- '-'   //此指令未支援 --help 參數
  usage: cal [-13smjyV] [[[day] month] year]




3、whatis command

可透過指令 make whatis 來更新 whatis 資料庫 (man 也共用此資料庫)。
whatis cal
  cal                  (1)  - displays a calendar    //一句簡短話說明此指令功能
  cal                  (1p) - print a calendar




4、man command

以下範例為嘗試利用上述方式來獲取指令 cal 相關資訊。
man cal                   //顯示 cal 指令 Man Pages 內容
  CAL(1)             BSD General Commands Manual            CAL(1)
  NAME
     cal - displays a calendar
  ...略...

有些指令因用途及使用功能性不同可利用加上數字選項來查看不同的 Man Pages,例如 man 1 passwd 及 man 5 passwd,而其數字所查看的 Manual Sections 如下:
  1. User commands (常用)
  2. System calls
  3. Library calls (適用於開發時)
  4. Special files
  5. File formats (常用) 
  6. Games
  7. Miscellaneous
  8. Administrative commands (常用)

可使用 -k 參數來尋找 Manual Pages 關鍵字 (共用 whatis 資料庫)
man -k date
  /etc/updatedb.conf [updatedb] (5)  - a configuration file for updatedb(8)
  ...略...




5、info command

n:往下翻頁、p:往上翻頁、Node:目前章節名稱。
info date          //顯示 date 指令 HandBook 內容
  File: coreutils.info,  Node: date invocation,  Next: arch invocation,  Up: System context
  21.1 `date': Print or set system date and time
  ...略...




6、/usr/share/doc

此路徑下為延伸文件,若安裝套件有相關文件時將存放於此資料夾下,例如查看此資料夾下 ntp 內容。
ls /usr/share/doc/ntp-4.2.4p8/
  ChangeLog  COPYRIGHT  NEWS




7、Lab 實作

Lab 1. 利用現有學到的指令及上述幫助方式,使用 date 指令改變系統時間?

將目前系統時間 調快 / 慢 2分鐘 其指令如下:測試之後,若時間都亂了,可以與網際網路上的 NTP 時間伺服器校時一下 (ntpdate -s watch.stdtime.gov.tw)
date
  Tue Oct 11 09:00:40 CST 2011
date --set='+2 minutes'       //調快 2 分鐘
  Tue Oct 11 09:02:42 CST 2011
date --set='-2 minutes'       //調慢 2 分鐘
  Tue Oct 11 09:00:49 CST 2011

將目前系統時間 調整至指定時間 (特殊字) 其指令如下:
date --set=today               //設定為今天
  Tue Oct 11 09:08:34 CST 2011
date --set=tomorrow            //設定為明天
  Wed Oct 12 09:08:43 CST 2011
date --set=yesterday           //設定為昨天
  Mon Oct 10 09:09:08 CST 2011




Lab 2. 利用現有學到的指令及上述幫助方式,配合 date 指令顯示指定日期於輸出的檔案名稱上?

此實作目的在於當進行備份或或其它需要用到日期來方便辨別時即可使用此方式來達成 (今天日期為 2011 年 10 月 11 日),所以例如我們想將 ls 結果,輸出到一個名為 ls.日期.out 的檔案上:
date '+%F'            //顯示格式為 年-月-日
  2011-10-11
date '+%D'            //顯示格式為 月/日/年
  10/11/11
date '+%Y%m%d'        //顯示格式為 年月日
  20111011
ls > ls.`date '+%Y%m%d'`.out
ls
  ls.20111011.out




Lab 3. 利用現有學到的指令及上述幫助方式,使用 rm 指令刪除特殊名稱檔案?

下列操作中您會發現無法使用 rm 指令來刪除特殊名稱檔案 (-11),參考過 man 及 info 後可發現刪除此類檔案方式如下。
touch -- -11    //建立 -11 檔案
rm -11          //直接使用 rm 指令發現無法刪除
  rm: invalid option -- '1'
  Try `rm ./-11' to remove the file `-11'.
  Try `rm --help' for more information.
rm -- -11       //刪除方式一
rm ./-11        //刪除方式二