命令行編輯
光標跳轉:
ctrl+a: 調到命令行首
ctrl+e :跳到命令行尾
ctrl+u:刪除光標至命令行首的內容
ctrl+x:刪除光標至命令行尾的內容
ctrl+左右方向鍵:跳轉一個單詞
ctrl+l:清屏
命令歷史:
命令歷史保存在內存緩沖區(qū)內,退出登錄后歷史會保存至家目錄的隱藏文件內
查看命令歷史:$history
-c :清空整個命令歷史
-d offest 【n】 :清楚指定命令歷史
-w :保存命令歷史至文件
$ 上下鍵
$ !n :執(zhí)行命令歷史第n條命令
$ !! :執(zhí)行上一條命令
$ !string : 執(zhí)行,命令歷史中以string開頭的命令
$ !$ :引用上一個命令的最后一個參數或者按一下esc再按一下 .
命令補全:
tab鍵
連敲兩次可以顯示所有該補全命令,也可補全當前文件及目錄(路徑)
環(huán)境變量
PATH :命令搜索路徑
HISTSIZE :命令歷史緩沖區(qū)大小
SHELLE :保存當前系統(tǒng)用戶的shell
$ echo $SHELL
別名
$ alias CMDALIAS = 'COMMAND [options] 【arguments】'
在shell中定義的別名僅在當前shell生命周期中有效,別名的有效范圍僅在當前shell進程
$ alias 顯示當前系統(tǒng)的所有別名
$ unalias CMDALIAS 取消別名
如果定義的別名是命令本身的名字和參數的組合,即別名和原命令名字相同,此時如果想使用原命令而不是別名只需要在命令前面加上
但是,上述設置方法存在一個問題,也即設置的命令別名只針對當前回話有效,一旦連接斷開并重連之前設置的別名別不在有效。
可以通過將設置別名的命令寫進啟動文件使別名持久生效。大多數Linux發(fā)行版使用下述三個啟動文件中的一個:
$ HOME/.bash_profile
$ HOME/.bash_login
$ HOME/.profile
可將設置別名的命令寫進啟動文件內,這樣,每次連入系統(tǒng)的時候別名都會生效。若想在命令寫入啟動文件后立即生效記得執(zhí)行source命令,比如:
$ source $HOME/.bash_profile
通過上述方式設置命令別名解決了命令別名只針對回話生效的問題,但是,寫進每個用戶特定的主目錄下的啟動文件中的命令別名只針對該用戶有效。對其他 用戶沒有什么效果,這通常也是正常情況下期望看到的情況。但如果確實像使設置的別名對任意用戶有效則可將設置別名的命令寫進全局啟動文件中,如/etc /profile。
命令替換
esc按下后再按 . 可以補全上一個命令的最后一個參數
$ $(COMMAND) 或COMMAND
(反引號)
把命令中的某個子命令替換為其執(zhí)行結果的過程
例如
$ echo "The current directory is $(pwd) "
例如
$ touch ./file-$(date+%F-%H-%M-%S).txt
注 (bash支持的引號):
“ ”:弱引用,可以實現變量替換
' ' :強引用,不完成變量替換
`` : 命令替換
文件名通配(globbing)
符號 | 說明 |
---|---|
* | 任一長度的任意字符 |
? | 任意發(fā)、單個字符 |
[] | 匹配指定范圍內的任意單個字符 |
例如:
[abc] 是從abc三個字符中選一個
[a-z] a到z之間的所有小寫字母
[A-Z] A-Z 之間的所有大寫字母
[0-9] 0-9之間的數字
[a-zA-Z] 兩個范圍的并
[^] : 匹配指定范圍之外的任意單個字符(托字符后面要加字母集合)
以下為bash規(guī)定的部分特殊集合表示方式
符號 | 說明 |
---|---|
[:space:] | 空白字符 |
[:punct:] | 標點符號 |
[:lower:] | 字母小寫 |
[:uper:] | 字母大寫 |
[:alpha:] | 大小寫字母 |
[:digit:]: | 數字 |
[:alnum:] | 數字和大小寫字母 |
例如:
顯示/etc目錄下,以非字母開頭,后面跟了一個字母及其它任意長度字符的文件或目錄;
# ls /etc/[^[:alpha:]][[:alpha:]]*
遺留問題匹配不包含空格且以數字結尾的文件名稱
*[^[:space:]]*[0-9]