![다른 별칭과 후자의 별칭에 큰따옴표 및 작은따옴표가 포함된 watch 명령에서 별칭을 어떻게 사용할 수 있습니까?](https://linux55.com/image/206889/%EB%8B%A4%EB%A5%B8%20%EB%B3%84%EC%B9%AD%EA%B3%BC%20%ED%9B%84%EC%9E%90%EC%9D%98%20%EB%B3%84%EC%B9%AD%EC%97%90%20%ED%81%B0%EB%94%B0%EC%98%B4%ED%91%9C%20%EB%B0%8F%20%EC%9E%91%EC%9D%80%EB%94%B0%EC%98%B4%ED%91%9C%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20watch%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EB%B3%84%EC%B9%AD%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
alias vov="scontrol -o show nodes | grep -e \"-lkeb\" -e \"-gpu\"| awk '{ printf(\"%-15s%-9s%-7s%-18s%-11s%-9s%s\n\", substr(\$1, 10), substr(\$4, 10), substr(\$5, 8), substr(\$9, 6), substr(substr(\$23, 12)/1024,0,5), substr(substr(\$24, 10)/1024,0,5), substr(\$38, 11))}' | awk '{printf(\"%-15s%-7s%-9s%-18s%-7s%-9s%50-s%2-s%9-s%9-s%9-s\n\", \$1, \$3, \$2, \$4, \$5, \$6, \"|\"\$7, \"|\", \$3-\$2, \$5-\$6, substr(\$4,length(\$4))-substr(\$7,length(\$7)))}' | awk '\$11 != 0' | awk 'BEGIN {print \"NodeName CPUTot CPUAlloc Gres MemTot MemAlloc AllocTres CPUAvail MemAvail GPUAvail CPU/GPU\"}{print \$0 FS \$9/\$11}'"
위의 코드를 내 파일에 작성하면 .bashrc
제대로 작동합니다.
watch "scontrol -o show nodes | grep -e \"-lkeb\" -e \"-gpu\"| awk '{ printf(\"%-15s%-9s%-7s%-18s%-11s%-9s%s\n\", substr(\$1, 10), substr(\$4, 10), substr(\$5, 8), substr(\$9, 6), substr(substr(\$23, 12)/1024,0,5), substr(substr(\$24, 10)/1024,0,5), substr(\$38, 11))}' | awk '{printf(\"%-15s%-7s%-9s%-18s%-7s%-9s%50-s%2-s%9-s%9-s%9-s\n\", \$1, \$3, \$2, \$4, \$5, \$6, \"|\"\$7, \"|\", \$3-\$2, \$5-\$6, substr(\$4,length(\$4))-substr(\$7,length(\$7)))}' | awk '\$11 != 0' | awk 'BEGIN {print \"NodeName CPUTot CPUAlloc Gres MemTot MemAlloc AllocTres CPUAvail MemAvail GPUAvail CPU/GPU\"}{print \$0 FS \$9/\$11}'"
위의 코드를 터미널( )에 붙여넣어도 /bin/bash
잘 작동합니다. 실제로 살펴봐야 할 코드는 vov
.
하지만 몇 가지 문제가 발생했습니다.
watch vov
내 터미널( )에서 작동하도록 할 수 없습니다/bin/bash
.- 내 .
alias
.bashrc
- 나에게 할당된 (짧은 버전)을
alias
사용할 수 없습니다 .watch vov
.bashrc
이 세 가지 문제를 해결하도록 도와주실 수 있나요?
답변1
watch
쉘 별칭에도 동일한 문제가 있었습니다. 별칭이 왜 감시되지 않는지 잘 모르겠지만 별칭을 쉘스크립트에 넣고 호출하면 watch
이 문제를 해결할 수 있습니다.
파일을 만들고, 첫 번째 줄에 vov
shebang을 사용한 #!/bin/bash
다음, scontrol...etc
다음 줄에 shebang을 사용하고, 파일을 저장 chmod +x vov
하거나 mv vov ~/.local/bin/
다른 곳에 저장합니다 $PATH
.
그럼 당신은 할 수 있습니다watch -t -n 1 -c vov
어떤 플래그가 필요한지 잊어버렸기 때문에 다음 과 같은 watch
쉘스크립트가 있습니다. 이를 수행할 수 있습니다 .sho
watch -t -n 1 -c "$1"
sho vov