cdした後にlsするのはzshにやらせよう。zshは両手を広げ我々を迎え入れてくれる。
はじめに
cdしたあとlsする関数を作ろうかと思ったけど、
enhancdというものを使い倒してるのでそこらへんとの兼ね合いが面倒くさそうで、
なにかいい方法がないかなと思ったらあった。
最終的な形
.zshrc
chpwd() {
if [[ $(pwd) != $HOME ]]; then;
ls
fi
}
解説
chpwd() {
if [[ $(pwd) != $HOME ]]; then;
ls
fi
}
こんかいのキモとなるのはchpwd()
こいつ。
我らがzshにはhook関数なるものが実装されている。
こいつらはプロンプトを表示する直前
だったりEnterを押してコマンドを実行する直前
だったり、
様々な条件に応じて発火するものが備わっている。
詳細な話はこの記事がとてもいい感じに纏まっているのでそっちに丸投げ。
zshでhook関数を登録する - Qiita
そして、今回はそのhook関数の中のカレントディレクトリが変更されたとき
に発火するchpwd
なるものを用いる。
chpwd() {
ls
}
zshrc内でchmodにこんな感じでls
をする処理を書いてあげると、カレントディレクトリを変更したときに自動でlsしてくれるようになる。
ただ、これだとただcdしたときにホームディレクトリの中身がlsでウワーってなるので、
chpwd() {
if [[ $(pwd) != $HOME ]]; then;
ls
fi
}
ifで、現在のディレクトリ(pwd
)が ホームディレクトリ$HOME
と同じじゃなかったらls
。と制御してあげる。
$HOMEって何?って人はshellで$ echo $HOME
してみよう。
蛇足
cdした際にいちいち出てくるの煩わしいかなーって思ったけど、大きなディレクトリの移動はenhancdでゴリっと移動できるし、cd hogehoge
で細かく移動するときはディレクトリ見ながら移動したいのでls
の手間が省けて良さげ。
Zshの包容力を感じる。あぁ・・・///
Author And Source
この問題について(cdした後にlsするのはzshにやらせよう。zshは両手を広げ我々を迎え入れてくれる。), 我々は、より多くの情報をここで見つけました https://qiita.com/2357gi/items/0ab1297357dedb90bbb1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .