Wie wähle ich aus, was in der Titelleiste von PuTTY unter Linux angezeigt wird?

Wie wähle ich aus, was in der Titelleiste von PuTTY unter Linux angezeigt wird?

In der PuTTY-Konfiguration gibt es unter Terminal → Features eine Option namensDeaktivieren der ferngesteuerten Änderung des Fenstertitels. Wenn diese Option nicht aktiviert ist, ändert sich die Titelleiste von PuTTY jedes Mal, wenn ich in der Konsole die Eingabetaste drücke.

Ich dachte, es wäre eine sauberere Lösung, den Titelleistentext von Linux aus festzulegen, als für jeden herumliegenden PuTTY-Client einen anzugeben. Wo kann ich also ändern, was Linux als Fenstertitel festlegt?


$ uname -a
Linux drevo 2.6.32-5-amd64 #1 SMP Montag, 16. Januar 2012, 16:22:28 UTC x86_64 GNU/Linux

$ cat /etc/debian_version
6.0.4

Antwort1

Die meisten Terminalprogramme - darunter Konsole, Putty und Xterm - emulieren das alte VT100-Terminal. Dieses Terminal ermöglicht Ihnen, bestimmte Dinge, darunter Fettschrift, Farben, den Terminaltitel usw., mithilfe spezieller Zeichenfolgen, sogenannter Escape-Sequenzen, einzustellen.

Die Bash-Shell hat eine Variable namens PROMPT_COMMAND, die, wenn sie gesetzt ist, vor jeder Eingabeaufforderung ausgewertet wird, die Sie ausdrucken (ich glaube, zsh hat etwas Ähnliches, tatsächlich glaube ich, dass Bash den Code von ihnen übernommen hat). Sie können Escape-Sequenzen in PROMPT_COMMAND ausgeben und es wird Ihre Titelleiste festlegen.

Das hier habe ich in meinem (Linux/Bash):

USER=$(/usr/bin/id -un)
HOSTNAME=$(uname -n)
HOSTNAME=${HOSTNAME%%.*}
PROMPT_COMMAND='echo -ne "\e]0;$USER@${HOSTNAME}: $(pwd -P)\a"'

Sie können dies in Ihre ~/.bashrc einfügen

Sie können Ihr Terminal auf viele Arten anpassen. Ich mag es, wenn meine Eingabeaufforderung fett gedruckt ist, damit das Ende meiner Eingabeaufforderung leichter zu erkennen ist. Dies macht sie fett gelb, was gut zu meinem standardmäßigen schwarzen Hintergrund passt:

PS1="\[\e[33;1m\]\h:\$\[\e[0m\] "

Suchen Sie nach Linux Prompt Customization. Sie werden mehr Anleitungen finden, als Sie brauchen. Wählen Sie die aus, die Sie am einfachsten lesen können.

Antwort2

Der Terminaltitel wird mithilfe spezieller Escape-Sequenzen in der Konsolenausgabe festgelegt. Standardmäßig schließt die Bash-Eingabeaufforderung diese Escape-Sequenzen ein und legt den Titel auf das aktuelle Arbeitsverzeichnis fest.

Sie müssen also Ihre PS1-Variable bearbeiten (meistens ist sie in festgelegt ~/.bashrc), andernfalls überschreibt Bash Ihren Titel bei jeder Anzeige der Eingabeaufforderung.

Sie können den Titel dann festlegen, indem Sie Folgendes in ein Skript einfügen, das ausgeführt wird, wenn Sie sich anmelden, z ~/.profile. B.:

echo -e "\033]0;<your string>\007"

Antwort3

Ich habe in vielen Foren gesucht und keine Antwort auf die Frage gefunden:
Wie bekomme ich die gesamte Befehlsausgabe in den Putty-Titel?

Ich brauchte es, damit andere Programme wissen, wann einige Jobs auf einem Server erledigt sind und ob sie richtig oder falsch erledigt wurden. Plink stdout und stdin funktionierten nicht. Ich habe viele Optimierungen mit Warteverzögerungen verwendet und bei einigen Befehlen funktionierte das, bei anderen nicht. XSEL und XCLIP konnten auf diesem Server nicht installiert werden.

Hier ist die Lösung:

  1. Erhalten Sie die Befehlsausgabe in einer Datei.
  2. Geben Sie den Titel dieser Datei wieder.

Auf dem Putty-Client und dem SUSE-Server sieht es folgendermaßen aus:

ls /home | grep domagaja > logutoit.txt 
echo -e "\033]0\\;$(cat logutoit.txt)\\007\\c"

Hoffentlich kann das jemand verwenden. Natürlich funktioniert es nicht für alle Servertypen und Putty-Clienteinstellungen, aber die Idee sollte gut funktionieren.

verwandte Informationen