Я в настоящее время использую псевдоним в csh/tcsh для открытия оболочек с определенными цветами окна.
Пример: xterm -geometry 105x25 -font 8x13 -bc -bg #333 -fg #999 \!* &
То, что я хотел бы сделать, имеют одну команду, открытую новая оболочка с цветом на основе уровня, оболочка находится в дереве.
Пример:
Я имею удар в наличии, но я использую tcsh или csh по умолчанию.
Как указано, я хотел бы, чтобы одна команда/псевдоним открыла родительские и дочерние оболочки и решила что цвет использовать.
Большинство оболочек (tcsh, удар, zsh, но не csh) увеличивает SHLVL
переменная среды, когда они запускают, так, чтобы $SHLVL
указывает на уровень вложения Вашей текущей оболочки. Сделайте что-то как (для tcsh)
set xt_bg_colors=(white white black green)
set xt_fg_colors=(black black gray yellow)
alias xt "xterm -geometry 105x25 -font 8x13 -bc -bg $xt_bg_colors[$SHLVL] -fg $xt_fg_colors[$SHLVL] \!* &"
Я создал бы переменную типа массив со списком спецификаций цветов в нем (или два массива - один для fg и один для bg). Затем в Вашем выборе псевдонима из того массива с помощью индексной переменной затем увеличьте его.
Демонстрация:
> set array=(apple banana cherry)
> @ index = 1
> @ index = ( ( $index ) % ${#array} + 1 ) ; echo $array[$index]
Каждый раз Вы выполняете последнюю строку (который представляет Ваш псевдоним), текущий объект в массиве отражен, индекс увеличен, и затем индекс повторяется, если это превышает длину массива.
Вы, возможно, должны использовать файл для отслеживания индекс вместо переменной в оперативной памяти.