특정 색상과 전체 경로로 현재 디렉터리를 표시하도록 명령 프롬프트를 사용자 정의했습니다. 이제 창 제목을 전체 경로가 아닌 디렉터리 이름으로 설정하고 싶습니다. Korn 쉘에서 이를 달성하는 방법을 알려주실 수 있나요? 감사해요.
답변1
이를 달성하기 위해 제가 찾은 방법은 CD에 대한 별칭을 만드는 것입니다. 다음 코드를 파일에 넣어 .profile
트릭을 수행했습니다.
xcd() { cd $*; echo -ne "\033]0;$(basename $PWD)\007"; }
alias cd='xcd'
제가 실제로 찾고 있던 솔루션을 제공해 주신 Kusalananda에게 많은 감사를 드립니다.
cd() { command cd "$@"; echo -ne "\033]0;${PWD##*/}\007"; }
답변2
웹사이트에 따르면:xterm의 제목을 변경하는 방법: 다른 쉘의 예
ksh는 몇 가지 기능과 확장 기능을 제공하므로 동적으로 업데이트하려면 프롬프트에 이스케이프된 문자열을 삽입해야 합니다. 이 예에서는 username@hostname: 디렉토리에 대한 제목과 ksh$ 프롬프트를 생성합니다.
case $TERM in xterm*) HOST=`hostname` PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ ' ;; *) PS1='ksh$ ' ;; esac
그러나 $PWD는 전체 디렉터리 경로를 생성합니다. ${...##...} 구조를 사용하여 디렉토리에서 $HOME/ 접두사를 제거할 수 있습니다. ${...%%...}를 사용하여 호스트 이름을자를 수도 있습니다.
HOST=`hostname` HOST=${HOST%%.*} PS1='^[]0;${USER}@${HOST}: ${PWD##${HOME}/}^Gksh$ '
프롬프트 문자열의 ^[ 및 ^G는 ESC 및 BEL의 단일 문자입니다(Cq ESC 및 Cq Cg를 사용하여 emacs에 입력할 수 있음).