我很难理解{,string}语法。我主要用它来重命名文件,mv test{,.original}但我不太明白:
echo asdf{,.fdsa}
Run Code Online (Sandbox Code Playgroud)
输出:
asdf asdf.fdsa
Run Code Online (Sandbox Code Playgroud)
但
asdf asdf.fdsa
Run Code Online (Sandbox Code Playgroud)
输出:
asdfasdf asdf.fdsa
Run Code Online (Sandbox Code Playgroud)
我试图通过阅读这个,我发现了一些类似的模式#或?但现在,。它带有这样的想法,即这应该找到模式,但我认为这不是它的作用。
它是如何工作的?
这是大括号扩展。在Bash 手册中阅读更多关于它的信息。
它从大括号中的逗号分隔列表中生成每种可能性。
echo asdf{asdf,.fdsa}
asdfasdf asdf.fdsa
Run Code Online (Sandbox Code Playgroud)
echo 只是呼应它后面的内容(不是在每种情况下,但为了使事情简单,在这个例子中)asdf{asdf,.fdsa}扩展为两种可能性(因为有一个,符号,所以它将列表分成两部分)。首先我们得到了asdf哪个是不变的部分,然后它与另一个asdf(大括号列表中的第一个项目)连接,然后是空格和另一个asdf连接.fdsa(列出的第二个项目)。使用与前缀和大括号内相同的字符串时可能会有点混乱,因此为了使事情更清楚,让我们尝试:
$ echo a{,b,.c,def}gh
agh abgh a.cgh adefgh
Run Code Online (Sandbox Code Playgroud)
翻译成
a+ 空字符串 + gh=agha+ b+ gh=abgha+ .c+ gh=a.cgha+ def+ gh=adefgh