Ä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.


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.


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.


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


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.


1

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

Der Titel des Terminals wird in der WindowTitleVoreinstellung gespeichert .


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]"

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.

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.