Questions tagged «brace-expansion»

一种用于生成任意字符串的shell机制。


6
如何使用花括号展开创建前导零的序列
当我使用以下命令时,将得到预期的结果: $ echo {8..10} 8 9 10 我如何以一种简单的方式使用该大括号扩展,以获取以下输出? $ echo {8..10} 08 09 10 我现在可以使用seq(没有尝试过)获得它,但这不是我想要的。 有用的信息可能是我仅限于此bash版本。(如果您有zsh解决方案,但没有bash解决方案,请也分享) $ bash -version GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)

4
如何在序列的外壳括号扩展中使用$ variable?
我想$var in在bash中使用带范围的shell括号扩展。简单地推杆{$var1..$var2}是行不通的,所以我就“横向”了。 以下工作有效,但有点麻烦。 # remove the split files echo rm foo.{$ext0..$extN} rm-segments > rm-segments source rm-segments 有没有更“正常”的方式?


6
以正确的顺序整理大量文件
我有大约15,000个名为file_1.pdb,file_2.pdb等的文件。通过执行以下操作,可以按顺序整理其中的几千个文件: cat file_{1..2000}.pdb >> file_all.pdb 但是,如果我对15,000个文件执行此操作,则会收到错误消息 -bash: /bin/cat: Argument list too long 我已经看到这样做可以解决此问题,find . -name xx -exec xx但这不会保留文件连接的顺序。我该如何实现?


3
Bash中的嵌套括号扩展之谜
这个: $ echo {{a..c},{1..3}} 产生这个: a b c 1 2 3 哪个很好,但是鉴于这一点很难解释 $ echo {a..c},{1..3} 给 a,1 a,2 a,3 b,1 b,2 b,3 c,1 c,2 c,3 这是在某处记录的吗?《Bash参考》没有提及它(即使它有使用它的示例)。

5
bash:使用变量存储stderr | stdout重定向
有没有办法通过变量重定向stdout和stderr,例如在脚本中添加命令选项? 例如,我有一个脚本: #!/bin/bash -x TEST=">/dev/null 2>&1" OPT='-p -v' mkdir $OPT 123/123/123 $TEST 我可以看到OPT被替换为-p没有任何问题,bash将其解释为选项。但是重定向解释为目录名称。 $ ./test.sh + TEST='>/dev/null 2>&1' + OPT='-p -v' + mkdir -p -v 123/123/123 '>/dev/null' '2>&1' mkdir: created directory `123/123' mkdir: created directory `123/123/123' mkdir: created directory `>/dev' mkdir: created directory `>/dev/null' mkdir: created directory `2>&1' 有什么办法可以说bash,$ VAR是重定向的,而不是dirs的名字。 …

3
使用大括号(大括号)创建带有`mkdir -p`的文件夹结构
作为man mkdir国家 -p, --parents no error if existing, make parent directories as needed 当我运行此命令时 mkdir -p work/{F1,F2,F3}/{temp1,temp2} 它创建了一个文件夹结构,这样的work父文件夹,然后F1,F2,F3子文件夹和temp1以及temp2在三个父文件夹的子文件夹F1,F2,F3。 work -F1 -temp1 -temp2 -F2 -temp1 -temp2 -F3 -temp1 -temp2 现在的问题是,我想创建temp1,temp2文件夹只有在F1没有下F2和F3,但我很困惑我如何能写命令做我想要的。

3
为什么不使用systemctl \ {restart,status} \ sshd \; 工作?
当通过echo传递时,上述命令的输出为: # echo systemctl\ {restart,status}\ sshd\; systemctl restart sshd; systemctl status sshd; 即使我将输出粘贴到终端,该命令仍然有效。但是当我尝试直接运行命令时,我得到: # systemctl\ {restart,status}\ sshd\; bash: systemctl restart sshd;: command not found... 我有两个问题。 这种替代和扩展方法到底叫什么?(以便我可以对其进行研究并了解更多信息以及如何正确使用它)。 我在这里做错了什么?为什么不起作用?

4
{a,b,c}什么时候用bash扩展,什么时候不扩展?
一个bash脚本,其中包含 for i in {a,b}-{1,2}; do echo $i; done 版画 a-1 a-2 b-1 b-2 执行时。这是我所期望的-随着{a,b}构造的扩展。 但是,当(另一个)脚本包含 v={a,b}-{1,2} echo $v 它打印 {a,b}-{1,2} 这不是我所期望的。我希望它能打印出来a-1 a-2 b-1 b-2。显然,该{a,b}构造未扩展。 我可以像这样使它扩展 v=$(echo {a,b}-{1,2}) 基于这些观察,我有两个问题:1){a,b}构造何时扩展?2)是否$(echo {a,b}-{1,2})在需要时触发扩展的首选方法?

3
为什么“ cat {foo}”不输出foo,而是“ cat {foo,bar}”呢?
我试图在子文件夹中串联文本文件并尝试: cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1}/book.txt > out$var 但是,这没有返回任何内容。因此,尝试添加一个不存在的“ subfolder2” cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1,subfolder2}/book.txt > out$var 这次确实解决了,成功地将文件串联在一起。为什么会这样?

3
路径斜杠后的Bash括号扩展
我正在尝试使用大括号扩展名将文件复制到相同的目录中。我正在使用bash 4.4.18。 这是我所做的: cp ~/some/dir/{my-file-to-rename.bin, new-name-of-file.bin} 但是我得到这个错误: cp: cannot stat '/home/xyz/some/dir/{my-file-to-rename.bin,': No such file or directory 甚至像这样简单的括号扩展也会给我同样的错误: cp {my-file-to-rename.bin, new-name-of-file.bin} 我究竟做错了什么?

3
可以同时使用大括号(排列)和数组扩展吗?
Bash的{}大括号扩展语法允许创建简单的排列 # echo {b,c,d}{a,e,i,o,u} ba be bi bo bu ca ce ci co cu da de di do du 但是我不清楚是否/如何将其与数组一起使用,除非非常笨拙地使用$() echoandeval 有没有一种简单的方法可以将数组与花括号(排列)扩展一起使用? 例如,想象一下类似的事情(这当然不起作用): CONS=( b c d ) VOWEL=( a e i o u ) echo {${CONS[@]}}{${VOWEL[@]}}

1
为什么回声两次匹配某些文件?
$ touch file{1..12} $ echo *e{1..12} file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12 $ echo *{1..12} file1 file11 file12 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12 我不明白为什么会这样。请有人可以解释吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.