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"
}