Как открыть оболочки xterm с цветами фона на основе топографического расположения?

Я в настоящее время использую псевдоним в csh/tcsh для открытия оболочек с определенными цветами окна.
Пример: xterm -geometry 105x25 -font 8x13 -bc -bg #333 -fg #999 \!* &

То, что я хотел бы сделать, имеют одну команду, открытую новая оболочка с цветом на основе уровня, оболочка находится в дереве.

Пример:

  1. %> xt
    Открытая оболочка (белый bg/black fg) - новая оболочка
  2. %> xt
    Открытая оболочка A.a (черный bg/grey fg) - дочерняя оболочка
  3. %> xt
    Открытая оболочка A.a.a (зеленый bg/yellow fg) - оболочка внука

Я имею удар в наличии, но я использую tcsh или csh по умолчанию.
Как указано, я хотел бы, чтобы одна команда/псевдоним открыла родительские и дочерние оболочки и решила что цвет использовать.

2
задан 28.07.2010, 16:47

2 ответа

Большинство оболочек (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] \!* &"
3
ответ дан 08.12.2019, 05:54

Я создал бы переменную типа массив со списком спецификаций цветов в нем (или два массива - один для fg и один для bg). Затем в Вашем выборе псевдонима из того массива с помощью индексной переменной затем увеличьте его.

Демонстрация:

> set array=(apple banana cherry)
> @ index = 1
> @ index = ( ( $index ) % ${#array} + 1 ) ; echo $array[$index]

Каждый раз Вы выполняете последнюю строку (который представляет Ваш псевдоним), текущий объект в массиве отражен, индекс увеличен, и затем индекс повторяется, если это превышает длину массива.

Вы, возможно, должны использовать файл для отслеживания индекс вместо переменной в оперативной памяти.

2
ответ дан 08.12.2019, 05:54

Теги

Похожие вопросы