だから私は今ZSHにこれらすべてのクールなことをさせていますが、本当に素晴らしいのは、「cd」を呼び出すたびに暗黙的に「ls-a」を実行できるようにすることです。これは.zloginファイルまたは.aliasesファイルに含める必要があると思いますが、最善の解決策が何であるかはわかりません。考え?参考資料?
以下を.zshrcに入れます。
function cd() { emulate -LR zsh builtin cd $@ && ls -a }
編集:ドキュメントを見た後(zshbuiltins
、組み込みのcd
の説明または フック関数 =)私はより良い方法を見つけました:それはchpwd
関数のいずれかを使用しています:
function chpwd() {
emulate -L zsh
ls -a
}
またはchpwd_functions
配列を使用:
function list_all() {
emulate -L zsh
ls -a
}
chpwd_functions=(${chpwd_functions[@]} "list_all")
短縮版。
autoload -U add-zsh-hook
add-zsh-hook -Uz chpwd (){ ls -a; }
ここで何が起こっているのかについての簡単な説明。
autoload -U add-zsh-hook
この行は基本的に、提供された関数add-zsh-hook
をロードするだけです。
add-zsh-hook -Uz chpwd (){ ls -a; }
特殊関数 のそれぞれには、その関数がトリガーされたときに呼び出される関数の配列があります(ディレクトリの変更など)。この行は、その配列に関数を追加します。それを分解するには...
add-zsh-hook -Uz chpwd
この部分は、chpwd
特殊関数に新しい関数を追加することを指定します。 -Uz
は通常、これに推奨される引数であり、関数の引数(つまり次のビット)に使用される自動ロードに渡されます。
(){ ls -a; }
この2番目の部分は関数です。これは、一般に匿名関数と呼ばれるものです。これは、名前が割り当てられていない関数です。配列になっているだけなので、名前は必要ありません。
なぜこれが当てはまるのか、またはこれが優れているのかはわかりませんが、これは.zshrcでも機能することがわかりました。私が理解していない何かが欠けているかもしれませんが、ほとんどの答えよりもかなり不足しているようです。
chpwd() ls -a