正确转义创建别名

正确转义创建别名
alias wp='watch -d --interval 1 "oc get pods | grep 0/1 | grep -v Completed | awk {'print \$1,\$2,\$3,\$4'} | column -t "'

我试图逃避这个命令。我尝试用 \ 转义打印引号,但没有成功。有任何想法吗?

谢谢。

答案1

这确实是一个棘手的问题。问题是您不能拥有'退出别名定义的内部。所以你需要"命令awk。接下来,您需要对每个可以“消耗”标志的事物进行一级转义$。在这里,您需要对"awk 的 进行一次转义,对"您所给出的命令中的 进行另一种转义watch,对 shell 本身进行第三次转义。这应该有效:

alias wp='watch -d --interval 1 "oc get pods | grep 0/1 | grep -v Completed | awk \"{print \\\$1,\\\$2,\\\$3,\\\$4}\" | column -t"'

如果我是你,我会使用函数而不是别名,这样可以稍微简化语法:

wp(){
    command1='oc get pods | grep 0/1 | grep -v Completed'
    command2='awk "{print \$1,\$2,\$3,\$4}" | column -t'

    watch -d --interval 1 "$command1 | $command2"
}

grep最后,请注意,如果您已经在使用,则不需要awk

 wp(){
  command="oc get pods | awk '/0\/1/ && !/Completed/{print \$1,\$2,\$3,\$4}' | column -t"
  watch -d --interval 1 "$command"
}

相关内容