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
. 다음으로, flag 를 "소비"할 수 있는 모든 항목에 대해 1단계 이스케이프가 필요합니다 $
. 여기에서 "
awk에 대해 한 번, "
사용자가 제공한 명령에 대해 한 번 watch
, 쉘 자체에 대해 세 번째를 이스케이프 해야 합니다 . 이것은 작동합니다:
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"
}