Shell命令列操作
shell提示符
[[email protected] ~]$
如果最後一個字元是"#"
,表示當前終端會話有超級使用者許可權。使用root使用者登入或者使用能提供超級使用者許可權的終端能獲得該許可權。
提示符由名為PS1(prompt string 1)的環境變數定義。
自動補齊
自動補齊可以應用於路徑名、變數(以$開頭的單詞)、使用者名稱(以~開頭)、命令(單詞時命令列第一個單詞)、主機名(單詞以@開頭,只對/etc/hosts下的主機名有效)
命令 | 作用 |
---|---|
Alt-$ | 顯示所有可能項。等價於按兩次Tab |
Alt-* | 插入所有可能匹配項 |
命令列歷史
history命令直接輸出歷史記錄,預設500個。
歷史記錄命令
命令 | 作用 |
---|---|
Ctrl-P | 移動到前一條歷史記錄,等於上箭頭 |
Ctrl-N | 移動到後一條歷史記錄,等於下箭頭 |
Alt-< | 移動到歷史記錄開始處 |
Alt-> | 移動到歷史記錄末尾處,即當前命令列 |
Alt-P | 非遞增搜尋。輸入搜尋串後鍵入Enter才開始搜尋 |
Alt-N | 向前非遞增搜尋 |
Ctrl-O | 執行歷史記錄項,執行完後跳到下一項。用於執行一系列歷史記錄 |
Ctrl-R | 逆向遞增搜尋歷史記錄;搜尋時查詢下一個匹配項 |
Ctrl-J | 把搜尋內容複製到當前命令列(按左右方向鍵也能複製,若按Enter會立即執行命令) |
Ctrl-G或C | 退出搜尋 |
!! | 重複最後一個命令,等價於上箭頭+Enter |
!number | 執行歷史記錄第number行的命令 |
! string | 執行最近的以string開頭的歷史記錄 |
!?string | 執行最近的包含string的歷史記錄 |
複製貼上
*不能用Ctrl-c 和Ctrl-v
複製 | 貼上 |
---|---|
滑鼠左鍵選擇文字(或雙擊選擇單詞) | 滑鼠中鍵 |
Ctrl-Shift-c | Ctrl-Shift-v |
Ctrl-Insert | Shift-Insert |
虛擬終端
命令 | 作用 |
---|---|
Ctrl-Alt-F1 ~ F6 | 由圖形桌面系統切換到1~6號虛擬終端 |
Alt-F1 ~ F6 | 在1~6號虛擬終端之間切換 |
Alt-F7 | 由虛擬終端回到圖形桌面系統 |
萬用字元
稱為wildcards或globbing,用於匹配一組檔名。可與任意一個使用檔名做引數的命令一起使用。
注意:謹慎使用字元範圍表示法[A-Z][a-z]
萬用字元 | 匹配項 |
---|---|
* | 匹配任意多個字元(包含0個) |
? | 匹配任意一個字元(不包含0個) |
[characters] | 匹配任意一個字符集內字元 |
[!characters] | 匹配任意一個不屬於字符集內字元 |
[[:class:]] | 匹配任意一個字元類內字元 |
字元類 | 說明 |
---|---|
[:alnum:] | 字母集或數字集 |
[:alpha:] | 字母集 |
[:digit:] | 數字集 |
[:lower:] | 小寫字母集 |
[:upper:] | 大寫字母集 |
重定向
linux提供標準輸入”0”,標準輸出”1”,標準錯誤”2”。
“>”:將標準輸出重定向到檔案中,會先清空原檔案內容
使用 “> filename”會刪除檔案的內容
“<”:將檔案內容作為標準輸入讀入命令
“>>”:將標準輸出重定向到檔案中,使用追加模式
“|”:管道,將上一個命令的標準輸出作為下一個命令的標準輸入
同時重定向標準輸出和標準錯誤:
command > file 2>&1
或新版bash支援的 command &> file
標準錯誤的重定向發生在標準輸出重定向之後,所以command 2>&1 >file是錯誤的。
忽略輸出:將輸出或標準錯誤重定向到檔案/dev/null。
忽略所有輸出:command > /dev/null 2>&1
忽略錯誤:command 2> /dev/null
命令列擴充套件
每次shell命令執行前都會進行擴充套件(expansion)。通過echo可以簡單驗證擴充套件後的結果。這些擴充套件包括:
- 路徑名擴充套件(使用萬用字元)
- 波浪線擴充套件(~或~user,擴充套件為使用者的主目錄)
- 算術擴充套件,$((expression)),注意都是整數運算,支援四則和取餘”%”,取冪”**”,忽略空格
- 花括號擴充套件
$ echo {1..5}
輸出1 2 3 4 5
$ echo {G..A}
輸出G F E D C B A
$ echo {A{1, 2}, B{3, 4}}
輸出A1 A2 B3 B4
- 引數擴充套件,如
$PATH
等引數 - 命令替換,如
$(ls)
或`ls`
引用
引用可以避免Shell擴充套件。引用包含雙引號的弱引用和單引號的強引用。
- 弱引用:部分特殊字元失去特殊含義,保留美元符號”$”,反斜線”\”,反引號”`”。因此,單詞分隔、路徑名擴充套件、波浪線擴充套件和花括號擴充套件失效。引數擴充套件、算術擴充套件、命令替換依然有效。
- 強引用:抑制所有擴充套件。
轉義字元”\”:在弱引用中輸出”$”、”\”、”`”或輸出轉義字元”\n”等。在命令列中消除shell特殊字元的含義,如”$”、”!”、”&”、空格
shell快捷鍵
游標移動
組合鍵 | 作用 |
---|---|
Ctrl-A | 游標到行首 |
Ctrl-E | 游標到行尾 |
Ctrl-F | 前移一個字元,等價於右箭頭 |
Ctrl-B | 後移一個字元,等價於左箭頭 |
Alt-F | 前移一個字,定位到字後 |
Alt-B | 後移一個字,定位到字首字母 |
Ctrl-L | 清屏並移動游標到行首,等價於clear |
修改文字
組合鍵 | 作用 |
---|---|
Ctrl-D | 刪除游標處字元 |
Ctrl-T | 游標處字元和前面字元對調 |
Alt-T | 游標處字和前面的字對調 |
Alt-L | 從游標到字尾變小寫 |
Alt-U | 從游標到字尾變大寫 |
剪下(killing)和貼上(yanking)
被剪下內容存在成為kill-ring的緩衝區
組合鍵 | 作用 |
---|---|
Ctrl-K | 剪下從游標到行尾 |
Ctrl-U | 剪下從游標到行首 |
Alt-D | 剪下從游標到當前詞尾 |
Alt-Backspace | 剪下從游標到詞頭,若已在開頭,剪下前一個單次 |
Ctrl-Y | 貼上 |