
Gibt es einen Befehl, mit dem man das Farbschema des Mac OS X-Terminals ändern kann? Mir gefällt die Idee, die Farben je nach den ausgeführten Skripts ändern zu können. Bisher ändere ich nur die Farbe meiner Bash-Eingabeaufforderung mit PS1, was in Ordnung ist, aber nicht so auffällig, wie ich es gerne hätte.
Antwort1
Je nachdem wasgenauSie erreichen möchten, hier sind einige Ideen in AppleScript unter Verwendung Ihrer Terminalstile. Diese sind robuster als tput
, da dies durch farbige Eingabeaufforderungen zurückgesetzt wird. usw. (zumindest für mich).
Dadurch werden alle Tabs, auf denen Python ausgeführt wird (derzeit ist kein SSH-Server zum Testen verfügbar), auf Homebrew und die anderen auf Ocean eingestellt:
tell application "Terminal"
repeat with w from 1 to count windows
repeat with t from 1 to count tabs of window w
if processes of tab t of window w contains "Python" then
set current settings of tab t of window w to (first settings set whose name is "Homebrew")
else
set current settings of tab t of window w to (first settings set whose name is "Ocean")
end if
end repeat
end repeat
end tell
Speichern Sie es als Skript und führen Sie es aus, osascript Name.scpt
wann immer Sie Ihre Shells neu einfärben möchten (natürlich können Sie dies als Shell-Skript oder etwas Ähnliches verpacken).
Wenn Sie alle Prozesse mit langer Laufzeit anders anzeigen möchten, verwenden Sie die folgende Bedingung:
if busy of tab t of window w is true then
Oder Sie können den Stil einer einzelnen, manuell ausgewählten Registerkarte festlegen:
on run argv
tell application "Terminal" to set current settings of tab (item 1 of argv as number) of front window to first settings set whose name is (item 2 of argv)
end run
Führen Sie es wie folgt aus:
osascript StyleTerm.scpt 3 Homebrew
-> Die dritte Registerkarte des vordersten Terminalfensters erhält den Homebrew-Stil!
Wenn Sie Hintergrundfenster ändern möchten, ersetzen Sie „Frontfenster“ durch einen in Klammern gesetzten Ausdruck, wie direkt nach „Tab“. Wenn Sie immer den ausgewählten „aktuellen Tab“ ändern möchten, verwenden Sie selected tab
anstelle von tab (item 1 of argv as number)
.
.bash_profile
Wenn Ihnen die erste Lösung zu viel Handarbeit ist, fügen Sie Ihrer Liste Folgendes hinzu :
PROMPT_COMMAND='osascript "/path/to/Name.scpt"'
Jetzt wird es vor jeder Eingabeaufforderung ausgeführt (einziges Problem: nicht nach dem Starten von etwas, d. h ssh
. Aber in diesem Thema geht es sowieso nicht um ausgefallene Bash-Tricks. Dies ist nur ein Hinweis.)
Antwort2
Ihre Skripte können den tput
Befehl verwenden, um Farben auf portable Weise festzulegen. Probieren Sie das folgende Skript aus und Sie werden sehen, dass das Terminal einen dunkelcyanfarbenen Hintergrund mit hellcyanfarbenem Text aufweist.
#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World
Weitere Informationen hierzu finden Sie inman 5 terminfo
im Abschnitt „Farbhandhabung“.
Sie können dasselbe tun, indem Sie die Escape-Sequenzen, die Ihr Terminal erkennt, direkt wiederholen. Das geht zwar schneller, funktioniert aber möglicherweise nicht mit einem anderen Terminalprogramm. Viele davon erkennen xterm-Sequenzen und so würde das obige Skript aussehen, wenn Sie sie verwenden.
#!/bin/bash
printf "\033[48;5;6m" # or "\033[46m"
printf "\033[H\033[2J" # your system's clear command does something similar
printf "\033[38;5;14m" # or "\033[96m"
echo Hello World
Weitere Informationen zu xterm-Steuersequenzen finden Sie hierHier.
Antwort3
Sie können Applescript verwenden, um jedem neuen Terminal ein zufälliges Design zuzuweisen.
Bearbeiten Sie Ihre .bash_profile
und fügen Sie diesen Befehl hinzu
osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"
Wenn Sie das gleiche zufällige Thementerminal erhalten, können Sie ⌘I
es jederzeit manuell auswählen und einstellen.
Dies ist nützlicher, wenn Sie viele unterschiedlich aussehende Terminalthemen haben. Wenn Sie sich umsehen, gibt es viele Websites dafür.
Antwort4
Dieses AppleScript funktioniert bei mir unter OS X 14.3 (die anderen Antworten nicht).
tell application "Terminal"
repeat with i in windows
try
set current settings of tabs in i to settings set "Solarized Dark"
end try
end repeat
end tell
Die Terminal-Anwendung scheint die Art und Weise geändert zu haben, wie sie ihre Tabs und Fenster in OS X 14.3 anzeigt, sodass Sie beim Durchlaufen der Tabs einiger ihrer Fenster zuverlässig Fehlermeldungen erhalten. Dies scheinen jedoch keine echten Fenster zu sein, sodass Sie sie einfach ignorieren können (was ich mit dem try ... end try
Block tue).
Ich neige dazu, kleine Skripte wie dieses in meine Shell-Skripte einzubinden, und zwar etwa so:
osascript -e "tell application \"Terminal\"
repeat with i in windows
try
set current settings of tabs in i to settings set \"Solarized Dark\"
end try
end repeat
end tell"
Ich persönlich verwende dies, um in meinem Terminal automatisch zwischen hellen und dunklen Themen zu wechseln (ich muss nur eine neue Registerkarte im Terminal öffnen oder meine color_mode
Funktion ausführen). Sie können meinen vollständigen Code dafür sehenin meinem Dotfiles-Repo.