本文介绍了方括号及其在命令行中的各种用途。
——保罗·布朗
本文介绍方括号及其在命令行中的各种用途。
了解了如何在命令行中使用大括号后,让我们看看方括号([])%20在上下文中如何工作。
%20
通配
%20方括号最简单的用途是用作通配符。列出具有相同特征的多个文件(例如列出所有JPEG%20%20文件)可能在您了解此概念之前就已使用通配符来匹配内容。
ls*.jpg
使用通配符检索与特定模式匹配的所有内容。此过程称为通配符。
在上面的示例中,星号(*) 表示“零个或多个字符”。此外,还有一个问号(?),表示“独特的字符”。所以
该死
* 匹配0个字符,因此可以列出darkly和ducky,也可以列出dark和duck。和
是不是不行啊?
那么就只列出了ducks,但是darkly、dark、ducks就不列出来了。
方括号也可以用作通配符。出于演示目的,您可以创建一个测试目录并在此目录中创建文件。
触摸文件0{0.9}{0.9}
(如果你还不明白上面命令的原理,请阅读另一篇介绍大括号的文章)
执行上述命令将创建100 个文件:file000、file001、file099。
如果要列出第二位数字为7或8的文件,可以执行以下操作:
文件0[78]?
如果要列出file022、file027、file028、file052、file057、file058、file092、file097、file098,可以运行:
ls 文件0[259][278]
当然,ls以及许多其他命令行工具都可以使用方括号进行通配符操作。但是,在删除、移动和复制文件的过程中使用通配符时,您需要稍微横向思考。
例如,将file010 到file029 的30 个文件复制到archive010 到archive029 的30 个副本,不能按如下方式完成:
cp 文件0[12]?存档0[12]?
无法使用通配符,因为通配符仅适用于现有文件,并且不存在以archive 开头的文件。
这个命令是
cp 文件0[12]? 存档0[1.2][0.9]
这也是不可能的,因为cp 不允许您将多个文件复制到多个文件。复制多个文件时,只能将多个文件复制到指定目录。
mkdir 存档
cp 文件0[12]?
我们可以正常运行这个命令,但是它只是将这30个同名文件复制到archive/目录中,这不是我们想要的结果。
如果您读过我关于大括号的文章,您会记得可以使用% 截断字符串的结尾,使用# 截断字符串的开头。
例如:
myvar='你好世界'
回声再见残酷${myvar#Hello}
#Hello 删除了myvar 变量开头的Hello,因此它打印Goodbye Cruel World。
该技术也可以在通配符处理期间使用。
对于文件0[12]?\
做\
cp $i 存档${i#file};\
结尾
上述命令的第一行告诉Bash 它应该对所有以file01 或file02 开头且后跟一个任意字符的文件进行操作。第二行的do和第四行的do表示这个块需要操作。对这些文件运行命令。
第三行是实际的复制操作。 $i 变量使用了两次。第一次直接作为cp命令中源文件的文件名,第二次则截断文件开头的文件部分。输入文件名并添加存档。
“存档”+“文件019”-“文件”=“存档019”
最后,整个cp 命令扩展为:
cp 文件019 存档019
最后,反斜杠\的作用是将长命令分成多行,以便于阅读。
请继续关注下一节,我们将详细介绍如何使用方括号。
via: https://www.linux.com/blog/2019/3/using-square-brackets-bash-part-1
作者:Paul Brown 选题:lujun9972 译者:HankChow 校对:wxy
本文由LCTT 原创编辑,Linux China 自豪发布。
点击“了解更多”可访问文内链接
版权声明:本文转载于今日头条,版权归作者所有。如有侵权,请联系本站编辑删除。