私はtcshを使用します。私が持っているディレクトリや私の環境の他の主な側面に基づいてプロンプト形式(色/強調表示)を変更したいと思います。
私はまだシェルハッカーではなく、これを行う方法がわかりません。
現在のディレクトリの所有権
私が「私の」ディレクトリの1つにある場合(つまり、私が現在の作業ディレクトリの所有者である場合)は、通常の外観でなければなりません。しかし、私が他の人のディレクトリにいる場合(私は他の人の作業領域に多くのサポートを提供しますcd
)、プロンプトがかなり異なって見えるようにしたいと思います。
これは、他の人のディレクトリに失礼なコマンドを入力しないことを思い出させます。 (考えてみるか、make clobber
お待ちp4 sync
ください)
主な環境変数の設定
私の環境に関するもう一つの重要な情報は、SWDEVという特定の環境変数が設定されているかどうかです。 SWDEVが設定されていない場合、私のスクリプトとプロセスはデフォルトの場所から取得されます。ただし、この変数が設定されている場合、これは私のスクリプトとプロセスの新しいルート位置と見なされ、その場所のスクリプトに従って動作が変わります。
「通常の」動作を期待せずに思わず新しい場所でコードを実行できるように、この変数の設定を覚えておくことが重要です。
ベストアンサー1
外部スクリプトが適切なソリューションであれば、次のことができます。
#!/usr/bin/env perl
use Cwd;
my $cwd=getcwd();
$cwd =~ /$ENV{HOME}/ ?
print "$cwd % " :
print "%{\033[1;31m%}CAREFUL\\\!%{\033[0m%} $cwd % ";
$PATH
as どこかに保存make_prompt.pl
して実行可能にします。その後、以下から~/.tcshrc
:
alias precmd 'set prompt="`make_prompt.pl`"'
結果は次のとおりです。
また、他のディレクトリから特定の方法でプロンプトを変更するための追加条件を追加することもできます。
#!/usr/bin/env perl
use Cwd;
my $cwd=getcwd();
## Here are some colors to choose from
my $red="%{\033[1;31m%}";
my $green="%{\033[0;32m%}";
my $yellow="%{\033[1;33m%}";
my $blue="%{\033[1;34m%}";
my $magenta="%{\033[1;35m%}";
my $cyan="%{\033[1;36m%}";
my $white="%{\033[0;37m%}";
## This resets the color, you need it after each color command
my $end="%{\033[0m%}";
## If you are in $HOME or one of its sub dirs, print a green prompt
if($cwd =~ /$ENV{HOME}/){
print "$green$cwd$end % ";
}
## If you are in /usr or one of its sub dirs, print a red prompt
elsif($cwd=~ /\/usr/){
print "$red$cwd$end % ";
}
## If you are in /etc or one of its sub dirs, print a blue prompt
elsif($cwd=~/\/etc/){
print "$blue$cwd$end % ";
}
## If you're in /root. As you can see, colors can be combined
elsif($cwd=~/\/root/){
print $red . "OY\\! You're not allowed in here\\!" .
$end . $magenta . " $cwd$end % ";
}
## For wherever else, just print a plain prompt
else {
print "$cwd % ";
}