CLI Arch Linux를 사용하고 있는데 실행하고 싶습니다.쉘/배시 스크립트내 배터리 상태 표시통신 인터페이스문자열 프롬프트(PS1)에서 직접.
배터리 상태를 표시하기 위해 다음 쉘 스크립트를 만들었습니다.
# Permition Acess: chmod +x loop.sh
# run .sh: ./loop.sh
i=true
#COLOR:
ORANGE='\e[33m'
STOP='\e[0m'
while ($i = true)
do
printf ${ORANGE}
echo $(clear)
echo $(acpi -b)
sleep 1
printf ${STOP}
done
내 생각은 PS1에 스크립트를 연결하여 항상 업데이트되는 배터리 상태를 지속적으로 표시하는 것입니다!
내 현재 PS1은 다음과 같습니다
PS1='[${OR}USER: \u ${B}TIME: \t ${C}DIR: \W ${RED}$(__git_ps1 " (%s)")]\n[${LG}$(acpi -b)${R}]\n\$
전화를 걸고 있는데 acpi
특정 명령을 사용할 때만 업데이트됩니다.
답변1
원하는 작업을 수행할 수 있는 이식 가능한 방법은 없지만 셸별 접근 방식이 작동할 수 있습니다.
대부분의 경우 이식 가능한 프롬프트 변수(PS1, PS2 등)에 대한 두 가지 구체적이고 구별되는 평가 유형이 있습니다. 할당 확장은 하위 명령 확장을 허용하는 다른 변수 할당 확장과 똑같지만 배터리에는 적합하지 않습니다. 모니터링, 이 확장은 한 번만 발생하고 프롬프트 확장은 명령 확장을 허용하지 않을 수 있지만 프롬프트가 표시될 때마다 확장되기 때문입니다.
두 방법 모두 지속적인 배터리 모니터링 가능성을 제공하지 않으며 가장 좋은 경우는 프롬프트가 마지막으로 표시되었을 때의 배터리 상태입니다.
이제 이식성이 없는 접근 방식의 경우 요구 사항을 충족할 수 있습니다. Bash에는 프롬프트에서 임의의 명령을 실행하는 두 가지 방법이 있습니다: PROMPT_COMMAND 및 shopt Promptvars. PROMPT_COMMAND는 간단합니다. 프롬프트가 표시되기 전에 실행되는 명령으로 설정하기만 하면 됩니다. 참조가 더 복잡하기 때문에 쇼핑 프롬프트 변수도 더 복잡합니다. 가장 큰 단점은 두 방법 모두 bash에만 적용되며 다른 쉘에서는 다르다는 것입니다.