Ändern Sie den Terminaltitel in Mac OS X

39

Wie kann ich den Titel eines Terminalfensters in Mac OS X beliebig ändern? Ich habe diese Frage und dieses Magicwrap-Ding gesehen , aber denke, es ist nur ein einfacher Mac OS X-Befehl.

Dan Rosenstark
quelle
Zu beachten ist, dass diesbezüglich nichts spezielles für OS X gilt - die Antwort funktioniert auf so gut wie jedem Terminal.
Andrew Aylett
Ist es dann Bash-spezifisch?
Dan Rosenstark
@ Andrew Aylett, funktioniert das Skript, das ich in meine Antwort (unten) geschrieben habe, auch auf Linux-Distributionen?
Dan Rosenstark
Ja, es sollte überall funktionieren (mit einer von sh abgeleiteten Shell), die Unix-y-Terminals verwendet.
Andrew Aylett

Antworten:

48

In diesem Artikel erfahren Sie, wie.

Im Wesentlichen verwenden Sie Zeichenfolgen, die auf dem Bildschirm angezeigt werden, um dem Terminal mitzuteilen, welcher Titel angezeigt werden soll.

title='My first title'
echo -n -e "\033]0;$title\007"

Im obigen Beispiel wird der Variablentitel, auf den der Variablentitel gesetzt ist, zum Terminaltitel. Natürlich können Sie auch nur den Titel in der Zeichenfolge als Echo verwenden, z. B .:

echo -n -e "\033]0;My first title\007"

Aber der erste Weg macht es ein bisschen einfacher zu benutzen und / oder später zu erweitern.

Dan McGrath
quelle
Ausgezeichnet. Könnten Sie echo -n -e "\033]0;$1\007"Ihrer Antwort ein Beispielskript (wie dieses? ) Hinzufügen, damit ich es bitte als beste Antwort markieren kann?
Dan Rosenstark
2
printf ist möglicherweise zuverlässiger: printf "\033]0;%s\007" "$title_variable"(Die verschiedenen Optionen und Verhaltensweisen von echo sind nicht für alle Systeme, Shells oder sogar Shell-Optionen gleich.) Außerdem sollten die Variablenzuweisungen in bash keine Leerzeichen um das Gleichheitszeichen enthalten.
Chris Johnsen
1
Ich habe $ * und innerhalb einer Funktion verwendet, damit ich meine Titelzeichenfolge nicht in Anführungszeichen setzen muss.
BeepDog
Gibt es eine Möglichkeit, den Titel in einem C-Programm zu ändern? Das Programm, über das ich nachdenke, führt eine Animation basierend auf ncurses.h aus, daher bin ich mir nicht sicher, wie ich zum Terminal zurückkehren soll :-(
phs
OK: Nur fprintf (stdout, ..) funktioniert. Ich hätte es versuchen sollen, bevor ich gefragt habe.
phs
34

Wenn Sie Folgendes hinzufügen ~/.profile, erzielen Sie den gleichen Effekt:

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
}

Und dann title 'et voila'sortiert ein kurzer Blick alle Ihre Tabs.

techpeace
quelle
Warum ist es ein Problem, wenn Sie viele Funktionen in .profile haben? Gibt es eine Grenze?
tgkprog
1
IDK warum, musste aber .bash_profile anstelle von .profile bearbeiten
Nakilon
2
Oder: alias title="printf '\033]0;%s\007'".
Kenorb
export alias title="printf '\033]0;%s\007'"
Mwayi
Sie können es auch mit hinzufügen sudo nano /etc/bashrc. Dies sollte für alle Benutzer ausgeführt werden. Starten Sie die Terminalsitzung neu oder übernehmen Sie source /etc/bashrcIhre Änderungen.
Eugene Kulabuhov
8

Remix von Dan MgGs Antwort:

echo -n -e "\033]0;$1\007"

Speichern Sie es in einer Datei namens / usr / bin / title (mit sudo!) Und chmod es auf + x. Dann können Sie von überall aus einfach tippen

title 'Trying to Figure This GIT Thing Out'

und du bekommst einen schönen kleinen titel.

(Die Syntax kann variieren, wenn Sie nicht mit OSX arbeiten, sofern ich das richtig verstehe.)

Dan Rosenstark
quelle
Wenn Sie eine dieser neueren Versionen von OS X verwenden, können Sie dies /usr/local/bin/titlestattdessen tun .
Samy Bencherif
2

Als Alternative zu sh-basierten Befehlszeilenlösungen ändert die OS X-Terminal-App den Titel vorzugsweise wie folgt: Wählen Sie im Menü Terminal-> Shell die Option "Titel bearbeiten" aus, und Sie können den Titel ändern leicht.

user572813
quelle
1

Unter OS X werden die Terminaleinstellungen in gespeichert ~/Library/Preferences/com.apple.Terminal.plist.

Der Titel des Terminals wird in der WindowTitleVoreinstellung gespeichert .

J.Money
quelle
0

Danke dafür. Ich habe gerade eine Funktion zu meiner .bashrc hinzugefügt:

    function stit() {
    echo -n -e "\033]0;$1\007"
}

In meinen Augen "stit" = eine praktische Abkürzung für "set_title". Und jetzt, wenn ich den Titel meiner Fenster im laufenden Betrieb festlegen möchte, gebe ich Folgendes ein:

stit "[new window title]"
signetmac
quelle
0

Die Antwort, die als beste Antwort markiert ist, funktioniert einwandfrei ... das habe ich getan ...

tell application "Terminal"
    activate
    do script "echo -n -e \"\\033]0;WorkerTab1\\007\"; cd $HOME/folder1"
end tell

Dadurch wird der Name der neuen Registerkarte auf WorkerTab1 gesetzt und andere Befehle wie "cd" usw. ausgeführt.

Bates
quelle