CLI 배터리 상태 프롬프트 업데이트

CLI 배터리 상태 프롬프트 업데이트

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에만 적용되며 다른 쉘에서는 다르다는 것입니다.

관련 정보