bash的基礎特性(2):
1、命令別名(alias)
通過alias命令實現:
(1) alias
顯示當前shell進程所有可用的命令別名:
(2) alias NAME='VALUE'
定義別名NAME,其相當於執行命令VALUE:
注意:在命令行中定義的別名,僅對當前shell進程有效:
僅對當前用戶:~/.bashrc
對所有用戶有效:/etc/bashrc
Note: 編輯配置給出的新配置不會立即生效:
bash重新讀取配置文件:
source /path/to/config_file
. /path/to/config_file
撤銷別名:unalias
unalias [-a] name [name ...]
Note:如果別名同原命令的名稱,則如果要執行原命令,可使用"\COMMAND":
2、glob(globbing)
bash中用於實現文件名“通配”
通配符:*,?,[]
(1) *
任意長度的任意字符
a*b: aab, ab, a123b,
(2) ?
任意單個字符
a?b: aab
(3) []
匹配指定範圍內的任意單個字符
[0-9]
[a-z]:不區分字符大小寫
[A-Z]:大寫字母
(4) [^]
匹配指定範圍外的任意單個字符
[^0-9]
專用字符集合:
[:digit:]:任意數字,相當於0-9。 [[:digit:]] = [0-9]
[:lower:]:任意小寫字母
[:upper:]:任意大寫字母
[:alpha:]:任意大小寫字母
[:alnum:]:任意數字或字母
[:space:]:表示空格
[:punct:]:標點符號
練習:
1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄:
ls /var/l*[[:digit:]]*[[:lower:]]
2、顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄:
ls /etc/[[:digit:]]*[^[:digit:]]
3、顯示/etc/目錄下,以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄:
ls /etc/[^a-z][a-z]*
4、複製/etc目錄下,所有以m開頭,以非數字結尾的文件或目錄至/tmp/mageedu目錄中:
cp -a /etc/m*[^0-9] /tmp/mageedu
5、複製/etc目錄下,所有以.d結尾的文件或目錄至/tmp/mageedu目錄中:
cp -a /etc/*.d /tmp/mageedu
6、複製/etc目錄下,所有以.conf結尾,且以m,n,r,p開頭的文件或目錄至/tmp/mageedu.com目錄中:
cp -a /etc/m*.conf /etc/n*.conf /etc/r*.conf /etc/p*.conf /tmp/mageedu.com