GNU Screen: Änderung des neuen Fensternamens

20

Ich kann den Namen eines Fensters mit Strg-a Umschalt-a ändern. Gibt es eine Möglichkeit, anstatt mehrere Fensternamen manuell zu bearbeiten, diese automatisch nach dem aktuellen Verzeichnis zu benennen?

Liewl
quelle
Welche Shell benutzt du?
Marco
Ich benutze Bash.
Liewl

Antworten:

21

Veranlassen Sie Ihre Shell, den Fenstertitel jedes Mal zu ändern, wenn das Verzeichnis geändert wird oder wenn eine Eingabeaufforderung angezeigt wird.

Für Ihre ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

Oder für Ihre ~/.zshrc(für zsh Benutzer):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

Weitere Informationen finden Sie im Handbuch zum Bildschirm unter Dynamische Titel oder auf der Manpage unter „Titel (Namensfenster)“.

Gilles 'SO - hör auf böse zu sein'
quelle
Ich habe die Bash-Datei in meine .bashrc-Datei kopiert und sie gibt die folgenden Fehler aus: Bash: PROMPT_COMMAND: Zeile 0: Syntaxfehler in der Nähe des unerwarteten Tokens ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
liewl
@David: Entschuldigung, der Punkt war, Befehle zu sammeln, PROMPT_COMMANDwenn es bereits etwas gab, aber ich hatte die Komponenten in der falschen Reihenfolge.
Gilles 'SO - hör auf böse zu sein'
2
Großartiger Trick @Gilles. Für diejenigen, die Fenstertitel kurz halten möchten, können Sie den vollständigen Pfad löschen und nur den Basisnamen beibehalten. Ersetzen Sie einfach $HOME/*) HPWD="~${HPWD#$HOME}";;mit*) HPWD=`basename "$HPWD"`;;
0

Sie können dies in die .bashrc-Datei einfügen, um den Terminalnamen (Fensternamen) in das letzte Verzeichnis (oder den letzten Dateinamen) zu ändern, in dem Sie sich befinden (an dem Sie arbeiten).

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

mehr beschrieben hier: link

B.Kocis
quelle