![Bash 프롬프트 - 멀티바이트 유니코드 문자의 8진수 표현은 프롬프트에서 작동하지만 수동으로 실행할 때는 작동하지 않습니다(동일한 스크립트).](https://linux55.com/image/181682/Bash%20%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8%20-%20%EB%A9%80%ED%8B%B0%EB%B0%94%EC%9D%B4%ED%8A%B8%20%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C%20%EB%AC%B8%EC%9E%90%EC%9D%98%208%EC%A7%84%EC%88%98%20%ED%91%9C%ED%98%84%EC%9D%80%20%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%EB%A7%8C%20%EC%88%98%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EB%95%8C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4(%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8)..png)
쉘 스크립트 myPrompt.sh가 주어지면:
#!/bin/bash
printf "Llama \001\360\002\001\237\002\001\255\002\254 Llama $> "
...그리고 bash 프롬프트는 위 스크립트를 실행하도록 구성됩니다.
alias myPrompt="/home/you/myPrompt.sh"
PS1="\$(myPrompt)"
위 시나리오에서 함수는 [를 사용하여 실행되고 출력을 생성합니다.
답변1
\[
쉘은 프롬프트를 처리할 때 프롬프트의 너비가 0인 부분을 주석 처리하는 등의 작업을 수행 할 때 일부 시퀀스(예: 및 )를 사용 하지만 이러한 문자는 직접 인쇄할 때 이러한 방식으로 해석되지 않습니다. \]
나는 놀랐고 당신이 알아차린 방식으로 \001
작동합니다 \002
. 그러나 그것은 당신이 사용하는 문자 인코딩과 더 관련이 있을 수 있습니까?
어쨌든 무언가를 인쇄하고 설정하지 않고 프롬프트에서 어떻게 보이는지 확인하려면 bash에서 P
변수 확장에 (프롬프트용) 연산자를 사용할 수 있습니다.
SOME_PROMPT_STRING="\u@\h:\W\$"
echo "${SOME_PROMPT_STRING@P}"