MinTTY는 Cygwin의 새로운 기본 콘솔입니다.
MinTTY 창의 제목을 변경하는 쉘 명령 (.bashrc 또는 .zshrc에 더 좋을 수있는 것)은 무엇입니까?
창의 제목을 현재 디렉토리의 경로로 만들고 콘솔 내부에서 디렉토리를 전환 할 때 업데이트되도록하고 싶습니다.
-T <title>
Windows 바로 가기 속성에서 사용할 수 있습니다 . 도 참조하십시오 mintty man page
.
MinTTY는 Cygwin의 새로운 기본 콘솔입니다.
MinTTY 창의 제목을 변경하는 쉘 명령 (.bashrc 또는 .zshrc에 더 좋을 수있는 것)은 무엇입니까?
창의 제목을 현재 디렉토리의 경로로 만들고 콘솔 내부에서 디렉토리를 전환 할 때 업데이트되도록하고 싶습니다.
-T <title>
Windows 바로 가기 속성에서 사용할 수 있습니다 . 도 참조하십시오 mintty man page
.
답변:
뭐가 잘못 되었 니
다음 명령이 작동하지 않았습니다.
echo -ne "\e]0;MYTITLE\a"
기본 Cygwin 설치에는 .bashrc에 다음과 같은 프롬프트 정의가 포함되어 있습니다.
PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$
프롬프트의 첫 번째 부분 ( \e]0;\w\a
)은 프롬프트가 나타날 때마다 창 제목을 설정합니다.
해결책
.bashrc
두 개의 함수를 정의하는 다음 행을 추가하십시오 .
function settitle() {
export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
echo -ne "\e]0;$1\a"
}
function settitlepath() {
export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
}
그런 다음이 명령으로 사용자 정의 제목을 설정할 수 있습니다.
settitle "MYWonderfullTest here"
또는 다음 명령을 사용하여 cygwin의 기본값 (현재 경로)으로 되돌릴 수 있습니다.
settitlepath
이것이 도움이되기를 바랍니다.
source ~/.bashrc
시작해야합니다. Cygwin version 2.8.1 (64 bit)
이를 위해 xterm 제어 순서를 사용하여 변경할 수 있습니다.
echo -ne '\e]0;Title\a'
이것을 .zshrc에 넣으십시오.
# Change title of MinTTY to current dir
function settitle() {
echo -ne "\033]2;"$1"\007"
}
function chpwd() {
settitle $(cygpath -m `pwd`)
}
함수 settitle의 특수 문자 순서는 MinTTY가 창의 제목을 변경하게합니다.
zsh 에서는 특수 이름이 chpwd 인 함수를 정의하면 각 chdir 다음에 호출됩니다 .
Cygwin 1.7 및 MinTTY가 zsh를 실행하는 WinXP에서 작동합니다.
settitle "$(pwd)@$HOST"
1) $ PS1을 반향하여 해당 문자열을 클립 보드 또는 텍스트 편집기로 복사하십시오. 에코 $ PS1 2) ~ / .bash_profile을 편집하고 필요에 따라 $ PS1을 바꾸고 아래에 쉘 코드를 추가하되 $ {TERMINAL_TITLE} 변수를 "false"조건으로 유지하십시오. 3) 파일을 저장하고 다음과 같이 TERMINAL_TILE 환경 변수를 설정하십시오 TERMINAL_TITLE = "내 맞춤 제목"내보내기 4) bash 프로파일을 다음과 같이 소싱하십시오. . ~ / .bash_profile 즐겨 [-z "$ {TERMINAL_TITLE}"] 인 경우 그때 PS1 = '\ [\ e] 0; \ w \ a \] \ n \ [\ e [32m \] \ u @ \ h \ [\ e [33m \] \ w \ [\ e [0m \] \ n \ $ ' 그밖에 PS1 = '\ [\ e] 0; $ {TERMINAL_TITLE} \ a \] \ n \ [\ e [32m \] \ u @ \ h \ [\ e [33m \] \ w \ [\ e [0m \ ] \ n \ $ ' fi
Leonel의 대답을 사용했지만이 작업을 수행 할 때 제목 만 깜박이는 것을 발견했습니다. 즉, 적어도 echo 명령이 의도 한대로 작동한다는 것을 의미합니다. 디버그 모드를 사용하여 zsh를 대화식으로 실행했습니다.
zsh -xv
디렉토리를 변경하면 title()
after precmd()
및 이라는 다른 함수를 호출 하여 chpwd()
효과적으로 재정의합니다. 그래서 이것을 내 .zshrc에 꽂았습니다.
function settitle() {
echo -ne "\033]2;"$1"\007"
}
function title() {
settitle $(cygpath -m `pwd`)
}
당신이 사용하려는 경우 chpwd()
또는 precmd()
대신, 단순히 제목 기능을 해제합니다 title(){}
.
박하를 사용하여 스크립트를 실행할 때 내 솔루션을 공유하고 싶었습니다.
내 민트 바로 가기는 다음과 같이 설정됩니다.
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /usr/bin/bash.exe -l -c /scripts/connect.sh
위의 바로 가기에서 호출되어 내가 쓴 있다는 connect.sh 스크립트는 내가 연결하려는 서버 나 메시지를 표시합니다 및 스크립트에 정의 된 setTitle이라는 기능을 실행합니다.
#!/bin/bash
echo "Enter servername when prompted"
echo -n "servername: "
read servername
function settitle() {
echo -ne "\033]2;"$servername"\007"
}
function title() {
settitle $(cygpath -m `pwd`)
}
settitle
ssh my_username@$servername
title
사용하지 않으면 왜 함수를 정의 합니까?
$PS1
:)에는 창 제목을 user @ machine : working_directory로 설정하는 제어 시퀀스가 이미 포함되어 있습니다.