我已经问过如何发出任何命令“请求是/否 在执行“问题
之前In Bash, how to add "Are you sure [Y/n]" to any command or alias?
似乎是命令
hg push ssh://username@www.example.com//somepath/morepath
我也可以这样做
echo ssh://username@www.example.com//somepath/morepath | xargs -p hg push
-p
就是那个诀窍。这将被设定
作为别名,例如hgpushrepo
。这是一个好方法,
任何陷阱,或任何更好的替代方案吗?我曾是
希望使用标准Unix / Bash的东西
而不是写一个脚本来做它。
答案 0 :(得分:3)
使用别名的缺点是它不会接受参数。如果您想要概括hg
命令,以便可以将其与任何用户名,主机名或路径一起使用,则必须使用脚本或函数。
顺便说一句,使用脚本是“标准的Unix / Bash”。一个简单的脚本或函数就像一个别名一样容易(更容易,真的,因为增加的功能和多功能性)。别名对于非常简短,非常简单的命令快捷方式非常有用。它们经常用于启用默认选项(例如alias ls='ls --color=auto'
)。
对于经常使用不需要参数的不变的命令(除了那些可以在末尾附加的命令),别名完全没问题。以您展示的方式使用xargs
并没有错。它有点矫枉过正,这是对外部可执行文件的不必要的调用,但在这种情况下这不应该是重要的。
答案 1 :(得分:1)
xargs
因为分隔符问题https://en.wikipedia.org/wiki/Xargs#Separator_problem
GNU Parallel http://www.gnu.org/software/parallel/没有 问题,因此可能是一个更安全的选择。
seq 10 | parallel -p echo
观看GNU Parallel的介绍视频: http://www.youtube.com/watch?v=OpaiGYxkSuQ
答案 2 :(得分:0)
我有时使用这样的包装来自定义命令。
ls () { command ls -F "$@"; }
这定义了一个包装原始命令的函数,并保留PATH
变量变量。