shell中名称扩展

时间:2019-04-16 23:59:04  来源:igfitidea点击:

Bash shell通过以下技术来支持路径名扩展。

花括号

使用花括号名称扩展可以节省命令的输入时间。

花括号名称扩展({..})的语法是:

{ pattern1, pattern2, patternN }
text{ pattern1, pattern2, patternN }
text1{ pattern1, pattern2, patternN }text2
command something/{ pattern1, pattern2, patternN }

示例

字符串模式

echo I like {tom,jerry}

输出

I like tom jerry

echo file{1,2,3}.txt

注意file后面不能有空格

输出:

file1.txt file2.txt file3.txt

或者

echo file{1..5}.txt

输出:

file1.txt file2.txt file3.txt file4.txt file5.txt

同时查看多个文件

ls /etc/{resolv.conf,hosts,passwd}

等同于

ls -l /etc/resolv.conf /etc/hosts /etc/passwd

同时删除多个文件 hello.sh, hello.py, hello.pl, hello.c

rm -v hello.{sh,py,pl,c}

同时创建多个目录

D=/webroot
mkdir -p $D/{dev,etc,bin,sbin,var,tmp}

通配符

Bash支持以下三个简单的通配符:
* - 匹配任何字符串,包括空字符串
? -匹配任何一个字符。
[...] -匹配括号内的任一字符。

示例

查看所有 c文件:

ls *.c

查看etc下所有配置文件

ls /etc/*.conf

可以将通配符与花括号结合使用:

ls *.{c,h}

列出png文件 image1.png, image2.png...image7.png, imageX.png

ls image?.png

列出所有文件名以a或者b开头的文件

ls /etc/[ab]*.conf