KornShell의 컬러 프롬프트

KornShell의 컬러 프롬프트

에 따르면이 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$_$$"

관련 정보