ディレクトリを変更するたびに現在のディレクトリを表示する「cd」のエイリアスは何ですか?

ディレクトリを変更するたびに現在のディレクトリを表示する「cd」のエイリアスは何ですか?

tcsh では別名が必要で、別のディレクトリに移動しますpwdcd

以前は、これには次のエイリアスを使用しましたが、シェルプロンプトもに変更されました[current directory]>。プロジェクトの要求により、シェルプロンプトを変更することはできませんが、まだ毎回使用したいと思いますcd

alias cd 'cd \!* ; set cwd=`pwd`;pwd;set prompt=$cwd:t\ \!\>\ '

上記のエイリアスを使用して削除しようとしましたが、うまくいきませんでしたset prompt(構文を理解していません)。

答え1

以下は私にとって効果的でした。

alias cd 'cd \!*; set cwd=`pwd`; pwd'

cdこれは、3つのコマンドを実行するエイリアスに置き換えられます。

cd \!*

これによりディレクトリが変更されます。

set cwd=`pwd`

結果を変数pwdに保存し、最後にcwd

pwd

現在のディレクトリを印刷します。

2番目のコマンドはプロンプトでは必要ないため、これ以上役に立たないため、次のように単純化できます。

alias cd 'cd \!*; pwd'

またはより良い方法は

alias cd 'cd -p \!*'

オプションを使用して-p結果ディレクトリを印刷します。

(では、変数に保存するのではなく、tcshプロンプトでまたはを指定して現在の作業ディレクトリをインポートできます。すべての場合にフルパスを提供し、可能であれば単純化を使用してください。)%/%~%/%~~

答え2

あなたはtcsh特別を定義することができますcwdcmd フック現在の作業ディレクトリが変更されるたびに呼び出されるエイリアス:

alias cwdcmd pwd

zshこの概念を複製しました(フックを使用)。機能変えるニックネームtcsh機能なし):

chpwd() pwd

とにかく、現在の作業ディレクトリの末尾の部分をプロンプトに表示するためには、それは必要ありません。

set prompt='%c !> '

十分でしょう。また、変数は独自にtcsh設定されるため、$cwdエイリアスで手動で設定する必要はありませんcd

答え3

別のオプションはを使用することですがrprompt、これはプロンプトとまったく同じですが、正しい横:

例えばset rprompt="%~":

% cd /usr/local/bin/                                       ~
% echo Hello                                               /usr/local/bin
Hello
%                                                          /usr/local/bin

promptここでエイリアスを使用することもできますrprompt

これが一般的なプロンプトを変更しないようにする「プロジェクト要件」を満たしているかどうかはわかりませんが、おそらくオプションかもしれません。

関連情報