에 따르면이 StackOverflow 게시물, KornShell에 색상 프롬프트가 있을 수 있습니다. 나는 이것을 수행하는 방법을 알 수 없었습니다. 색상을 사용할 수 있습니다.
echo -e "\033[34mLinux\033[00m"
다음과 같이 파란색 "Linux" 출력을 제공합니다.
printf "\033[34mLinux\033[00m"
그러나 이스케이프 코드를 프롬프트 변수에 통합하면 PS1
이스케이프되지 않습니다. 컬러 메시지를 받으려면 어떻게 해야 합니까? 눈에 거슬리는 것 외에도 색상이 있는 프롬프트는 출력을 시각적으로 분석할 때 유용하다는 것을 알았습니다.
답변1
Ctrl- v와 함께 입력한 리터럴 Esc 문자를 사용하면 됩니다 ( 화면에 Esc표시됨 ).^[
PS1="^[[34mLinux^[[00m"
echo
또는 작동 중인 것으로 확인된 명령 의 출력을 사용하십시오 .
PS1="$(echo -e "\033[35mLinux\033[00m")"
답변2
변수 에 리터럴 이스케이프 문자를 넣어야 합니다 PS1
. Ksh88 및 pdksh 및 mksh(이전 버전)와 같은 복제본에는 print
내장된 문자를 제외하고 제어 문자에 대한 리터럴 구문이 없습니다 . Mksh는 이스케이프를 이해 \e
하지만 pdksh에는 8진수 코드가 필요합니다 \033
.
PS1=$(print '\033[34mLinux\033[00m')
ATT ksh93은 백래시로 이스케이프된 리터럴 구문을 도입합니다 $'…'
(R39b 이후 mksh에서도 사용 가능). 백슬래시 이스케이프를 사용하여 이러한 리터럴에 제어 문자를 넣을 수 있습니다.
PS1=$'\e[34mLinux\e[00m'
답변3
mksh
나는 사용자를 위해 다음을 사용합니다 shell
.
# custom prompt see http://comments.gmane.org/gmane.os.miros.mksh/126
PS1=$'\a\r\a\e[1;34m\a ^ ^ ^ ^ | \a\e[36m\a${USER:=$(ulimit -c 0; id -un 2>/dev/null || echo
\?)}@${HOSTNAME%%.*}\a\e[34m\a | ^ ^ ^ ^ | \a\e[0;33m\a$(local d=${PWD:-?} p=~; [[ $p = ?(*/) ]] || d=${d/#$p/~};
print -nr -- "$d")\a\e[1;34m\a |\n ^ ^ ^ ^ | \a\e[32m\a$(date +%H:%M)\a\e[34m\a | ^ ^ >>\a\e[0m\a '
shell
& 다음의 경우 약간 다릅니다 root
.
PS1=$'\a\r\a\e[1;34m\a ^ ^ ^ ^ ^ \a\e[31m\a${USER:=$(ulimit -c 0; \
id -un 2>/dev/null || echo \?)}@${HOSTNAME%%.*}\a\e[34m\a ^ ^ ^ ^ ^ ^ ^ \a\e[0;33m\a$(
local d=${PWD:-?} p=~
[[ $p = ?(*/) ]] || d=${d/#$p/~}
print -nr -- "$d"
)\a\e[1;34m\a ^ ^ \n ^ ^ ^ ^ ^ \a\e[32m\a$(date +%H:%M)\a\e[34m\a ^ ^ ^ ^ \a\e[0m\a '
특수문자가 복사되지 않아서,여기 페이스트빈 페이스트가 있어요일반 사용자와 루트 모두에 대해.
답변4
이전 답변과 기타 출처 덕분에 다음과 같은 결과를 얻을 수 있었습니다.
Korn 쉘 프롬프트:
PS1="$(echo "\033[32m`logname`\033[35m@\033[32m`hostname` \033[33m`pwd`\033[36m\n\$\033[0m")"
배쉬 프롬프트:
PS1="\[\e[32m\]\u\[\e[35m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\]\n\$\[\e[0m\]"
이는 다음과 같은 형식으로 동일한 색상의 프롬프트를 제공합니다(예, 저는 Queen's English를 사용합니다 ;)).
username@computername /current/working/directory
$
DOS와 동등한 기능(색상 옵션은 없음)은 다음과 같습니다.
prompt %username%@%computername% $P$_$G
이는 다음을 제공합니다:
username@computername /current/working/directory
>
">"는 "$"를 사용하여 'nixy' 대신 'DOSsy'를 유지하지만 대신에 인장("$")을 원한다면 다음과 같습니다.
prompt %username%@%computername% $P$_$$
귀하의 로그인 계정에 필수 권한이 있는 경우 'nixies' 앞에 "export"를 추가하여 영구적으로 만들 수 있습니다.
export PS1="..."
DOSsy를 다음과 같이 변경합니다.
setx PROMPT "%username%@%computername% $P$_$G"
또는
setx PROMPT "%username%@%computername% $P$_$$"