问题
--
我有一个命令,为了方便起见,我给它起了别名,在调用该命令后,我烦人地需要使用它来指定一些附加参数。
拿下面的例子来说,命令被调用foo
,别名被调用run
:
alias run=foo --bar --baz
bar
和baz
是始终存在的参数,因此它们位于别名中。现在我要调用命令,至少需要一个必需的参数后面跟着执行选项 ender 的附加参数--
。
具体来说,当我打电话时run
,我会这样称呼它:
run file1 -- option1 option2
这是有效的,选项 1 和 2 按预期传递。
我想要的
我可能想做的只是拥有一个别名并运行以下命令run file1 option1 option2
,并让别名句柄将参数定位在--
(位于别名中)之前或之后。
潜在的答案
我在这里挣扎的是想出一个不涉及的解决方案也很多逻辑。理想情况下,我只想要像xargs
获得访问 argument1 然后访问 argument1+ 这样的东西,但这似乎不是它的目的。我也可以做一些事情cut
(两者cut -d' ' -p1
都cut -d' ' -f2-
有效,但这种字符串切割可能不是最好的解决方案)。
我在这里洗耳恭听一个优雅的解决方案
答案1
恕我直言,使用 shell 函数而不是别名会更明智:
run() {
file="$1"
shift
foo --bar --baz "$file" -- "$@"
}