2010-08-03 13 views
3

我都问如何使任何命令的问题“执行前要求是/否 ”在Unix/Bash中,“xargs -p”是在运行任何命令之前提示进行确认的好方法吗?

In Bash, how to add "Are you sure [Y/n]" to any command or alias?

这似乎是在命令

 
hg push ssh://[email protected]//somepath/morepath 

我也能做到这一点

 
echo ssh://[email protected]//somepath/morepath | xargs -p hg push 

-p是一个伎俩。这将被设置为 作为别名,例如hgpushrepo。这是一个好方法, 任何陷阱,或任何更好的选择吗?我是 希望能够使用标准的Unix/Bash 而不是编写脚本来完成它。

回答

3

使用别名的缺点是它不会带参数。如果您想概括一下hg命令,以便您可以将它用于任何用户名,主机名或路径,则必须使用脚本或函数。

顺便说一句,使用脚本“标准Unix/Bash”。一个简单的脚本或函数就像一个别名一样简单(实际上更简单,因为增加的功能和多功能性)。别名对于非常简短的命令快捷键非常有用。通常他们被用来默认启用一个选项(例如,alias ls='ls --color=auto')。

对于经常使用的不需要参数的不变参数的命令(除了最后可以附加的参数外),别名是完全正确的。并且以您展示的方式使用xargs没有任何问题。这有点矫枉过正,这是对外部可执行文件的不必要的调用,但在这种情况下这不应该很重要。

1

xargs有一个讨厌的倾向,导致因为分离问题https://en.wikipedia.org/wiki/Xargs#Separator_problem

GNU平行不舒服的惊喜http://www.gnu.org/software/parallel/不具有 问题,因此可能是一个更安全的选择。

seq 10 | parallel -p echo 

手表GNU并行的介绍视频: http://www.youtube.com/watch?v=OpaiGYxkSuQ

+0

并行没有提示功能。 – 2017-09-17 05:57:54

+0

'seq 10 |平行 - 交互式回声“似乎工作得很好。 – 2017-09-17 16:52:59

+0

非常好!对不起,我不知道我以前在看什么。感谢您用'xargs'指出空白/引用问题。对不起,我无法赞成...但你可以编辑和引用'xargs',让我可以倒转我的失望...... – 2017-09-18 06:26:17

0

我用,有时这样的包装定制命令。

ls() { command ls -F "[email protected]"; } 

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

相关问题