LoginSignup
10
5

cdした後にlsするのはzshにやらせよう。

Last updated at Posted at 2019-02-27

はじめに

cdしたあとlsする関数を作ろうかと思ったけど、
enhancdというものを使い倒してるのでそこらへんとの兼ね合いが面倒くさそうで、
なにかいい方法がないかなと思ったらあった。

最終的な形

.zshrc
chpwd() {
	if [[ $(pwd) != $HOME ]]; then;
		ls
	fi
}

解説

こんかいのキモとなるのはchpwd()こいつ。
我らがzshにはhook関数なるものが実装されている。
こいつらはプロンプトを表示する直前だったりEnterを押してコマンドを実行する直前だったり、
様々な条件に応じて発火するものが備わっている。

詳細な話はこの記事がとてもいい感じに纏まっているのでそっちに丸投げ。
zshでhook関数を登録する - Qiita

そして、今回はそのhook関数の中のカレントディレクトリが変更されたときに発火するchpwdなるものを用いる。

.zshrc
chpwd() {
	ls
}

zshrc内でchmodにこんな感じでlsをする処理を書いてあげると、カレントディレクトリを変更したときに自動でlsしてくれるようになる。

ただ、これだとただcdしたときにホームディレクトリの中身がlsでウワーってなるので、

.zshrc
chpwd() {
	if [[ $(pwd) != $HOME ]]; then;
		ls
	fi
}

ifで、現在のディレクトリ(pwd)が ホームディレクトリ$HOMEと同じじゃなかったらls。と制御してあげる。
\

蛇足

cdした際にいちいち出てくるの煩わしいかなーって思ったけど、大きなディレクトリの移動はenhancdでゴリっと移動できるし、cd hogehogeで細かく移動するときはディレクトリ見ながら移動したいのでlsの手間が省けて良さげ。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5