分别通过管道传输第一个参数和所有后续参数的明智方法是什么

分别通过管道传输第一个参数和所有后续参数的明智方法是什么

问题

--我有一个命令,为了方便起见,我给它起了别名,在调用该命令后,我烦人地需要使用它来指定一些附加参数。

拿下面的例子来说,命令被调用foo,别名被调用run

alias run=foo --bar --baz 

barbaz是始终存在的参数,因此它们位于别名中。现在我要调用命令,至少需要一个必需的参数后面跟着执行选项 ender 的附加参数--

具体来说,当我打电话时run,我会这样称呼它:

run file1 -- option1 option2

这是有效的,选项 1 和 2 按预期传递。

我想要的

我可能想做的只是拥有一个别名并运行以下命令run file1 option1 option2,并让别名句柄将参数定位在--(位于别名中)之前或之后。

潜在的答案

我在这里挣扎的是想出一个不涉及的解决方案很多逻辑。理想情况下,我只想要像xargs获得访问 argument1 然后访问 argument1+ 这样的东西,但这似乎不是它的目的。我也可以做一些事情cut(两者cut -d' ' -p1cut -d' ' -f2-有效,但这种字符串切割可能不是最好的解决方案)。

我在这里洗耳恭听一个优雅的解决方案

答案1

恕我直言,使用 shell 函数而不是别名会更明智:

run() { 
  file="$1"
  shift
  foo --bar --baz "$file" -- "$@"
}

相关内容