在Bash中,我可以执行以下操作。
$ echo bunny{1..6}
bunny1 bunny2 bunny3 bunny4 bunny5 bunny6
有没有一种在fish中实现相同结果的方法?
$ echo bunny{1..6}
bunny1 bunny2 bunny3 bunny4 bunny5 bunny6
有没有一种在fish中实现相同结果的方法?
简短回答是 echo bunny(seq 6)
更长的答案:为了贯彻fish的哲学,用具体命令替换神奇的语法结构,我们应该寻找一个Unix命令来替代语法上的构造 {1..6}
。 seq
恰好可胜任此任务;它可以输出某个范围内的数字,例如在这种情况下,是1到6的整数。fish(令人惭愧的是)省略了seq
的帮助页面,但它是标准的Unix/Linux命令。
一旦我们找到这样的命令,我们就可以利用命令替换。命令(foo)bar
执行命令替换,将foo
展开成一个数组,并可能导致多个参数。每个参数都附带 'bar'。
seq
不存在,fish shell会自动定义它,因为fish源代码的某些部分需要它存在。 - Konrad Borowskiecho {foo,bar}
或 mkdir --parents /tmp/{folder1,folder2,folder3}
的结果为 /tmp/folder1、/tmp/folder2、/tmp/folder3。更多信息请参见 http://fishshell.com/docs/2.0/index.html#expand。 - Elijah Lynntouch file{01..10}
,在 fish
shell 中该如何实现? - 109149touch file(seq -f %02g 10)
。 - ridiculous_fishtouch file(seq -w 10)
。 - Theo C
fish
的人,需要说明的是:fish
确实支持花括号展开,但仅限于列表(例如,echo b{ar,az}
),而不是范围。 - mklement0