在Unix / Bash中,“xargs -p”是在运行任何命令之前提示确认的好方法吗?

In Unix / Bash, is “xargs -p” a good way to prompt for confirmation before running any command?

我问过如何发出命令"询问是/否"在执行之前

在bash中,如何向任何命令或别名添加"您确定[Y/N]吗?"

好像是为了指挥

1
hg push ssh://username@www.example.com//somepath/morepath

我也可以这样做

1
echo ssh://username@www.example.com//somepath/morepath | xargs -p hg push

江户一号〔0〕就是那个耍花招的人。这个会被设置的作为别名,如hgpushrepo。这是个好方法吗?有什么陷阱,或者更好的选择吗?我是希望使用标准的Unix/Bash而不是写一个脚本来完成它。


使用别名的缺点是它不接受参数。如果您想概括该hg命令以便可以将其与任何用户名、主机名或路径一起使用,则必须使用脚本或函数。

顺便说一下,使用脚本是"标准的UNIX/bash"。一个简单的脚本或函数和别名一样简单(实际上更简单,因为它增强了功能和多功能性)。别名对于非常短、非常简单的命令快捷方式非常有用。它们经常被用来启用作为违约的选项(如alias ls='ls --color=auto')。

对于经常使用的不需要参数的不变命令(可以在末尾附加的命令除外),别名是完美的。在你展示的方式中使用xargs没有任何问题。这有点过分杀伤力,这是对外部可执行文件的不必要调用,但在本例中这并不重要。


由于分隔符问题,xargs有一种令人不快的趋势,导致令人不安的意外,如https://en.wikipedia.org/wiki/xargs分隔符问题。

gnu parallel http://www.gnu.org/software/parallel/没有问题,因此可能是一个更安全的选择。

1
seq 10 | parallel -p echo

观看GNU Parallel的简介视频:http://www.youtube.com/watch?V= OpimigyxkSuq


我有时使用这样的包装器来定制命令。

1
ls () { command ls -F"$@"; }

这定义了一个包装原始命令的函数,并保留了PATH变量。