2009-12-15 4 views
6

Mit Putty in Windows können Sie Sitzungen speichern, die mit einem bestimmten Host verbunden sind und eine bestimmte Textfarbe verwenden ... das war sehr nützlich für mich, da ich mit einer Reihe von Remote-Hosts arbeite und ich frage mich, ob es (Es muss eine Möglichkeit geben, Terminal (in Snow Leopard) zu bekommen, um dieses Verhalten zu emulieren.Was ist eine einfache Möglichkeit, Terminal verwenden eine andere Farbe basierend auf SSH-Host-Namen?

Ich frage mich, wie würde ich 1. Speichern Sie eine Verbindung (zB [email protected]) und haben diese Verbindung immer offen mit einem bestimmten Textfarbe (zB # 00ff00) 2. Idealerweise haben keine Terminalfenster erkennen Sie, in welchem ​​Host es war und ändern Sie die Farbe entsprechend. Also, wenn ich in meiner regulären Terminal-Umgebung war und eine erfolgreiche ssh [email protected] ausgegeben, würde es automatisch die Textfarbe des Terminal-Fensters (oder Registerkarte) zu # 00ff00

lassen Sie mich wissen, danke!

+0

Siehe auch http://Stackoverflow.com/q/18715941/754997 –

Antwort

4

Im Terminal können Sie Profile mit unterschiedlicher Hintergrundfarbe, Opazität usw. definieren. Auch in Profilen können Sie einen Startbefehl angeben. Sie könnten für jeden Host, den Sie mit einem Startbefehl von "ssh me @ thathhost" verwenden, ein anderes Profil einrichten, aber das würde nur für neue Fenster funktionieren. Profile sind einfach über Shell -> Neues Fenster zu erreichen.

+0

oh, ja das löst # 1 für mich, vielen Dank. Ich bin immer noch interessiert zu sehen, ob jemand # 2 machen kann, aber wenn es nach einem Tag oder so nichts gibt, werde ich das gerne als die richtige Antwort markieren. –

+0

Das ist großartig! Und zu denken, dass ich fast ein Chaos von AppleScript und/oder Shell-Scripting und ANSI-Escape-Codes vorgeschlagen hätte. – benzado

+0

Ja, ich dachte auch an die Escape Char-Sache. Meine PS1 ändert auf magische Weise die Titelleiste, um den Host und das Verzeichnis wiederzugeben, in dem ich mich befinde, aber ich kann mich nicht erinnern, wie es funktioniert. Sie können es versuchen, indem Sie Ihre PS1 so einstellen. Ich benutze zsh, könnte aber in bash arbeiten: export 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, wenn Sie darauf bestehen, ssh über die Befehlszeile aufzurufen, sollten Sie Folgendes tun: Schreiben Sie ein Shell-Skript und speichern Sie es irgendwo unter colorssh.sh. Wenn es ausgeführt wird, werden die Argumente für einen übereinstimmenden Host angezeigt und die Farben des aktiven Terminalfensters entsprechend festgelegt. Dann ruft es das echte ssh auf und gibt diese Argumente weiter. Wenn ssh die Ausführung an das Skript zurückgibt, werden die Farben wieder normal eingestellt.

Da Sie wahrscheinlich weiter ssh statt colorssh.sh eingeben möchten, können Sie einen Alias ​​in Ihrem .profile festlegen.

Wie für das Skript selbst? Hier ist der Code:

#!/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}" 

Sie müssen das Skript bearbeiten, um neue Host/Farbkombinationen hinzuzufügen.

Beachten Sie, dass Farben als RGB-Tripel von Ganzzahlen im Bereich 0-65535 angegeben werden müssen. Ich weiß, komisch, oder?

Technisch betrachtet ändert der AppleScript-Teil veraltete Eigenschaften. Sie sollten die Farben eines Fensters über die Eigenschaft "settings set" ändern, aber ich vermute, dass alle Fenster mit diesen Einstellungen geändert werden, nicht nur die aktuellen.

Dieses Skript geht davon aus, dass Schwarz auf Weiß Ihre "normale" Einstellung ist. Wenn dies nicht der Fall ist, können Sie das Skript so ändern, dass die aktuellen Werte vor dem Ausführen gespeichert werden, oder Sie verwenden die Farben aus den Standardeinstellungen.

+0

danke, das ist wirklich cool und macht genau das, wonach ich gefragt habe. Ich habe darüber nachgedacht und es ist wirklich keine große Sache, einen neuen Tab mit einem gespeicherten Profil zu öffnen, also werde ich das wahrscheinlich öfter machen. Ich nehme an, dass das häufiger gefragt und hilfreicher ist, also werde ich es als die richtige Antwort markieren, aber danke nochmal für das Skript, da ich diese beiden Methoden anwenden werde. –

+2

Neil, du bringst mich um! Wissen Sie, wenn Sie pingelig sein wollen, geht es in Ihrer Frage nicht wirklich um Programmierung. :-) – benzado

Verwandte Themen