Как открыть xterm-оболочки с фоновыми цветами на основе топографического позиционирования?
2450
vol7ron
В настоящее время я использую псевдоним в csh / tcsh для открытия оболочек с определенными цветами окон. Пример:xterm -geometry 105x25 -font 8x13 -bc -bg #333 -fg #999 \!* &
Я хотел бы, чтобы одна команда открыла новую оболочку с цветом в зависимости от уровня оболочки в дереве.
Пример:
%> xt Открытая оболочка A (белая бг / черная фг) - новая оболочка
У меня есть bash, но по умолчанию я использую tcsh или csh. Как уже говорилось, я хотел бы, чтобы одна команда / псевдоним открывала родительские и дочерние оболочки и решала, какой цвет использовать.
Для чего нужен тег perl?
Dennis Williamson 14 лет назад
1
2 ответа на вопрос
3
Gilles
Большинство оболочек (tcsh, bash, 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] \!* &"
2
Dennis Williamson
Я бы создал переменную-массив со списком спецификаций цвета (или двумя массивами - один для fg и один для bg). Затем в своем псевдониме выберите из этого массива переменную индекса, а затем увеличьте ее.
Демо-версия:
> set array=(apple banana cherry) > @ index = 1 > @ index = ( ( $index ) % ${#array} + 1 ) ; echo $array[$index]
Каждый раз, когда вы выполняете последнюю строку (которая представляет ваш псевдоним), текущий элемент в массиве отображается, индекс увеличивается, а затем индекс оборачивается, если он превышает длину массива.
Возможно, вам придется использовать файл для отслеживания индекса вместо переменной в памяти.