所有 Linux 系列文章使用環境均為 Fedora 20 (Heisenbug) 或 RHEL 7.
1. Terminal
打開 Linux Terminal ,一般會看到這樣的顯示:[ybian@m3l3 ~]$
-
ybian
:表示目前登陸的帳號 -
@m3l3
:@ 之后的表示主機名 -
~
:表示當前所在目錄,~
代表當前帳號所在的家目錄,在當前情況下相當于/home/ybian
-
$
:提示符,普通用戶的提示符為$
, root 的提示符為#
由于 root 用戶的擁有所有權限,所以一般建議使用普通用戶登陸操作,只有需要進行系統功能配置修改時才使用 root 用戶登陸。
2. 在 Terminal 執行命令
命令的語法:command [options] parameter1 parameter2 ...
一行命令中輸入的第一部分為 command(命令的名稱)或一個可執行文件
包含在
[ ]
中的內容是可選的,一般是命令的選項。選項分為兩種,一種是前邊帶有-
的簡寫形式,另一種是帶--
的選項的完整名稱在選項后邊為命令或選項需要的參數,可能為 0 個或多個
命令、選項和參數之間以空格進行區分,無論多少個空格都會被 Shell 解釋為一個空格
可以使用反斜線
\
使命令延續到下一行,除非 \ 代表轉義-
當命令輸入結束后,直接回車即可執行命令
一般情況下文章忽略命令的執行結果,只關心命令本身
[ybian@m3l3 ~]$ ls # ls 是 Linux 中的一個命令,在 Terminal 里直接輸入命令即可執行
[ybian@m3l3 ~]$ ls -a # 在命令后邊可以添加相應的參數對命令進行補充,從而得到想要的結果
[ybian@m3l3 ~]$ ls --all # 選項可以有以 - 開頭的短選項,也有以 -- 開頭的長選項
[ybian@m3l3 ~]$ cd Documents # 有些命令需要參數,參數和選項的位置并不固定,但一般參數在后
[ybian@m3l3 ~]$ cd \
Documents # 可以使用反斜線 \ 延續命令至下一行
```
-
需要注意的一點:在 Linux 中嚴格區分大小寫,不管是文件名或是命令,都需要注意大小寫
$ Ls
bash: Ls: command not found...
Similar command is: 'ls' # 如果輸入一個錯誤的命令,則會出現錯誤提示
```
3. Terminal 下幾個重要的快捷鍵
-
Tab:Tab 是最經常使用的快捷鍵之一,它具有命令補全和文件補全的功能。即當我們輸入命令的前幾個字母時,按下 Tab 鍵可以幫助我們補全命令;如果根據輸入的字母無法確定命令,連續兩次按下 Tab 鍵會將以這幾個字母開始的所有命令都列出來。
$ shu [tab][tab]
shuf shutdown # 連續兩次按下 tab 可以列出所有以 shu 開始的命令
$ cd Do[tab][tab]
Documents/ Downloands/ # 在命令后邊參數時,可以實現文件名補全的功能
Tab 的作用不僅僅局限于幫助我們補全命令和文件名,而是可以減少拼寫錯誤
- Ctrl + c:結束當前正在運行的命令或程序
- Ctrl + d:將當前正在運行的命令或程序放在后臺執行,而不是終止命令
- Crtl +Shift + t:打開一個新的 Terminal 標簽
- Alt + 1/2/3/...:在不同的 Terminal 之間進行切換
- Ctrl + Shift + c:復制
- Ctrl + Shift + v:粘貼
- Ctrl + l:清屏
更多 Terminal 快捷鍵參考:[Linux Terminal Keyboard Shortcuts](http://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/)
### 4. 獲取命令幫助信息
我們很難能記住 Linux 下所有的命令的詳細用法,因此經常需要查看命令的幫助信息來了解命令的使用方法。
- 使用 __--help__:在輸入命令時,使用 --help 選項(或 -h),可以獲得關于該命令的使用方法
```
$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
... ... # --help 選項會直接列出命令的幫助信息
```
- 使用 man 命令:并不是所有的命令都有 --help 選項,因此有時候我們需要使用 man 命令來進行查找。man 是 manual 的縮寫,在 man 后邊直接添加要查找的命令作為參數即可得到該命令的使用手冊。
```
$ man ls # 使用 man 后會進入man page,即命令的使用手冊
```
__Man Page__:一個完整的 man page 可能包含以下幾個部分
| 標題 | 內容 |
| ------ | ------ |
| NAME | 簡短的命令、數據名稱說明 |
| SYNOPSIS | 簡短的命令語法 |
| DESCRIPTION | 完整的命令說明 |
| OPTIONS | 列舉出命令所有的選項進行逐個說明 |
| COMMANDS | 程序運行時,可以在程序中使用的命令 |
| FILES | 使用或參考或連結到的文件 |
| EXAMPLE | 一些參考的范例 |
| BUGS | 是否存在相關的 Bug |
| SEE ALSO | 相關的參考資料 |
以上內容基本上包含了 Man Page 的所有信息,但這些并非都是必須的,不同的命令和軟件可以只包含其中的部分內容,或者再添加一些其他部分。其中重要的部分主要是:NAME、SYNOPSIS、DESCRIPTION 和 OPTIONS,我們可以根據這幾部分對命令有一個比較完整的了解,可以實現大部分場景的應用。
__使用方法__:
| 按鍵 | 所進行的操作 |
| ------ | ------------------ |
| 空格 | 向下翻頁 |
| Page Down | 向下翻頁 |
| Page Up | 向上翻頁 |
| Home | 跳至首頁 |
| End | 跳至尾頁 |
| /string | 以當前頁為基準向下進行搜索 |
| ?string | 以當前頁為基準向上進行搜索 |
| n / N | 搜索時,n 用于繼續下一個搜索,N 為反方向搜索 |
| q | 推出 man page |
- 關于搜索:在 man page 中只需要輸入 `/` 或 `?`,然后輸入要搜索的關鍵詞即可進行搜索
- __-k__ 選項:當我們需要查找某一命令,但又不知道該命令的完整名稱時可以使用 -k 參數進行模糊查找
```
$ man -k cd
nscd.conf (5) - name service cache daemon configuration file
cd (1) - bash built-in commands, see bash(1)
cd (1p) - change the working directory
cd-create-profile (1) - Color Manager Profile Creation Tool
... .... # 使用 -k 選項可以將所有包含該關鍵字的 man page 列出
```
- man page 的級別:在 man page 的首行我們可以看到類似 `CD(1)` 這樣的顯示,其中 `(1)` 中的數字代表了 man page 的級別,一個命令可能同時包含不同級別的 man page。
| 數字 | 代表內容 |
| ------ | ------------ |
| __1__ | __使用者在 shell 環境中可以操作的命令或可執行文件__ |
| 2 | 系統內核可調用的函數與工具 |
| 3 | 一些常用的函數或函數庫,大部分為 C 的函數庫 |
| 4 | 配置文件的說明,通常為 /dev 下的文件 |
| __5__ | __配置文件或某些文件的格式__ |
| 6 | 游戲 |
| __7__ | __慣例與協議__ |
| 8 | 系統管理員可用的命令 |
| 9 | 與內核相關的文件 |
實際中的級別要復雜的多,但一般可以劃分為以上幾類,其中 1、5、7 是我們經常查看的級別。
- __-f__ 選項:通過 -f 選項我們可以查看命令都具有哪些級別的 man page
$ man -f cd
cd (1p) - change the working directory
cd (1) - bash built-in commands, see bash(1) # 列出所有指定命令的 man page 文件
$ man 1p cd
... ... # 可以指定要打開的 man page 文件級別進行查看
- Tips:
- man page 一般保存在 /usr/share/man 目錄中
- man 命令的配置文件為:/etc/man_db.conf
- man page 默認打開的級別順序為:`SECTION 1 1p 8 2 3 3p 4 5 6 7 9 0p n l p o 1x 2x 3x 4x 5x 6x 7x 8x`
- man 也是 linux 的命令,所以使用 `man man` 來獲取更多關于 man 命令的信息 : -)