使用不同的参数重新运行相同的命令

使用不同的参数重新运行相同的命令

我知道我可以运行以下命令

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

aliasbash中有命令:

$ alias shotcommand='run-command --a --whole --lot --of --flags parameter'

用法是:$ shotcommand a

相关内容