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

8

In der PuTTY-Konfiguration gibt es unter Terminal → Funktionen die Option Ferngesteuertes Ändern des Fenstertitels deaktivieren . Wenn dies 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 Text der Titelleiste unter Linux festzulegen, als einen für jeden PuTTY-Client anzugeben, den ich herumliegen habe. Wo kann ich also ändern, was Linux als Fenstertitel festlegt?


$ uname -a
Linux drevo 2.6.32-5-amd64 # 1 SMP Mo 16 Jan 16:22:28 UTC 2012 x86_64 GNU / Linux

$ cat / etc / debian_version
6.0.4
Hubro
quelle

Antworten:

6

Die meisten Terminalprogramme - einschließlich konsole, putty und xterm - emulieren das alte VT100-Terminal. Mit diesem Terminal können Sie bestimmte Dinge festlegen, einschließlich Fettdruck, Farben, Festlegen des Terminaltitels usw., indem Sie Sonderzeichenfolgen verwenden, die als Escape-Sequenzen bezeichnet werden.

Die Bash-Shell hat eine Variable namens PROMPT_COMMAND, die, falls gesetzt, vor jeder Eingabeaufforderung ausgewertet wird (ich glaube, zsh hat etwas Ähnliches, tatsächlich denke ich, dass Bash den Code von ihnen genommen hat). Sie können Escape-Sequenzen in PROMPT_COMMAND ausgeben und Ihre Titelleiste wird festgelegt.

Folgendes 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 Ihr ~ / .bashrc einfügen

Es gibt viele Anpassungen, die Sie an Ihrem Terminal vornehmen können. Ich mag Fettdruck in meiner Eingabeaufforderung, um das Ende meiner Eingabeaufforderung leichter erkennen zu können. Dies macht es fett gelb, gut vor meinem Standard schwarzen Hintergrund:

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

Schauen Sie sich nach Linux Prompt Customization um. Sie werden mehr HowTos finden, als Sie zu tun wissen. Wählen Sie die aus, die am einfachsten zu lesen ist.

Reiche Homolka
quelle
14

Der Terminaltitel wird mithilfe spezieller Escape-Sequenzen in der Konsolenausgabe festgelegt. Standardmäßig enthält die Bash-Eingabeaufforderung diese Escape-Sequenzen und setzt den Titel auf das aktuelle Arbeitsverzeichnis.

Sie müssen also Ihre PS1-Variable bearbeiten (meistens ~/.bashrc), andernfalls überschreibt bash Ihren Titel jedes Mal, wenn die Eingabeaufforderung angezeigt wird.

Sie können den Titel dann festlegen, indem Sie Folgendes in ein Skript einfügen, das beim Anmelden ausgeführt wird, z ~/.profile.

echo -e "\033]0;<your string>\007"
jhenninger
quelle
Beachten Sie, dass dies der einzige ist, der die Frage beantwortet.
Erik Aronesty
Wechseln Sie -ezu, -enwenn Sie die zusätzliche Leerzeile vermeiden möchten, die vom Befehl echo ausgegeben wird.
ADTC
2

Ich habe viele Foren durchsucht und keine Antwort auf die Frage gefunden:
Wie werden alle Befehlsausgaben auf den Putty-Titel übertragen?

Damit andere Programme wissen, wann einige Jobs auf einem Server ausgeführt werden und ob sie richtig oder falsch ausgeführt werden. Plink stdout und stdin funktionierten nicht. Ich habe viele Optimierungen mit Warteverzögerungen verwendet und für einige Befehle, die funktionierten, für andere nicht. XSEL und XCLIP konnten auf diesem Server nicht installiert werden.

Hier ist also die Lösung:

  1. Befehlsausgabe in einer Datei abrufen.
  2. Echo diese Datei zum Titel.

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 jemand dies nutzen. Es funktioniert natürlich nicht für alle Servertypen und Putty-Client-Einstellungen, aber die Idee sollte gut funktionieren.

Jacek Domagała
quelle