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/[mnrp]*.conf /tmp/mageedu.com