|
|
51CTO旗下网站
|
|
移动端

在Bash中使用[方括号] (一)

看完花括号在命令行中的用法之后,现在我们继续来看方括号([])在上下文中是如何发挥作用的。

作者:Paul Brown来源:Linux中国|2019-04-15 11:10

这篇文章将要介绍方括号及其在命令行中的不同用法。

看完花括号在命令行中的用法之后,现在我们继续来看方括号([])在上下文中是如何发挥作用的。

通配

方括号最简单的用法就是通配。你可能在知道“Globbing”这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个美高梅娱乐平台就是一个很常见的场景,例如列出所有 JPEG 美高梅娱乐平台:

  1. ls *.jpg

使用通配符wildcard来得到符合某个模式的所有内容,这个过程就叫通配。

在上面的例子当中,星号(*)就代表“0 个或多个字符”。除此以外,还有代表“有且仅有一个字符”的问号(?)。因此

  1. ls d*k*

可以列出 darklyducky,而且 darkduck 也是可以被列出的,因为 * 可以匹配 0 个字符。而

  1. ls d*k?

则只能列出 ducky,不会列出 darklydarkduck

方括号也可以用于通配。为了便于演示,可以创建一个用于测试的目录,并在这个目录下创建美高梅娱乐平台:

  1. touch file0{0..9}{0..9}

(如果你还不清楚上面这个命令的原理,可以看一下另一篇介绍花括号的文章

执行上面这个命令之后,就会创建 file000file001、……、file099 这 100 个美高梅娱乐平台。

如果要列出这些美高梅娱乐平台当中第二位数字是 7 或 8 的美高梅娱乐平台,可以执行:

  1. ls file0[78]?

如果要列出 file022file027file028file052file057file058file092file097file098,可以执行:

  1. ls file0[259][278]

当然,不仅仅是 ls,很多其它的命令行工具都可以使用方括号来进行通配操作。但在删除美高梅娱乐平台、移动美高梅娱乐平台、复制美高梅娱乐平台的过程中使用通配,你需要有一点横向思维。

例如将 file010file029 这 30 个美高梅娱乐平台复制成 archive010archive029 这 30 个副本,不可以这样执行:

  1. cp file0[12]? archive0[12]?

因为通配只能针对已有的美高梅娱乐平台,而 archive 开头的美高梅娱乐平台并不存在,不能进行通配。

而这条命令

  1. cp file0[12]? archive0[1..2][0..9]

也同样不行,因为 cp 并不允许将多个美高梅娱乐平台复制到多个美高梅娱乐平台。在复制多个美高梅娱乐平台的情况下,只能将多个美高梅娱乐平台复制到一个指定的目录下:

  1. mkdir archive
  2. cp file0[12]? archive

这条命令是可以正常运行的,但它只会把这 30 个美高梅娱乐平台以同样的名称复制到 archive/ 目录下,而这并不是我们想要的效果。

如果你阅读过我关于花括号的文章,你大概会记得可以使用 % 来截掉字符串的末尾部分,而使用 # 则可以截掉字符串的开头部分。

例如:

  1. myvar="Hello World"
  2. echo Goodbye Cruel ${myvar#Hello}

就会输出 Goodbye Cruel World,因为 #Hellomyvar 变量中开头的 Hello 去掉了。

在通配的过程中,也可以使用这一个技巧。

  1. for i in file0[12]?;\
  2. do\
  3. cp $i archive${i#file};\
  4. done

上面的第一行命令告诉 Bash 需要对所有 file01 开头或者 file02 开头,且后面只跟一个任意字符的美高梅娱乐平台进行操作,第二行的 do 和第四行的 done 代表需要对这些美高梅娱乐平台都执行这一块中的命令。

第三行就是实际的复制操作了,这里使用了两次 $i 变量:第一次在 cp 命令中直接作为源美高梅娱乐平台的美高梅娱乐平台名使用,第二次则是截掉美高梅娱乐平台名开头的 file 部分,然后在开头补上一个 archive,也就是这样:

  1. "archive" + "file019" - "file" = "archive019"

最终整个 cp 命令展开为:

  1. cp file019 archive019

最后,顺带说明一下反斜杠 \ 的作用是将一条长命令拆分成多行,这样可以方便阅读。

在下一节,我们会了解方括号的澳门美高梅梅登录网站用法,敬请关注。


【编辑推荐】

  1. 浅析Bash中的 {花括号}
  2. 适用于Linux的最佳命令行下载加速器
  3. iWant:一个去中心化的点对点共享美高梅娱乐平台的命令行工具
  4. 微软宣布全新命令行+脚本工具:PowerShell 7统一兼容性
  5. 如何在Fedora 30中设置内核命令行参数
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+澳门美高梅梅登录网站

共章 |

人订阅学习

共章 |

人订阅学习

读 书 +澳门美高梅梅登录网站

网络管理员备考训练——计算机与网络基础知识

本书是根据全国计算机技术与软件专业技术资格(水平)考试《网络管理员考试大纲》所要求的考试范围而编写的试题集。全书共分10个单元,同步...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客

博聚网