Frage

Guter Abend,

Ich bin ziemlich neu für Unix so vielleicht dieses Mini-Projekt zu ehrgeizig ist. Hoffnung, jemand in die richtige Richtung weisen in könnte.

Arbeiten in einer Kabine und ich kann nicht sehen, wie das Licht es draußen ist. Im Allgemeinen verwende ich einen gelben Terminal am Morgen (sonnig) und eine schwarz / grün Vergangenheit 03.00 (Nacht).

Was würde ich tun (zum Teil nur meine bash zu üben). Ist es, ein Skript zu schreiben, um 3:00 ändern die Farbe aller meiner Terminals. Wenn das funktioniert vielleicht werde ich sie jede Stunde oder so etwas machen ändern. Würde die sicher sein? Ist das möglich?

Hier sind einige meiner Spezifikationen: Solaris 10 bash-Shell Gnome

Ich suche gerade jetzt auf diese: ändern Gnome-Terminal Thema programmatisch

War es hilfreich?

Lösung

Wenn ich dies tat, würde ich beginnen mit PROMPT_COMMAND . Bash wird das Skript ausgeführt, kurz bevor eine Eingabeaufforderung angezeigt wird.

Sie haben ein paar Möglichkeiten. Sie könnten einen Skript selbst innerhalb PROMPT_COMMAND haben:

PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi

Oder Sie könnten einen externen Befehl haben PROMPT_COMMAND laufen (die auch ein Bash-Skript sein könnten oder könnten Sie eine andere Sprache verwenden, wenn man will) dort die ganze Arbeit zu tun:

PROMPT_COMMAND=/path/to/setcolor_timeofday

Das einzige Loch, das ich in dieser zu sehen ist, dass wenn Sie ein Programm laufen haben, wenn die Zeit über Veränderungen (zB tail -f mit einer Feile sehen), wird der Hintergrund nicht ändern, bis Sie an dem Bash-Eingabeaufforderung zurück.

Andere Tipps

Ändern der Shell Vorder- und Hintergrundfarben über PS1 in bash wird von anderen hier die einfachste, wie aufgezeigt. R Samuel Klatchko Ansatz mit PROMPT_COMMAND ist wohl das vielseitigste. Dies hat jedoch Nachteile. Bash kann nur ‚langweilig‘ Hintergrundfarben verwenden, und seine Vorder- / Hintergrundfarben von jeder Anwendung außer Kraft gesetzt werden können. Ändern Ihres GNOME-Terminal Thema programmatisch, insbesondere in Echtzeit, wird viel schwieriger sein, aber produzieren viel schönere Ergebnisse.

Verwenden Sie cron , es ist der Unix-Job-Scheduler. Und setzt es einen Befehl auszuführen, die in der Frage ändert Bashrc wie Sie verknüpfen. Das Problem ist, dass es nur für neuen Terminals funktionieren wird, wenn Sie einige geöffnet haben, sie werden sie nicht ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top