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