Wie kann ich die Terminal.app in OS X dazu bringen, das aktuelle Verzeichnis in seinem Fenster- oder Tabulatortitel anzuzeigen?
Ich benutze die Bash-Shell.
macos
bash
terminal
terminal.app
Kareman
quelle
quelle
Antworten:
Kommt auf deine Muschel an.
Dieser Artikel enthält mehrere Methoden.
Ich persönlich verwende zsh mit einer praktischen precmd () - Funktion, die vor jeder Eingabeaufforderung ausgeführt wird.
Obwohl in den anderen Fragen Bash-Methoden aufgeführt sind, haben sie den Alias cd. Bash bietet eine inhärente Methode, die nur die Eingabeaufforderung verkettet.
quelle
~/.profile
(oder eine gleichwertige) Datei auf dem Remote-Computer kopieren .Kopieren & Einfügen in Datei ~ / .profile:
PROMPT_COMMAND="echo -ne \"\033]0;${PWD##*/}\007\"; $PROMPT_COMMAND"
Dadurch wird der Titel der aktuellen Terminalregisterkarte auf den Namen des Ordners gesetzt, in dem Sie sich befinden (NICHT auf den gesamten Pfad).
Also ...
Developer/Applications/Utilities/Bluetooth/
wird =>Bluetooth
quelle
Ab Mac OS X Lion 10.7 verfügt das Terminal über eine explizite Escape-Sequenz zum Festlegen des Arbeitsverzeichnisses, das das Terminal mithilfe des Proxy-Symbols im Standardfenster anzeigt. Auf diese Weise können Sie mit gedrückter Befehlstaste auf den Pfad klicken, ihn im Finder anzeigen oder wie jeden anderen Ordner ziehen. Darüber hinaus kann Terminal damit ein anderes Terminal im selben Verzeichnis erstellen und das Arbeitsverzeichnis wiederherstellen, wenn Terminal beendet / neu gestartet wird (wenn Fortsetzen aktiviert ist). Sie können damit auch Verzeichnisse für Fenstergruppen wiederherstellen.
Es ist dieselbe OSC-Escape-Sequenz (Operating System Command) wie für die Fenster- und Tabulatortitel, jedoch mit dem ersten auf 7 gesetzten Parameter. Der Wert sollte eine "file:" -URL sein, die die Prozentcodierung von Sonderzeichen ermöglicht, damit sie verarbeitet werden können alle gültigen Pfadnamen. Sie sollten auch den Hostnamen angeben, damit Terminal feststellen kann, ob es sich um ein lokales Verzeichnis handelt. Das Terminal verwendet es nicht als aktuelles Arbeitsverzeichnis, wenn es von einem anderen Host stammt.
In ähnlicher Weise unterstützt Terminal das Festlegen der "dargestellten Datei" mithilfe der OSC-Escape-Sequenz mit einem Parameter von 6. Wenn dies festgelegt ist, zeigt das Proxy-Symbol dies anstelle des Arbeitsverzeichnisses an. Zum Beispiel habe ich Emacs und weniger konfiguriert, um die aktuell angezeigte Datei / Puffer im Proxy-Symbol wiederzugeben. Auf diese Weise können diese tty-basierten Programme besser in das umgebende Betriebssystem integriert werden.
Das Verhalten des Arbeitsverzeichnisses ist standardmäßig für Bash (die Standard-Shell unter Mac OS X) aktiviert. Siehe / etc / bashrc für den entsprechenden Code.
Es ist wahrscheinlich auch erwähnenswert, dass Lion Terminal jetzt das Festlegen des Tabulatortitels unabhängig vom Fenstertitel mithilfe der OSC-Escape-Sequenz unterstützt.
quelle
update_terminal_cwd
Funktion setzt das Proxy-Symbol auf das aktuelle Arbeitsverzeichnis. Standardmäßig$PROMPT_COMMAND
istupdate_terminal_cwd
.Abgesehen von der Empfehlung, dass Sie die Escape-Sequenz für Apple Terminal-spezifische Betriebssystembefehle verwenden:
ESC ] Ps ; Pt BEL
WoPs
ist7
undPt
ist einefile:
URL? In Mac OS X 10.11 (und wahrscheinlich seit 10.7) gibt es eine Datei/etc/bashrc_Apple_Terminal
(die unter 10.11 nicht mehr bearbeitet werden kann), in der der Komfort definiert istupdate_terminal_cwd()
als (ohne die Kommentare):Sie können dies auch auf Ihren Remote-Boxen verwenden, falls Sie dies beabsichtigen, und sich dann den Kopf zerkratzen, wenn Sie die Datei-URL in Bash korrekt codieren.
Und wenn Sie ändern
PROMPT_COMMAND
in Ihrem eigenen.bash_profile
oder.bashrc
Sie vielleicht vergessen , dies zu nennen. In derselben Datei zeigen sie ein Beispiel für eine bessere Verkettung mit:.bash_profile
Ich persönlich wollte die Git-Eingabeaufforderung hinzufügen, also habe ich Folgendes getan:quelle
Bash-Lösungen mit PS1 und PROMPT_COMMAND schlagen beide fehl, wenn das Verzeichnis Unicode-Zeichen enthält (zumindest auf Snow Leopard). Die beste Lösung, die ich finden konnte, war das Äquivalent von
Leider funktioniert das nicht direkt, also habe ich stattdessen eine Shell-Funktion definiert, um den
tr
Aufruf durchzuführen:Dies funktioniert gut für lateinische Akzente, die in Unicode NFD verwendet werden (die Akzente verschwinden, das zugrunde liegende lateinische Zeichen bleibt jedoch erhalten).
Leider wird es für Dinge wie Chinesisch völlig scheitern.
quelle
Angenommen, Sie verwenden das Standard-MAC-Terminal, können Sie das folgende in .profile verwenden, da "set_prompt" Sie beim Öffnen einer neuen Registerkarte möglicherweise selbst in den Stammordner sendet:
quelle
Geben Sie dies in Ihr ~ / .profile oder eine gleichwertige Datei ein:
Die erste Zeile enthält zwei Sonderzeichen, die nicht kopiert / eingefügt werden können. Sie können den Text jedoch hier herunterladen: http://blog.nottoobadsoftware.com/files/setterminaltitle.sh .
quelle
echo
Verwendungprintf
, die können Sie diese Zeichen (ESC und BEL / Steuerungs-G) mit Escape - Sequenzen exprimieren:printf '\e]0;$@\a"