当前位置:首页 > 知识知道 > 详情

方括号怎(zen)么打(电脑上方括号怎么打)

2024-05-20 21:02:38 阅读(26) 悠嘻资讯网
100方括号怎(zen)么打(电脑上方括号怎么打)-悠嘻资讯网

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

-- Paul Brown

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

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

通配(pei)

方括号最简(jian)单的用法就是通配。你可能在知道“ (comGlobbing)”这(zhe)个概念之前就已(yi)经通过通配来匹配内容了,列(lie)出具有相同特征的多个(ge)文件就是一个很常见的场景,例如列出(chu)所有 JPEG 文件:

ls *.jpg

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

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

ls d*k*

可以列出 darkly 和 ducky,而(er)且 dark 和 duck 也是可以(yi)被列出的,因为 * 可以匹(pi)配 0 个字符。而(er)

ls d*k?

则只能列出 ducky,不会列出 darkly、dark 和 duck。

方(fang)括号也可以用于通配。为了便(bian)于演示,可以创建一个用于(yu)测试的目录,并在这个(ge)目录下创建文件:

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

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

执行上面这个命令之(zhi)后,就会创建 file000、file001、……、file099 这 100 个(ge)文件。

如(ru)果要列出这些文件当中第二位数字(zi)是 7 或 8 的文件,可以(yi)执行:

ls file0[78]?

如果要列出 file022、file027、file028、file052、file057、file058、file092、file097、file098,可以执行:

ls file0[259][278]

当然,不仅仅是 ls,很多其它的命令行工具都(dou)可以使用方括号来进行通配(pei)操作。但在删除文件、移(yi)动文件、复制文件的过程中使用通(tong)配,你需要有一点横向思维。

例如将(jiang) file010 到 file029 这 30 个文件复制成 archive010 到 archive029 这 30 个副本,不可以这样执行:

cp file0[12]? archive0[12]?

因为通配只能针对已(yi)有的文件,而 archive 开(kai)头的文件并不存在,不能进行通(tong)配。

而这(zhe)条命令

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

也同样不行,因为 cp 并不(bu)允许将多个文件复制到多个(ge)文件。在复制多个文件的情况下,只能将多个文件复制到一个指定的目(mu)录下:

mkdir archive

cp file0[12]? archive

这条命(ming)令是可以正常运行(xing)的,但它只会把(ba)这 30 个文件以同样的名称复制(zhi)到 archive/ 目录下,而这并(bing)不是我们想要的效果(guo)。

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

例如(ru):

myvar="Hello World"

echo Goodbye Cruel ${myvar#Hello}

就会输出 Goodbye Cruel World,因(yin)为 #Hello 将 myvar 变量中开头的 Hello 去掉了。

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

for i in file0[12]?;\

do\

cp $i archive${i#file};\

done

上面的第一行命令(ling)告诉 Bash 需(xu)要对所有 file01 开头或者 file02 开头,且后面(mian)只跟一个任意字(zi)符的文件进行操作,第二行(xing)的 do 和第四行的 done 代表需要对这些文件(jian)都执行这一块中的命令。

第三行就是实际的(de)复制操作了,这里使用了两次 $i 变量:第一次在 cp 命令中(zhong)直接作为源文件的文件(jian)名使用,第二次则是截掉文件名(ming)开头的 file 部分,然后在开(kai)头补上一个 archive,也就是这样:

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

最终整个 cp 命令展开为:

cp file019 archive019

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

在下一节,我(wo)们会了解方括号的(de)更多用法,敬请关(guan)注。

via: https://www.linux.com/blog/2019/3/using-square-brackets-bash-part-1

作者: Paul Brown 选题: lujun9972 译者: HankChow 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出(chu)

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

上一篇:家庭去螨(man)虫的最有效方法(家庭如何除螨)

下一篇:沙发高度一般(ban)多少尺寸(中式沙发高度一般多少尺寸)

  • valentino怎么读(valentino怎么读谐音)

    valentino怎么读(valentino怎么读谐音)

    时尚界的每一天都是谣言八卦满天飞的。这两天传得最火热的一则消息是,Valentino可能要和Gucci做一家人了。据《女装日报》的报道,一位匿名消息人士透露,Gucci母公司开云集团正积极与卡塔尔国有背景的投资公司Mayhoola接…
    2023-05-23 阅读(23)
  • 欢迎的(de)英语怎么读(欢迎的英语怎么读三年级下册单词)

    欢迎的(de)英语怎么读(欢迎的英语怎么读三年级下册单词)

    2023年03月28日今日份单词有言有(you)味说单词(九百五(wu)十二讲)今日主题:单词(ci)的递进+演绎 [220号收纳箱]** Leukemia [lu??ki?mi?] n. [内(nei)科][肿瘤] 白血病。** Leukemia [lu??ki?mi?] n. [内科][肿瘤] 白血…
    2023-05-23 阅读(31)
  • 微信里面怎么(me)没有微粒贷(微信微米粒借贷怎么开通)

    微信里面怎么(me)没有微粒贷(微信微米粒借贷怎么开通)

    近几年,个人消费贷款频繁的走入我(wo)们的视野中,微众银(yin)行的微粒贷作为起步较早的银行借(jie)贷产品,更是有着不收任何手续费、借几天算几天利息的便利(li)特性,得到了很(hen)多人的喜爱。同时,微粒贷目前(qian)是没…
    2023-05-23 阅读(24)
  • 小二寸照片尺寸(小二寸照片尺寸多大)

    小二寸照片尺寸(小二寸照片尺寸多大)

    小二寸照片的尺寸是多少?除了常见的一寸、二寸照片外,还有一类很常用但大家不太了解的证件照规格——小二寸,例如很多国家办理签证和护照所需的照片、小初中入学登记照、考试报名照片都会用到小二寸照片,小二寸照片的正确…
    2023-05-23 阅读(22)
  • 大汉天子(zi)卫子夫(大汉天子卫子夫第几集当皇后)

    大汉天子(zi)卫子夫(大汉天子卫子夫第几集当皇后)

    小时候的高(gao)质量古装剧,《大汉(han)天子》必须有姓名。橘因为这个剧,对汉朝历史特别感兴(xing)趣。这部剧(ju)也是18年前的了,放现在来看,阵容(rong)很强大了。(哎,看过(guo)的可能都老了系列。)那个(ge)时候的黄晓明还…
    2023-05-23 阅读(27)