byobu 사용자 정의 상태에 문제가 있습니다

byobu 사용자 정의 상태에 문제가 있습니다

byobu-tmux 상태 표시줄에 nVidia GPU 활용도를 추가하려고 합니다. 나는 설치했다그래픽 프로세서 통계반품

~$ gpustat
myhost                 Mon Aug 19 17:26:51 2019  410.48
[0] GeForce GTX 1080 Ti | 22'C,   0 % |     0 / 11178 MB |
[1] GeForce GTX 1080 Ti | 41'C,   0 % |     0 / 11175 MB |

그런 다음 텍스트 프로세서를 작성하여 ~/.byobu/bin/2_gpu에 저장하고 byobu 웹페이지에 제안된 대로 상태를 사용자 정의했습니다.

~$ cat .byobu/bin/2_gpu
#!/bin/sh
echo "$(gpustat | tail -n+1 | sed -nr "s/\[[0-9]\].+([0-9]+)\s\%.*$/\1%/p" | tr [:space:] ',' | head -c-1)" 

작동하는 것처럼 보이는 bash 쉘에서는 shebang이 sh인지 bash인지는 중요하지 않은 것 같습니다.

~$ .byobu/bin/2_gpu
0%,0%

하지만 해당 텍스트를 byobu-tmux 상태 줄에 가져올 수 없습니다. 더 간단한 사용자 정의 상태는 잘 작동하지만 sed 명령에 대한 정규식 인수의 따옴표 및/또는 "$"를 이스케이프하는 데 몇 가지 문제가 있습니다. 왜 echo가 필요한지는 잘 모르겠지만, echo를 제거해도 echo "$(...)"도움이 되지 않으며 내부 큰따옴표와 "$" 문자에 백슬래시를 추가해도 도움이 되지 않습니다.

답변1

좋아, 많은 조정 끝에 멋진 색상 코딩의 이점을 사용하여 내가 원하는 대로 작동하는 것 같습니다.

#!/bin/sh
SED_PATTERN='s/^.*([0-9]+)\s%.*$/\1%%,/p'
GPUSTAT="$(gpustat | tail -n+2 | sed -nr $SED_PATTERN | head -c-2)"
echo "#[bg=blue]GPU:$GPUSTAT#[bg=black]"

관련 정보