{,string} 语法如何工作?

{,string} 语法如何工作?

我很难理解{,string}语法。我主要用它来重命名文件,例如mv test{,.original}但我不太明白:

echo asdf{,.fdsa}

输出:

asdf asdf.fdsa

echo asdf{asdf,.fdsa}

输出:

asdfasdf asdf.fdsa

我尝试通读我发现了一些类似的模式与#?但现在与,.它的想法是应该找到模式,但我不认为这就是它的作用。

它是如何运作的?

答案1

这就是大括号扩展。在此处阅读有关它的更多信息bash手册

它从大括号中的逗号分隔列表中生成每种可能性。

echo asdf{asdf,.fdsa}
asdfasdf asdf.fdsa
  • echo只是回显后面的内容(不是在每种情况下,但为了简单起见,在这个例子中)
  • asdf{asdf,.fdsa}扩展到两种可能性(因为有一个,符号,所以它将列表分为两部分)。首先,我们得到了asdf不变的部分,然后将其与另一个asdf(大括号列表中的第一项)连接,然后使用空格和另一个(列出的第二项)asdf连接。.fdsa

当使用相同的字符串作为前缀和大括号内时,可能会有点混乱,所以为了让事情更清楚,让我们尝试:

$ echo a{,b,.c,def}gh
agh abgh a.cgh adefgh

这翻译成

  • a+ 空字符串 + gh=agh
  • a+ b+ gh=abgh
  • a+ .c+ gh=a.cgh
  • a+ def+ gh=adefgh

相关内容