寻找 echo{,} foo 的分解
Looking for a breakdown of echo{,} foo
表达式 {,}
是如何工作的?
我尝试搜索 SOF 以及 google 甚至 bash 的手册页,但我还没有找到对此的解释。
通过摆弄表达式,我了解到它是某种字符串复制函数。
echo{,} foo
>> echo echo foo
echo foo{,}
>> foo foo
这个表达式是如何工作的?有这个名字吗?另外,能否提供一个实用的例子来说明这个功能的使用方法?
这里有一个简单的解释。
{,}
将通过附加空字符串将左相邻字符串恰好重复 2 次。
- 同样,
{,,}
将恰好重复左相邻字符串 3 次。
var{A,B}
将 return varA
和 varB
这些例子应该更清楚:
echo foo{,,}
foo foo foo
echo foo{,1}
foo foo1
echo foo{1,2}
foo1 foo2
echo foo{,,}
foo foo foo
echo foo{1,2,3}
foo1 foo2 foo3
brace expansion 的 "normal" 用例是重复一个字符串,其子字符串替换为花括号中给出的列表的每个元素:
$ echo file.{txt,dat,log}
file.txt file.dat file.log
现在,如果列表元素之一为空,字符串将按原样打印:
$ echo file.{txt,dat,}
file.txt file.dat file.
一个流行的用例是重命名文件
$ mv -v file.txt{,.bak}
'file.txt' -> 'file.txt.bak'
这扩展为 mv -v file.txt file.txt.bak
,因为第一个列表元素为空。
现在,如果 所有 元素都为空,如 {,}
,则字符串的打印次数与列表元素的数量一样多。
表达式 {,}
是如何工作的?
我尝试搜索 SOF 以及 google 甚至 bash 的手册页,但我还没有找到对此的解释。
通过摆弄表达式,我了解到它是某种字符串复制函数。
echo{,} foo
>> echo echo foo
echo foo{,}
>> foo foo
这个表达式是如何工作的?有这个名字吗?另外,能否提供一个实用的例子来说明这个功能的使用方法?
这里有一个简单的解释。
{,}
将通过附加空字符串将左相邻字符串恰好重复 2 次。- 同样,
{,,}
将恰好重复左相邻字符串 3 次。 var{A,B}
将 returnvarA
和varB
这些例子应该更清楚:
echo foo{,,}
foo foo foo
echo foo{,1}
foo foo1
echo foo{1,2}
foo1 foo2
echo foo{,,}
foo foo foo
echo foo{1,2,3}
foo1 foo2 foo3
brace expansion 的 "normal" 用例是重复一个字符串,其子字符串替换为花括号中给出的列表的每个元素:
$ echo file.{txt,dat,log}
file.txt file.dat file.log
现在,如果列表元素之一为空,字符串将按原样打印:
$ echo file.{txt,dat,}
file.txt file.dat file.
一个流行的用例是重命名文件
$ mv -v file.txt{,.bak}
'file.txt' -> 'file.txt.bak'
这扩展为 mv -v file.txt file.txt.bak
,因为第一个列表元素为空。
现在,如果 所有 元素都为空,如 {,}
,则字符串的打印次数与列表元素的数量一样多。