2009-12-15 17 views
6

Używanie putty w oknach, możesz zapisać sesje, które łączą się z określonym hostem i użyć określonego koloru tekstu ... to było dla mnie bardzo przydatne, ponieważ pracuję z wieloma zdalnymi hostami i zastanawiam się, czy jest (musi być) sposób, aby uzyskać Terminal (w Snow Leopard), aby emulować to zachowanie.Jaki jest łatwy sposób używania terminala w innym kolorze na podstawie nazwy hosta ssh?

zastanawiam się jak bym 1. Zapisz połączenie (np [email protected]) i mieć z tego połączenia zawsze otwarty z pewnego koloru tekstu (np # 00FF00) 2. Najlepiej, żadnego okna terminala wykryć hosta i odpowiednio zmienić jego kolor. Więc gdybym był w moim normalnym środowisku Terminala i wydał pomyślny ssh [email protected], automatycznie zmieniłby kolor tekstu tego okna terminala (lub karty) na # 00ff00

Daj mi znać, dzięki!

+0

Zobacz także http://stackoverflow.com/q/18715941/754997 –

Odpowiedz

4

W terminalu można zdefiniować profile o różnych kolorach tła okna, kryciu itp. Również w profilach można określić polecenie uruchamiania. Możesz ustawić inny profil dla każdego hosta, którego używasz, używając komendy startowej "ssh me @ thathost", ale działa to tylko dla nowych okien. Profile można łatwo uzyskać za pośrednictwem powłoki Shell -> Nowe okno.

+0

oh, tak, rozwiązuje # 1 dla mnie, wielkie dzięki. Nadal jestem zainteresowany, aby zobaczyć, czy ktoś może zrobić # 2, ale jeśli nie ma nic po upływie dnia, z przyjemnością oznaczę to jako poprawną odpowiedź. –

+0

To jest świetne! I myślę, że prawie zasugerowałem bałagan w AppleScript i/lub skrypty powłoki i kody ucieczki ANSI. – benzado

+0

Tak, myślałam także o tym, jak się uciec. Mój PS1 w magiczny sposób zmienia pasek tytułu, aby odzwierciedlić host i katalog, ale nie pamiętam, jak to działa. Możesz spróbować, ustawiając PS1 w taki sposób. Używam zsh, ale może działać w bash: eksport PS1 = $ '% {\ e [0; 34m%} \ {% {\ e [0m%}% n% {\ e [0; 36m%} @% {\ e [0m%}% m% ~% {\ e [0; 34m%} \}% {\ e [0m%}% {\ e [0; 36m%} $% {\ e [0m%} ' – spieden

10

OK, jeśli nalegasz na wywołanie ssh z wiersza poleceń, oto coś, co powinno wystarczyć: napisz skrypt powłoki i zapisz go gdzieś jako colorssh.sh. Po uruchomieniu sprawdza swoje argumenty dla zgodnego hosta i odpowiednio ustawia kolory aktywnego okna terminala. Następnie przywołuje prawdziwego ssh, przekazując te argumenty. Kiedy ssh zwróci wykonanie skryptu, ustawia kolory z powrotem na normalne.

Ponieważ prawdopodobnie chcesz nadal pisać na maszynie ssh zamiast colorssh.sh, możesz ustawić alias w swoim .profile.

Co do samego skryptu? Oto kod:

#!/bin/bash 

function setTerminalColors { 
    osascript \ 
     -e "tell application \"Terminal\"" \ 
     -e "tell selected tab of front window" \ 
     -e "set normal text color to $1" \ 
     -e "set background color to $2" \ 
     -e "end tell" \ 
     -e "end tell" 
} 

for ARG in $* 
do 
    case "$ARG" in 
     host.example.com) 
     [email protected]) 
      setTerminalColors "{0,65535,65535}" "{65535,0,0}" 
      ;; 
     [email protected]) 
      setTerminalColors "{65535,65535,0}" "{0,65535,0}" 
      ;; 
    esac 
done 

ssh $* 

# back to normal 
setTerminalColors "{0,0,0}" "{65535,65535,65535}" 

Będziesz musiał edytować skrypt, aby dodać nowe kombinacje host/kolor.

Należy pamiętać, że kolory muszą być określone jako trójka RGB liczb całkowitych z zakresu 0-65535. Wiem, dziwne, prawda?

Z technicznego punktu widzenia część kodu AppleScript zmienia nieaktualne właściwości. Powinieneś zmienić kolor okna za pomocą właściwości "zestaw ustawień", ale podejrzewam, że zmieniłby on wszystkie okna przy użyciu tego zestawu ustawień, a nie tylko bieżącego.

Ponadto, ten skrypt zakłada, że ​​czarny na białym jest twoim "normalnym" ustawieniem. Jeśli tak nie jest, możesz zmienić skrypt, aby zapisać bieżące wartości przed uruchomieniem lub użyć kolorów z domyślnego zestawu ustawień.

+0

dziękuję, to jest naprawdę fajne i robi dokładnie to, o co prosiłem. Zastanawiałem się nad tym i nie jest to zbyt wielka rzecz, aby otworzyć nową zakładkę z zapisanym profilem, więc prawdopodobnie będę to robił częściej. Zgaduję, że jest to częściej zadawane i szerzej pomocne, więc mam zamiar oznaczyć je jako poprawną odpowiedź, ale jeszcze raz dziękuję za skrypt, ponieważ będę używał obu tych metod. –

+2

Neil, zabijasz mnie! Wiesz, jeśli chcesz być szczupły, twoje pytanie w zasadzie nie dotyczy programowania. :-) – benzado

Powiązane problemy