#bash基礎特性之命令別名
bash在shell進程中可以為命令本身或者命令加上選項設定別名,設定后可以直接輸入別名的方式調用其功能。
設定命令別名的方式為:~]# alias name=comman。
撤銷命令別名的方式為:~]# unalias name
查看當前bash中已經設定的命令別名方式為:~]# alias
注意1:此方式設定的命令別名生命周期只是當前shell進程。退出當前shell再登陸即已經失效。如需在shell啟動后自動生效,需要設置bash的環境變量相關配置文件。
注意2:如果命令別名和命令名相同,則直接調用別名定義的命令其功能。如需直接調用該命令本身功能而非別名,可使用“~]# command。
#bash基礎特性之命令歷史
bash在shell進程會自動保存其會話中用戶曾經執行過的命令,在shell運行中該記錄存儲在內存空間中,shell進程結束時通過將其存儲在“歷史文件”來持久保存此前執行過的命令,每次shell進程啟動都會讀取該文件內容到內存空間中,每個用戶都有其自己專用的歷史文件。
歷史相關參數的變量
HISTSIZE:SHELL進程的緩沖區保留的歷史命令的條數
~]# echo $HISTSIZE 可查看其大小
~]# export HISTSIZE=# 可設置其大小
HISTFILESIZE:命令歷史文件可保存的歷史命令的條數
~]# echo $HISTFILESIZE 可查看其大小
~]# export HISTFILESIZE=# 可設置其大小
HISTFILE:當前用戶的命令歷史文件
~]# echo $HISTFILE 可查看文件名和地址
HISTCONTROL:當前用戶記錄命令歷史的方式
~]# echo $HISTCONTROL 可查看文件名和地址
~]# export HISTCONTROL=方式名 可設置記錄命令歷史的方式
共有三種方式:
ignoredups:忽略重復的命令;重復是指連續且相同的命令;
ignorespace:以空白字符開頭的命令不記入歷史;
ignoreboth:上述兩者同時生效;
查看和管理命令歷史的相關命令
查看命令歷史列表:~]# history?
命令用法:
history -c:清空命令歷史;
history -d:OFFSET:刪除指定的條目;
-a????????將當前緩沖的歷史行追加到歷史文件中
-n????????從歷史文件中讀取所有未被讀取的行
-r????????讀取歷史文件并將內容追加到歷史列表中
????????????????
調用命令歷史列表中的命令以重執行之目的:
!#:再一次執行歷史列表中的第#條命令;
!!:再一次執行上一條命令;
!STRING:再一次執行命令歷史列表中最近一個以指定的STRING開頭的命令;
????????????????
調用上一條命令的最后一個參數:
快捷鍵:ESC, .(先后按下這個兩個鍵)
? ? ?Alt + .(同時按下這兩個鍵)
? ? ?!$:給出的上一個命令的參數
????????????????
顯示最近的n條件命令歷史:history??#
#bash基礎特性之快捷鍵?
Ctrl+a:光標跳至命令行首;
Ctrl+e:光標跳至命令行尾;
Ctrl+k:刪除光標所在處至尾部的內容;
Ctrl+u:刪除行首至光標所在處的內容;
#bash的特性之命令行展開:
把命令行的給定的特殊符號自動替換為相應字符串的機制;
~: 自動替換為用戶家目錄;
~USERNAME:自動替換為指定用戶的家目錄;
{ }:可承載一個以逗號分隔的路徑列表,能夠將其展開為多個獨立路徑;
示例:/tmp/{x,y,z} = /tmp/x??/tmp/y??/tmp/z
示例:/tmp/{x/y, m/{m,n}} = /tmp/x/y /tmp/m/m /tmp/m/n
示例:/tmp/{x,y}/z = /tmp/x/z??/tmp/y/z?
#bash的基礎特性:命令補全和路徑補全
命令補全:
shell程序在接收到用戶執行命令補全的請求后(單擊一下Tab),最左側字符串將被當作命令去查找;
其查找機制:
????1):查找內部
????2):查找外部命令:去$PATH變量所指定的各路徑下,自左而右逐個搜索各目錄下的文件名;
查找完成后,給定的打頭的字符串如果能惟一標識某命令程序文件的文件名,則直接自動補全為該命令,不能惟一標識,再擊tab可給列表;如果還是沒有反應則表示錯誤,沒有任何命令可被此打頭字符串標識;
路徑補全:
在給定的起始路徑的上級目錄下,以對應路徑下的打頭字符串來逐一匹配上級目標下的每個文件:如果是惟一標識,Tab補全;不能惟一標識:tab, tab給出列表;錯誤路徑:沒有響應。
#bash的特性之glob
glob:文件名通配;快速引用多個文件;文件名整體匹配度檢測
*:匹配任意長度的任意字符
?:匹配任意單個字符
[ ]:匹配指定集合內的任意單個字符?
[a-z]:表示所有的字母,不區分大小寫
[0-9]:表示所有數字
[a-z0-9]:所有字母加數字
[[:upper:]]:所有大寫字母
[[:lower:]]:所有小寫字母
[[:digit:]]:所有數字
[[:alpha:]]:表示所有字母
[[:alunm:]]:表示所以字母加數字
[[:space:]]:表示空白字符
[[:punct:]]:表示所有標點符號
[^ ]:取反