命令行編輯
光標(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開(kāi)頭的命令
$ !$ :引用上一個(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è)問(wèn)題,也即設(shè)置的命令別名只針對(duì)當(dāng)前回話有效卿啡,一旦連接斷開(kāi)并重連之前設(shè)置的別名別不在有效吟吝。
可以通過(guò)將設(shè)置別名的命令寫(xiě)進(jìn)啟動(dòng)文件使別名持久生效。大多數(shù)Linux發(fā)行版使用下述三個(gè)啟動(dòng)文件中的一個(gè):
$ HOME/.bash_profile
$ HOME/.bash_login
$ HOME/.profile
可將設(shè)置別名的命令寫(xiě)進(jìn)啟動(dòng)文件內(nèi)颈娜,這樣剑逃,每次連入系統(tǒng)的時(shí)候別名都會(huì)生效。若想在命令寫(xiě)入啟動(dòng)文件后立即生效記得執(zhí)行source命令官辽,比如:
$ source $HOME/.bash_profile
通過(guò)上述方式設(shè)置命令別名解決了命令別名只針對(duì)回話生效的問(wèn)題蛹磺,但是,寫(xiě)進(jìn)每個(gè)用戶特定的主目錄下的啟動(dòng)文件中的命令別名只針對(duì)該用戶有效同仆。對(duì)其他 用戶沒(méi)有什么效果萤捆,這通常也是正常情況下期望看到的情況。但如果確實(shí)像使設(shè)置的別名對(duì)任意用戶有效則可將設(shè)置別名的命令寫(xiě)進(jìn)全局啟動(dòng)文件中俗批,如/etc /profile俗或。
命令替換
esc按下后再按 . 可以補(bǔ)全上一個(gè)命令的最后一個(gè)參數(shù)
$ $(COMMAND) 或COMMAND
(反引號(hào))
把命令中的某個(gè)子命令替換為其執(zhí)行結(jié)果的過(guò)程
例如
$ 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) | 說(shuō)明 |
---|---|
* | 任一長(zhǎng)度的任意字符 |
辛慰? | 任意發(fā)、單個(gè)字符 |
[] | 匹配指定范圍內(nèi)的任意單個(gè)字符 |
例如:
[abc] 是從abc三個(gè)字符中選一個(gè)
[a-z] a到z之間的所有小寫(xiě)字母
[A-Z] A-Z 之間的所有大寫(xiě)字母
[0-9] 0-9之間的數(shù)字
[a-zA-Z] 兩個(gè)范圍的并
[^] : 匹配指定范圍之外的任意單個(gè)字符(托字符后面要加字母集合)
以下為bash規(guī)定的部分特殊集合表示方式
符號(hào) | 說(shuō)明 |
---|---|
[:space:] | 空白字符 |
[:punct:] | 標(biāo)點(diǎn)符號(hào) |
[:lower:] | 字母小寫(xiě) |
[:uper:] | 字母大寫(xiě) |
[:alpha:] | 大小寫(xiě)字母 |
[:digit:]: | 數(shù)字 |
[:alnum:] | 數(shù)字和大小寫(xiě)字母 |
例如:
顯示/etc目錄下干像,以非字母開(kāi)頭帅腌,后面跟了一個(gè)字母及其它任意長(zhǎng)度字符的文件或目錄;
# ls /etc/[^[:alpha:]][[:alpha:]]*
遺留問(wèn)題匹配不包含空格且以數(shù)字結(jié)尾的文件名稱(chēng)
*[^[:space:]]*[0-9]