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?


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)“.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.