首页 > 自考资讯 > 自考知识

在bash中在一条命令后加入1>&2意味着,bash1>&2

头条共创 2024-07-05

本文介绍了方括号及其在命令行中的各种用途。

——保罗·布朗

本文介绍方括号及其在命令行中的各种用途。

了解了如何在命令行中使用大括号后,让我们看看方括号([])%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 自豪发布。

点击“了解更多”可访问文内链接

版权声明:本文转载于今日头条,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢