如何在别名中逃避管道中的grep和awk?

时间:2014-04-18 16:39:33

标签: bash awk grep pipe alias

我想为long命令创建一个别名。但是我无法正确地逃避它,我想这是管道的问题。

我的原始命令

ps aux | grep gimp | awk '{ print $2 '\011' $11 }' | grep -v 'grep'

我尝试使用别名

alias psa="ps aux | grep $1 | awk '{ print \$2 \"\011\" \$11 }' | grep -v 'grep'"

但是我收到grep无法打开文件foo的错误(当我执行psa foo时) 当我删除最后一部分| grep -v 'grep'时,awk会抛出相同的错误。

我更喜欢shell脚本之前的别名。

2 个答案:

答案 0 :(得分:7)

如果要插入参数,则需要使用函数:

psa() {
    ps aux | grep "$1" | awk '{print $2 "\t" $11 }' | grep -v grep
}

答案 1 :(得分:1)

您可以使用以下函数来避免所有转义:

myps() {
   ps aux | grep gimp | awk '{ print $2 "\011" $11 }' | grep -v 'grep'
}