如何打开具有根据地形定位的背景颜色的 xterm shell?

如何打开具有根据地形定位的背景颜色的 xterm shell?

xt是自定义的 csh/tcsh 别名,用于打开具有特定窗口颜色的 shell。它发出以下命令:

xterm -geometry 105x25 -font 8x13 -bc -bg #333 -fg #999 \!* &

如何编写一个命令来打开一个新 shell,并且根据 shell 在堆栈中的级别来确定其颜色。

例子:

  1. %> xt
    打开外壳 A (白色 bg/黑色 fg) - 新外壳
  2. %> xt
    打开外壳 Aa (黑色 bg/灰色 fg) - 子外壳
  3. %> xt
    打开壳 Aaa (绿色 bg/黄色 fg) - 孙壳

虽然这是针对 csh/tcsh 的,但如果 bash 更简单/更方便,那么它也是可以接受的。如上所述,我希望一个命令/别名可以打开父级和子级 shell 并决定使用什么颜色。

答案1

大多数 shell(tcsh、bash、zsh,但不包括 csh)SHLVL在启动时都会增加环境变量,因此这$SHLVL表示当前 shell 的嵌套级别。因此,请执行以下操作(对于 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

我将创建一个包含颜色规范列表的数组变量(或两个数组 - 一个用于 fg,一个用于 bg)。然后,在您的别名中使用索引变量从该数组中进行选择,然后增加它。

演示:

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

每次执行最后一行(代表您的别名)时,都会回显数组中的当前项,索引会增加,然后如果索引超出数组的长度,则会回绕。

您可能需要使用文件来跟踪索引而不是内存变量。

相关内容