我很难理解{,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