Bash 프롬프트 - 멀티바이트 유니코드 문자의 8진수 표현은 프롬프트에서 작동하지만 수동으로 실행할 때는 작동하지 않습니다(동일한 스크립트).

Bash 프롬프트 - 멀티바이트 유니코드 문자의 8진수 표현은 프롬프트에서 작동하지만 수동으로 실행할 때는 작동하지 않습니다(동일한 스크립트).

쉘 스크립트 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}"

관련 정보