ssh에서 tmux의 윈도우 이름을 좋은 느낌으로 만듭니다.
그러나이 때 중요한 것은 각 창이 어떤 서버에 연결되어 있는지 정보입니다.
따라서 zshrc에 ssh 함수를 만들고 ssh가 실행되면 호스트 이름을 창 이름으로 rename합니다.
조사해 보면 이러한 선행 예 [1]이 있습니다.
ssh() {
if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then
tmux rename-window "$(echo $* | cut -d . -f 1)"
command ssh "$@"
tmux set-window-option automatic-rename "on" 1>/dev/null
else
command ssh "$@"
fi
}
이것으로도 충분히 실용으로 충분하지만, 하나 문제가 있습니다.
ssh를 실행할 때 옵션을 지정했다고 가정합니다.
ssh -N hostname
이 때 앞의 ssh 함수의
tmux rename-window "$(echo $* | cut -d . -f 1)"
행에 주목합시다.$*
에서 ssh 명령의 모든 인수를 전달했기 때문에 명령 주입과 같은 일이 발생합니다.결과적으로 tux rename-window는 다음과 같은 오류를 반환합니다.
rename-window: illegal option -- N
usage: rename-window [-t target-window] new-name
이 경우 함수의 마지막 인수를 rename-window에 전달하면 좋을 것 같습니다.
쉘 스크립트에서는 함수의 인수를 여러 가지 방법으로 취득할 수 있습니다.
마지막 인수는
${@: -1}
에 의해 검색됩니다.인수의 취급이 올바른지 잘 모르겠지만, 자세히 알고 싶은 분은 [2][3]당을 자세히 읽으면 좋을지도 모릅니다.
수정 된 ssh 함수는 다음과 같습니다.
ssh() {
if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then
tmux rename-window ${@: -1} # <---- ここ
command ssh "$@"
tmux set-window-option automatic-rename "on" 1>/dev/null
else
command ssh "$@"
fi
}
눈에 띄는 tmux가 보기 쉬워졌습니다.
참고
[1] htps : // bg. 노파 c. 아 t/2015/04/21/세 tt t x-파네-치 tぇ-온-sh
[2] ぃ tp // 코 m / 쟈야 r uuntsun / ms / 0 4cb66d8f4bd2 A337
[3] htps : // 후미야 s. 기주 b. 이오/2016/12/15/포시치오나 l 파라메 rs. sh-a dゔ ぇ t - ぇ r. HTML
Reference
이 문제에 관하여(ssh에서 tmux의 윈도우 이름을 좋은 느낌으로 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/klis/items/a4c1ec4248f29a8fd678텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)