Ich verwende derzeit einen Alias in csh / tcsh, um Shells mit bestimmten Fensterfarben zu öffnen.
Beispiel:xterm -geometry 105x25 -font 8x13 -bc -bg #333 -fg #999 \!* &
Ich möchte, dass ein Befehl eine neue Shell mit einer Farbe öffnet, die auf der Ebene basiert, in der sich die Shell in einem Baum befindet.
Beispiel:
- %> xt
Öffne Shell A (weiß bg / schwarz fg) - neue Shell - %> xt
Open Shell Aa (schwarz bg / grau fg) - Kinderschale - %> xt
Open Shell Aaa (grünes BG / gelbes BG) - Enkelkind-Shell
Ich habe Bash zur Verfügung, aber ich benutze standardmäßig tcsh oder csh.
Wie bereits erwähnt, möchte ich, dass ein Befehl / Alias die über- und untergeordneten Shells öffnet und festlegt, welche Farbe verwendet werden soll.
Antworten:
Die meisten Shells (tcsh, bash, zsh, aber nicht csh) erhöhen die
SHLVL
Umgebungsvariable, wenn sie gestartet werden, sodass$SHLVL
die Verschachtelungsebene Ihrer aktuellen Shell angegeben wird. Also mach so etwas wie (für tcsh)quelle
Ich würde eine Array-Variable mit der Liste der Farbspezifikationen erstellen (oder zwei Arrays - eines für fg und eines für bg). Wählen Sie dann in Ihrem Alias mithilfe einer Indexvariablen aus diesem Array aus und erhöhen Sie es dann.
Demo:
Jedes Mal, wenn Sie die letzte Zeile (die Ihren Alias darstellt) ausführen, wird das aktuelle Element im Array als Echo ausgegeben, der Index wird inkrementiert und der Index wird umgebrochen, wenn er die Länge des Arrays überschreitet.
Möglicherweise müssen Sie anstelle einer speicherinternen Variablen eine Datei verwenden, um den Index zu verfolgen.
quelle