답변:
나는 그것이 당신을 PS1
직접 볼 수있는 방법을 모른다 .
그러나 tmux
창 이름을 설정하는 것과 동일한 명령을 이해합니다 screen
.
당신은 당신의이 같은 함수를 정의 할 수 있습니다 그래서 ~/.bashrc
나 ~/.zshrc
:
settitle() {
printf "\033k$1\033\\"
}
settitle
어디서나 전화 하세요.
예를 들어 PS1
변수에 포함시킬 수 있습니다.
PS1='$HOST:$PWD$(settitle $HOST:$PWD)$ '
또는 통해 PROMPT_COMMAND
:
PROMPT_COMMAND='$(settitle $HOST:$PWD)'
# and don't change PS1
이제 tmux
데스크탑에서 실행 중이며 ssh
명령이 아닌 호스트 이름을 사용하는 것이 ssh
훨씬 쉽다는 것을 알고 있습니다.
settitle
local에 추가 했으므로 다음을 ~/.bashrc
추가하기 만하면됩니다.
ssh() {
settitle "$*"
command ssh "$@"
settitle "bash"
}
bash를 zsh 또는 필요한 경우 더 적절한 것으로 바꾸십시오.
PROMPT_COMMAND='settitle $HOSTNAME:$PWD'
- 미켈의 코드 @ 내가 어떤 호스트 이름과 얻지과 이후 -bash: : No such file or directory
프롬프트 각 명령 이전에 오류가 발생했습니다. 그 날 것으로 보인다 $()
무엇이든 실행하려고 비난 할 것 settitle
반환 . (Linux에서 bash를 실행 중입니다.)
tmux rename-window -t${TMUX_PANE} "Title Text"
이것은 창에서 tmux 제목을 설정하는 올바른 방법입니다. $ TMUX_PANE 변수는 tmux에 의해 설정되며 다른 분할 창을 구별하는 데 사용됩니다.
-t${TMUX_PANE}
(적어도 나에게는 그렇지 않았습니다).
sleep 3
Windows를 실행하고 말하고 전환하는 경우 절전 모드가 완료되면 프롬프트에서 잘못된 창으로 명령을 내립니다. (이것이 내가 여기에 온 이유입니다, +1).
tmux 세션의 제목을 변경하는 방법을 검색하여 여기에 온 사람들을 위해 :
Ctrl+ B,$
활성 세션의 이름을 바꿀 수있는 프롬프트가 표시됩니다.
활성 창을 변경하려면 komma를 대신 사용하십시오.
Ctrl+ B,,
Mikel과 UtahJarhead의 답변을 결합 .zshrc
하여이 문제를 해결하기 위해 다음을 사용했습니다 .
ssh() {
tmux rename-window "$*"
command ssh "$@"
exit
}
기본적으로 자동 창 이름 바꾸기가 활성화되어 있으며 원격 호스트를 종료 한 후 다시 활성화하는 방법을 찾을 수 없습니다. 따라서 작업 흐름에 문제가 아닌 창을 완전히 종료합니다. 이름을 'bash'로 바꾸려면 exit
줄을로 바꿀 수 tmux rename-window "bash"
있습니다.
hostname -s
ssh "@ $"명령 뒤에 tmux rename-window를 사용하고 있는데 기본적으로 "게이트웨이"시스템에 제목을 "재설정"합니다.
대신 exit
또는 tmux rename-window "bash"
사용할 수 있습니다
ssh() {
if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then
tmux rename-window "$*"
command ssh "$@"
tmux set-window-option automatic-rename "on" 1>/dev/null
else
command ssh "$@"
fi
}
다음 명령의 창 이름이 자동으로 바뀌는 일반 기능이 다시 활성화됩니다.
이 if
블록 은 다른 쉘 tmux
에서 ssh
사용되는 명령 에서 현재 창 이름을 바꾸지 (않거나) 방지 합니다 tmux
.
if env | grep -q "TMUX_PANE"; then
대신에 ps -p...
같은 원리로 갔다 .
나는 이것이 오래 전에 응답되었다는 것을 알고 있지만, 내가 받아 들인 것을 추가 할 것이라고 생각했습니다 (허용 된 답변에 따라). 나는 이것을 모든 서버의 / etc / bashrc에 추가했습니다 직물, 꼭두각시 등으로하십시오)
settitle() {
printf "\033k$1\033\\"
}
bash_prompt_command() {
settitle "`hostname -s`:$PWD"
}
PROMPT_COMMAND=bash_prompt_command
그리고 화면 이름 또는 tmux에서 창 이름을 자동으로 설정합니다.
hostname -s
여분의 도메인 항목을 제거하여 server1.internal.local이 server1으로 표시됩니다
또 다른 해결책은 ssh 세션 후에 활성 창의 이름을 이전 이름으로 바꾸는 것입니다.
ssh() {
local code=0
local ancien
ancien=$(tmux display-message -p '#W')
if [ $TERM = tmux -o $TERM = tmux-256color ]; then
tmux rename-window "$*"
command ssh "$@"
code=$?
else
command ssh "$@"
code=$?
fi
tmux rename-window $ancien
return $code
}
이는 tmux 2.1
zsh와 로컬 및 서버 에서 작동 합니다.
ssh() {
tmux set-option allow-rename off 1>/dev/null
tmux rename-window "ssh/$*"
command ssh "$@"
tmux set-option allow-rename on 1>/dev/null
}
Windows 이름을 변경하기 전에 allow-rename 옵션을 수동으로 비활성화해야했습니다. 그렇지 않으면 대부분의 서버에서 현재 경로로 변경되었습니다 (또한 zsh를 사용함). 좋은 점은 allow-rename 옵션을 다시 활성화하면 즉시 작동합니다.
.profile
또는에 추가.bashrc
# Change window name for `tmux`
ssh() {
if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then
#tmux rename-window "$(echo $* | cut -d . -f 1)"
tmux rename-window "$(echo $* | cut -d @ -f 2)"
command ssh "$@"
tmux set-window-option automatic-rename "on" 1>/dev/null
else
command ssh "$@"
fi
}