1、指令详细说明
开始下达指令
[dmtsai@study ~]$ command [-options] parameter1 parameter2 ... 指令 選項 參數(1) 參數(2)
上述指令詳細說明如下:
- 一行指令中第一個輸入的部分絕對是『指令(command)』或『可執行檔案(例如批次腳本,script)』
- command 為指令的名稱,例如變換工作目錄的指令為 cd 等等;
- 中刮號[]並不存在於實際的指令中,而加入選項設定時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;
- parameter1 parameter2.. 為依附在選項後面的參數,或者是 command 的參數;
- 指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格。所以空格是很重要的特殊字元!;
- 按下[Enter]按鍵後,該指令就立即執行。[Enter]按鍵代表著一行指令的開始啟動。
- 指令太長的時候,可以使用反斜線 (\) 來跳脫[Enter]符號,使指令連續到下一行。注意!反斜線後就立刻接特殊字符,才能跳脫!
- 在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 並不同。
乱码的解决方法:
1. 顯示目前所支援的語系 [dmtsai@study ~]$ locale LANG=zh_TW.utf8 # 語言語系的輸出 LC_CTYPE="zh_TW.utf8" # 底下為許多資訊的輸出使用的特別語系 LC_NUMERIC=zh_TW.UTF-8 LC_TIME=zh_TW.UTF-8 # 時間方面的語系資料 LC_COLLATE="zh_TW.utf8" ....中間省略.... LC_ALL= # 全部的資料同步更新的設定值 # 上面的意思是說,目前的語系(LANG)為zh_TW.UTF-8,亦即台灣繁體中文的萬國碼 [dmtsai@study ~]$ date 鈭? 5??29 14:24:36 CST 2015 # 純文字界面下,無法顯示中文字,所以前面是亂碼 2. 修改語系成為英文語系 [dmtsai@study ~]$ LANG=en_US.utf8 [dmtsai@study ~]$ export LC_ALL=en_US.utf8 # LANG 只與輸出訊息有關,若需要更改其他不同的資訊,要同步更新 LC_ALL 才行! [dmtsai@study ~]$ date Fri May 29 14:26:45 CST 2015 # 順利顯示出正確的英文日期時間啊! [dmtsai@study ~]$ locale LANG=en_US.utf8 LC_CTYPE="en_US.utf8" LC_NUMERIC="en_US.utf8" ....中間省略.... LC_ALL=en_US.utf8 # 再次確認一下,結果出現,確實是en_US.utf8這個英文語系!
2、重要的几个热键[Tab], [ctrl]-c, [ctrl]-d
[Tab] 接在一串指令的第一個字的後面,則為『命令補全』
[dmtsai@study ~]$ ca[tab][tab] <==[tab]按鍵是緊接在 a 字母後面! cacertdir_rehash cairo-sphinx cancel case cache_check cal cancel.cups cat cache_dump calibrate_ppa capsh catchsegv cache_metadata_size caller captoinfo catman # 上面的 [tab] 指的是『按下那個tab鍵』,不是要你輸入中括號內的tab啦!
[Tab] 接在一串指令的第二個字以後時,則為『檔案補齊』
[dmtsai@study ~]$ ls -al ~/.bash[tab][tab]
.bash_history .bash_logout .bash_profile .bashrc
[Tab]接在某些指令後面使用時,可以進行『選項/參數的補齊』功能
[dmtsai@study ~]$ date --[tab][tab] <==[tab]按鍵是緊接在 -- 後面! --date --help --reference= --rfc-3339= --universal --date= --iso-8601 --rfc-2822 --set= --version # 瞧!系統會列出來 date 這個指令可以使用的選項有哪些喔~包括未來會用到的 --date 等項目要有安裝 bash-completion 軟體
[Ctrl]-d 按鍵
[Ctrl]-c 按鍵
如果你在Linux底下輸入了錯誤的指令或參數,有的時候這個指令或程式會在系統底下『跑不停』這個時候, 如果你想讓當前的程式『停掉』的話,可以輸入:[Ctrl]與c按鍵( 先按著[Ctrl]不放,且再按下c按鍵,是組合按鍵 ), 那就是 中斷目前程式 的按鍵!舉例來說,如果你輸入了『find /』這個指令時,系統會開始跑一些東西,此時你給他按下 [Ctrl]-c 組合按鍵,是否立刻發現這個指令串被終止了!就是這樣的意思啦![dmtsai@study ~]$ find / ....(一堆東西都省略).... # 此時螢幕會很花,你看不到命令提示字元的!直接按下[ctrl]-c即可! [dmtsai@study ~]$ <==此時提示字元就會回來了!find程式就被中斷!
[shift]+{[PageUP]|[Page Down]}按鍵
如果你在純文字的畫面中執行某些指令,這個指令的輸出訊息相當長!你可以使用 [Shift]+[Page Up] 來往前翻頁,也能夠使用 [Shift]+[Page Down] 來往後翻頁3、linux系统的线上求助man page 与info page
指令的 --help求助说明
[dmtsai@study ~]# date --help Usage: date [OPTION]... [+FORMAT] # 這裡有基本語法 or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] # 這是設定時間的語法 Display the current time in the given FORMAT, or set the system date. # 底下是主要的選項說明 Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE ....(中間省略).... -u, --utc, --universal print or set Coordinated Universal Time (UTC) --help 顯示此求助說明並離開 --version 顯示版本資訊並離開 # 底下則是重要的格式 (FORMAT) 的主要項目 FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中間省略).... # 底下是幾個重要的範例 (Example) Examples: Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' ....(底下省略)....首先一開始是下達語法的方式 (Usage),這個 date 有兩種基本語法,一種是直接下達並且取得日期回傳值,且可以 +FORAMAT 的方式來顯示。 至於另一種方式,則是加上 MMDDhhmmCCYY 的方式來設定日期時間。他的格式是『月月日日時時分分西元年』的格式!再往下看, 會說明主要的選項,例如 -d 的意義等等,後續又會出現 +FORMAT 的用法!
man page
[dmtsai@study ~]$ LANG="en_US.utf8" # 還記得這個咚咚的用意吧?前面提過了,是為了『語系』的需要啊!下達過一次即可! [dmtsai@study ~]$ man date DATE(1) User Commands DATE(1) # 請注意上面這個括號內的數字 NAME <==這個指令的完整全名,如下所示為date且說明簡單用途為設定與顯示日期/時間 date - print or set the system date and time SYNOPSIS <==這個指令的基本語法如下所示 date [OPTION]... [+FORMAT] <==第一種單純顯示的用法 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] <==這種可以設定系統時間的用法 DESCRIPTION <==詳細說明剛剛語法談到的選項與參數的用法 Display the current time in the given FORMAT, or set the system date. Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱 display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format. TIMESPEC='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the indicated precision. ....(中間省略).... # 找到了!底下就是格式化輸出的詳細資料! FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中間省略).... ENVIRONMENT <==與這個指令相關的環境參數有如下的說明 TZ Specifies the timezone, unless overridden by command line parameters. If neither is specified, the setting from /etc/localtime is used. EXAMPLES <==一堆可用的範本 Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' ....(中間省略).... DATE STRING <==上面曾提到的 --date 的格式說明! The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of AUTHOR <==這個指令的作者啦! Written by David MacKenzie. COPYRIGHT <==受到著作權法的保護!用的就是 GPL 了! Copyright © 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WAR‐ RANTY, to the extent permitted by law. SEE ALSO <==這個重要,你還可以從哪裡查到與date相關的說明文件之意 The full documentation for date is maintained as a Texinfo manual. If the info and date programs are properly installed at your site, the command info coreutils 'date invocation' should give you access to the complete manual. GNU coreutils 8.22 June 2014 DATE(1)Tips: 進入man指令的功能後,你可以按下『空白鍵』往下翻頁,可以按下『 q 』按鍵來離開man的環境。 首先,在上個表格的第一行,你可以看到的是:『DATE(1)』,DATE我們知道是指令的名稱, 那麼(1)代表什麼呢?他代表的是『一般使用者可使用的指令』的意思!
代號 | 代表內容 |
1 | 使用者在shell環境中可以操作的指令或可執行檔 |
2 | 系統核心可呼叫的函數與工具等 |
3 | 一些常用的函數(function)與函式庫(library),大部分為C的函式庫(libc) |
4 | 裝置檔案的說明,通常在/dev下的檔案 |
5 | 設定檔或者是某些檔案的格式 |
6 | 遊戲(games) |
7 | 慣例與協定等,例如Linux檔案系統、網路協定、ASCII code等等的說明 |
8 | 系統管理員可用的管理指令 |
9 | 跟kernel有關的文件 |
再來,man page的內容也分成好幾個部分來加以介紹該指令呢!就是上頭man date那個表格內, 以NAME作為開始介紹,最後還有個SEE ALSO來作為結束。基本上,man page大致分成底下這幾個部分:
代號 | 內容說明 |
NAME | 簡短的指令、資料名稱說明 |
SYNOPSIS | 簡短的指令下達語法(syntax)簡介 |
DESCRIPTION | 較為完整的說明,這部分最好仔細看看! |
OPTIONS | 針對 SYNOPSIS 部分中,有列舉的所有可用的選項說明 |
COMMANDS | 當這個程式(軟體)在執行的時候,可以在此程式(軟體)中下達的指令 |
FILES | 這個程式或資料所使用或參考或連結到的某些檔案 |
SEE ALSO | 可以參考的,跟這個指令或資料有相關的其他說明! |
EXAMPLE | 一些可以參考的範例 |
大致上瞭解了man page的內容後,那麼在man page當中我還可以利用哪些按鍵來幫忙查閱呢?首先, 如果要向下翻頁的話,可以按下鍵盤的空白鍵,也可以使用[Page Up]與[Page Down]來翻頁呢!同時,如果你知道某些關鍵字的話, 那麼可以在任何時候輸入『/word』,來主動搜尋關鍵字!例如在上面的搜尋當中,我輸入了『/date』會變成怎樣?
DATE(1) User Commands DATE(1) NAME date - print or set the system date and time SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION Display the current time in the given FORMAT, or set the system date. ....(中間省略).... /date <==只要按下/,游標就會跑到這個地方來,你就可以開始輸入搜尋字串咯
看到了嗎,當你按下『/』之後,游標就會移動到螢幕的最下面一行, 並等待你輸入搜尋的字串了。此時,輸入date後,man page就會開始搜尋跟date有關的字串, 並且移動到該區域呢!很方便吧!最後,如果要離開man page時,直接按下『 q 』就能夠離開了。 我們將一些在man page常用的按鍵給他整理整理:
按鍵 | 進行工作 |
空白鍵 | 向下翻一頁 |
[Page Down] | 向下翻一頁 |
[Page Up] | 向上翻一頁 |
[Home] | 去到第一頁 |
[End] | 去到最後一頁 |
/string | 向『下』搜尋 string 這個字串,如果要搜尋 vbird 的話,就輸入 /vbird |
?string | 向『上』搜尋 string 這個字串 |
n, N | 利用 / 或 ? 來搜尋字串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行『反向』搜尋。舉例來說,我以 /vbird 搜尋 vbird 字串, 那麼可以 n 繼續往下查詢,用 N 往上查詢。若以 ?vbird 向上查詢 vbird 字串, 那我可以用 n 繼續『向上』查詢,用 N 反向查詢。 |
q | 結束這次的 man page |
搜尋特定指令/檔案的man page說明文件
在某些情況下,你可能知道要使用某些特定的指令或者是修改某些特定的設定檔,但是偏偏忘記了該指令的完整名稱。 有些時候則是你只記得該指令的部分關鍵字。這個時候你要如何查出來你所想要知道的man page呢? 我們以底下的幾個例子來說明man這個指令有用的地方喔!
例題:
你可否查出來,系統中還有哪些跟『man』這個指令有關的說明文件呢?
答:
你可以使用底下的指令來查詢一下:
[dmtsai@study ~]$ man -f man
man (1) - an interface to the on-line reference manuals
man (1p) - display system documentation
man (7) - macros to format man pages
使用 -f 這個選項就可以取得更多與man相關的資訊,而上面這個結果當中也有提示了 (數字) 的內容, 舉例來說,第三行的『 man (7) 』表示有個man (7)的說明文件存在喔!但是卻有個man (1)存在啊! 那當我們下達『 man man 』的時候,到底是找到哪一個說明檔呢? 其實,你可以指定不同的文件的,舉例來說,上表當中的兩個 man 你可以這樣將他的文件叫出來: [dmtsai@study ~]$ man 1 man <==這裡是用 man(1) 的文件資料 [dmtsai@study ~]$ man 7 man <==這裡是用 man(7) 的文件資料
你可以自行將上面兩個指令輸入一次看看,就知道,兩個指令輸出的結果是不同的。 那個1, 7就是分別取出在man page裡面關於1與7相關資料的文件檔案囉! 好了,那麼萬一我真的忘記了下達數字,只有輸入『 man man 』時,那麼取出的資料到底是1還是7啊? 這個就跟搜尋的順序有關了。搜尋的順序是記錄在/etc/man_db.conf 這個設定檔當中,
先搜尋到的那個說明檔,就會先被顯示出來! 一般來說,通常會先找到數字較小的那個啦!因為排序的關係啊!所以, man man 會跟 man 1 man 結果相同!
|
除此之外,我們還可以利用『關鍵字』找到更多的說明文件資料喔!什麼是關鍵字呢? 從上面的『man -f man』輸出的結果中,我們知道其實輸出的資料是:
- 左邊部分:指令(或檔案)以及該指令所代表的意義(就是那個數字);
- 右邊部分:這個指令的簡易說明,例如上述的『-macros to format man pages』
當使用『man -f 指令』時,man只會找資料中的左邊那個指令(或檔案)的完整名稱,有一點不同都不行! 但如果我想要找的是『關鍵字』呢?也就是說,我想要同時找上面說的兩個地方的內容,只要該內容有關鍵字存在, 不需要完全相同的指令(或檔案)就能夠找到時,該怎麼辦?請看下個範例囉!
例題:
找出系統的說明檔中,只要有man這個關鍵字就將該說明列出來。
答:[dmtsai@study ~]$ man -k man fallocate (2) - manipulate file space zshall (1) - the Z shell meta-man page ....(中間省略).... yum-config-manager (1) - manage yum configuration options and yum repositories yum-groups-manager (1) - create and edit yum's group metadata yum-utils (1) - tools for manipulating repositories and extended package management
看到了吧!很多對吧!因為這個是利用關鍵字將說明文件裡面只要含有man那個字眼的(不見得是完整字串) 就將他取出來!很方便吧! ^_^(上面的結果有特殊字體的顯示是為了方便讀者查看, 實際的輸出結果並不會有特別的顏色顯示喔!)
|
info page
在所有的Unix Like系統當中,都可以利用 man 來查詢指令或者是相關檔案的用法; 但是,在Linux裡面則又額外提供了一種線上求助的方法,那就是利用info這個好用的傢伙啦!
基本上,info與man的用途其實差不多,都是用來查詢指令的用法或者是檔案的格式。但是與man page一口氣輸出一堆資訊不同的是,info page則是將文件資料拆成一個一個的段落,每個段落用自己的頁面來撰寫, 並且在各個頁面中還有類似網頁的『超連結』來跳到各不同的頁面中,每個獨立的頁面也被稱為一個節點(node)。 所以,你可以將info page想成是文字模式的網頁顯示資料啦!
不過你要查詢的目標資料的說明文件必須要以info的格式來寫成才能夠使用info的特殊功能(例如超連結)。 而這個支援info指令的文件預設是放置在/usr/share/info/這個目錄當中的。 舉例來說,info這個指令的說明文件有寫成info格式,所以,你使用『 info info 』可以得到如下的畫面:
[dmtsai@study ~]$ info info File: info.info, Node: Top, Next: Getting Started, Up: (dir) Info: An Introduction ********************* The GNU Project distributes most of its on-line manuals in the "Info format", which you read using an "Info reader". You are probably using an Info reader to read this now. ....(中間省略).... If you are new to the Info reader and want to learn how to use it, type the command 'h' now. It brings you to a programmed instruction sequence. # 這一段在說明,按下 h 可以有簡易的指令說明!很好用! ....(中間省略).... * Menu: * Getting Started:: Getting started using an Info reader. * Advanced:: Advanced Info commands. * Expert Info:: Info commands for experts. * Index:: An index of topics, commands, and variables. --zz-Info: (info.info.gz)Top, 52 lines --Bot------------------------------------------
仔細的看到上面這個顯示的結果,裡面的第一行顯示了很多的資訊喔!第一行裡面的資料意義為:
- File:代表這個info page的資料是來自info.info檔案所提供的;
- Node:代表目前的這個頁面是屬於Top節點。 意思是info.info內含有很多資訊,而Top僅是info.info檔案內的一個節點內容而已;
- Next:下一個節點的名稱為Getting Started,你也可以按『N』到下個節點去;
- Up:回到上一層的節點總攬畫面,你也可以按下『U』回到上一層;
- Prev:前一個節點。但由於Top是info.info的第一個節點,所以上面沒有前一個節點的資訊。
從第一行你可以知道這個節點的內容、來源與相關連結的資訊。更有用的資訊是,你可以透過直接按下N, P, U來去到下一個、上一個與上一層的節點(node)!非常的方便! 第一行之後就是針對這個節點的說明。在上表的範例中,第二行以後的說明就是針對info.info內的Top這個節點所做的。 另外,如論你在任何一個頁面,只要不知道怎麼使用 info 了,直接按下 h 系統就能夠提供一些基本按鍵功能的介紹喔!
copy of the license to the document, as described in section 6 of the license. * Menu: * Getting Started:: Getting started using an Info reader. * Advanced:: Advanced Info commands. * Expert Info:: Info commands for experts. * Index:: An index of topics, commands, and variables. --zz-Info: (info.info.gz)Top, 52 lines --Bot------------------------------------------- Basic Info command keys # 這裡是按下 h 之後才會出現的一堆簡易按鈕列說明! x Close this help window. # 按下 x 就可以關閉這個 help 的視窗 q Quit Info altogether. # 完全離開 info page 喔! H Invoke the Info tutorial. Up Move up one line. Down Move down one line. DEL Scroll backward one screenful. SPC Scroll forward one screenful. -----Info: *Info Help*, 405 lines --Top-------------------------------------------------
再來,你也會看到有『Menu』那個咚咚吧!底下共分為四小節,分別是Getting Started等等的,我們可以使用上下左右按鍵來將游標移動到該文字或者『 * 』上面,按下Enter, 就可以前往該小節了!另外,也可以按下[Tab]按鍵,就可以快速的將游標在上表的畫面中的node間移動, 真的是非常的方便好用。如果將info.info內的各個節點串在一起並繪製成圖表的話,情況有點像底下這樣:
如同上圖所示,info的說明文件將內容分成多個node,並且每個node都有定位與連結。 在各連結之間還可以具有類似『超連結』的快速按鈕,可以透過[tab]鍵在各個超連結間移動。 也可以使用U,P,N來在各個階層與相關連結中顯示!非常的不錯用啦! 至於在info page當中可以使用的按鍵,可以整理成底下這樣,事實上,你也可以在 info page 中按下 h 喔!
按鍵 | 進行工作 |
空白鍵 | 向下翻一頁 |
[Page Down] | 向下翻一頁 |
[Page Up] | 向上翻一頁 |
[tab] | 在 node 之間移動,有 node 的地方,通常會以 * 顯示。 |
[Enter] | 當游標在 node 上面時,按下 Enter 可以進入該 node 。 |
b | 移動游標到該 info 畫面當中的第一個 node 處 |
e | 移動游標到該 info 畫面當中的最後一個 node 處 |
n | 前往下一個 node 處 |
p | 前往上一個 node 處 |
u | 向上移動一層 |
s(/) | 在 info page 當中進行搜尋 |
h, ? | 顯示求助選單 |
q | 結束這次的 info page |
info page是只有Linux上面才有的產物,而且易讀性增強很多~不過查詢的指令說明要具有info page功能的話,得用info page的格式來寫成線上求助文件才行!我們CentOS 7將info page的文件放置到/usr/share/info/目錄中!至於非以info page格式寫成的說明文件(就是man page),雖然也能夠使用info來顯示,不過其結果就會跟man相同。 舉例來說,你可以下達『info man』就知道結果了!
其他有用的文件(documents)
剛剛前面說,一般而言,指令或者軟體製作者,都會將自己的指令或者是軟體的說明製作成『線上說明文件』! 但是,畢竟不是每個咚咚都需要做成線上說明文件的,還有相當多的說明需要額外的文件!此時,這個所謂的 How-To(如何做的意思)就很重要啦!還有,某些軟體不只告訴你『如何做』,還會有一些相關的原理會說明呢。
那麼這些說明文件要擺在哪裡呢?哈哈!就是擺在/usr/share/doc這個目錄啦!所以說,你只要到這個目錄底下, 就會發現好多好多的說明文件檔啦!還不需要到網路上面找資料呢!厲害吧!^_^ 舉例來說,你可能會先想要知道 grub2 這個新版的開機管理軟體有什麼能使用的指令?那可以到底下的目錄瞧瞧:
- /usr/share/doc/grub2-tools-2.02
另外,很多原版軟體釋出的時候,都會有一些安裝須知、預計工作事項、未來工作規劃等等的東西,還有包括可安裝的程序等, 這些檔案也都放置在 /usr/share/doc 當中喔!而且/usr/share/doc這個目錄下的資料主要是以套件(packages)為主的, 例如 nano 這個軟體的相關資訊在 /usr/share/doc/nano-xxx(那個xxx表示版本的意思!)。
总结:
上面的三個咚咚(man, info, /usr/share/doc/),請記住喔:
- 在終端機模式中,如果你知道某個指令,但卻忘記了相關選項與參數,請先善用 --help 的功能來查詢相關資訊;
- 當有任何你不知道的指令或檔案格式這種玩意兒,但是你想要瞭解他,請趕快使用man或者是info來查詢!
- 而如果你想要架設一些其他的服務,或想要利用一整組軟體來達成某項功能時,請趕快到/usr/share/doc 底下查一查有沒有該服務的說明檔喔!