我知道我可以运行以下命令
ls Some{File,Folder}
它相当于运行这个:
ls SomeFile SomeFolder
(我也经常用它来做类似的事情mv place_{a,b}
)
但是,我想知道是否有不同的快捷方式可以做这样的事情:
run-command --a --whole --lot --of --flags parameter a; \
run-command --a --whole --lot --of --flags parameter b
我只需要输入run-command --a --whole --lot --of --flags parameter {a,b}
或类似的东西。
答案1
假设您使用的是 GNUbash
或类似的东西:
也许是一个for
循环?
for x in a b
do
run-command --a --whole --lot --of --flags parameter $x
done
也可以写成一行 for x in a b; do run-command --a --whole --lot --of --flags parameter $x ; done
答案2
如果您不编写脚本而只是想在命令行上轻松运行它,那么该xargs
命令可能就是您正在寻找的。
xargs 将从标准输入中获取一堆内容,并将其用作命令的参数,如果需要,可以多次运行该命令。
请尝试以下操作:
echo -n parameter a,parameter b | xargs -n 1 -d , run-command --a --whole --lot --of --flags
Echo 的-n
标志避免打印尾随换行符(在传递参数时导致某些命令出现问题)。
在此示例中,您只需为 xargs 提供您希望其运行的排列即可。
该-n 1
标志告诉 xargs 每次运行仅使用 1 个参数。
该-d ,
标志告诉 xargs 在输入中查找“,”作为要运行的参数之间的分隔符。 (请注意,如果参数中有“,”,您需要将其更改为其他内容。如果您的参数中没有空格,您可以完全省略此标志。)
请参阅man xargs
获取更多信息。
答案3
您还可以使用一个函数,它不会限制您在最后更改参数:
runcom() { run-command --a --whole --lot --of --flags parameter "$1" ; }
runcom a
runcom b
答案4
alias
bash中有命令:
$ alias shotcommand='run-command --a --whole --lot --of --flags parameter'
用法是:$ shotcommand a