Chciałbym mieć możliwość automatycznego zmieniania nazwy mojego okna tmux na prompt_command, ps1 lub po prostu nazwę hosta komputera, ssh
do którego mam . otwarcie 9 okien z napisem „ssh” jest naprawdę bezużyteczne. Robiąc sysadmin, otwieram nowe ekrany i ssh dookoła, aby ręcznie zmienić ich nazwy.
Jedną z rzeczy, które zauważyłem, jest tmux
aktualizacja xterm
tytułu okna, więc czuję, że powinien wiedzieć.
Jakaś pomoc? Byłbym nawet skłonny wrócić, screen
gdybym mógł uzyskać tę funkcję.
PROMPT_COMMAND='settitle $HOSTNAME:$PWD'
- ponieważ z kodem @ Mikela nie otrzymałem nazwy hosta i-bash: : No such file or directory
błędu przed każdym wierszem polecenia. Wydaje mi się,$()
że bash spróbuje wykonać wszystko, cosettitle
zwraca . (Pracuję na Linuksie).tmux rename-window -t${TMUX_PANE} "Title Text"
Jest to właściwy sposób ustawiania tytułów tmux w oknie. Zmienna $ TMUX_PANE jest ustawiana przez tmux i służy do rozróżniania różnych paneli.
źródło
-t${TMUX_PANE}
to konieczne (przynajmniej nie było to dla mnie).sleep 3
i przełączasz okna, w przeciwnym razie monit wyda polecenie w niewłaściwym oknie po zakończeniu snu. (To jest powód, dla którego tu przyszedłem, +1).Tylko dla osób, które przyszły tutaj, szukając sposobu zmiany tytułu sesji tmux:
Ctrl+ B,$
Spowoduje to wyświetlenie monitu o zmianę nazwy aktywnej sesji.
Aby zmienić aktywne okno, użyj komendy zamiast:
Ctrl+ B,,
zobacz: Jak zmienić nazwę sesji w tmux?
źródło
Łącząc odpowiedzi Mikela i UtahJarhead, wykorzystałem następujące w
.zshrc
celu rozwiązania tego problemu:Mam domyślnie włączoną automatyczną zmianę nazwy okna i nie mogę znaleźć sposobu na jej ponowne włączenie po wyjściu ze zdalnego hosta. Dlatego po prostu wychodzę z okna całkowicie - nie stanowi to problemu w moim przepływie pracy. Jeśli wolisz zmienić jego nazwę na powiedzmy „bash”, możesz zastąpić
exit
liniętmux rename-window "bash"
.źródło
hostname -s
po komendzie ssh „@ $”, to po prostu „resetuje” tytuł do mojej maszyny „gateway”.Zamiast
exit
lubtmux rename-window "bash"
możesz użyćTo ponownie aktywuje normalną funkcję, która automatycznie zmienia nazwę okna na kolejne polecenia.
W
if
zapobiega blokowe z (bez niego) zmiany nazwytmux
bieżące okno zssh
poleceniami wykorzystywane w innych powłok (natmux
).źródło
if env | grep -q "TMUX_PANE"; then
zamiastps -p...
rzeczy, ale samej zasadzie.Wiem, że odpowiedziano na to dawno temu, ale pomyślałem, że dodam to, co majstrowałem i znalazłem (na podstawie zaakceptowanej odpowiedzi) .. Dodałem to do / etc / bashrc wszystkich moich serwerów (łatwe do zrobić z tkaniną, marionetką itp.)
I ustawia nazwę okna automatycznie na ekranie lub tmux.
źródło
hostname -s
usuwamy dodatkowe rzeczy z domeny, dzięki czemu server1.internal.local pojawia się jako server1Innym rozwiązaniem może być zmiana nazwy aktywnego okna na jego poprzednią nazwę po sesji ssh:
źródło
Działa to dla
tmux 2.1
i zsh lokalnie i na serwerach:Musiałem ręcznie wyłączyć opcję zezwól na zmianę nazwy przed zmianą nazwy systemu Windows - w przeciwnym razie została zmieniona na bieżącą ścieżkę na większości moich serwerów (także tam, gdzie używasz zsh). Dobrą rzeczą jest: jeśli ponownie włączysz opcję zezwól na zmianę nazwy, działa ona natychmiast.
źródło
Dodaj to do
.profile
lub.bashrc
źródło
We wszystkich tych przykładach odnotowałbym:
Możesz pobrać kod wyjścia i wyjść z niego za pomocą funkcji, w przeciwnym razie:
Zwróci 0.
Wyjdzie z ssh z kodem powrotu ssh.
źródło