我有这个别名来杀死所有neovim实例:
alias killnvim="ps -ef | grep nvim | awk '{print $2}' | xargs kill &> /dev/null"
每次我运行它总是返回此消息:
[1] 20958 done ps -ef |
20959 done grep --color=auto nvim |
20960 done awk '{print }' |
20961 terminated xargs kill &> /dev/null
我该怎么做来压制这条消息?我希望我的命令不输出任何内容。
如果重要的话我会使用zsh。
感谢。
答案 0 :(得分:0)
这是一个引用问题。您需要将{print $ 2}放在单引号中,以便别名的调用不会用值替换$ 2,并且整个别名用单引号来阻止$ 2在定义时被替换。
zsh允许在单引号字符串中用一个引号替换两个单引号,但是您需要设置一个允许该选项的选项。
更便携是使用以下内容:
alias killnvim='ps -ef | grep nvim | awk '"'"'{print $2}'"'"' | xargs kill &> /dev/null'
您也可以转义任何敏感字符,但上述情况似乎有效。
答案 1 :(得分:0)
除非你有充分的理由使用别名,否则更喜欢一个函数:
killnvim () {
ps -ef | grep nvim | awk '{print $2}' | xargs kill &> /dev/null
}
(也就是说,有更好的选择来滚动你自己的管道以按名称杀死进程。)