cd実行後にlsを実行するには他のサイトでも紹介されているようにcdのaliasを定義すればいい。
じゃあpushdは? popdは? autocdは?
となるといちいち全部のalias定義するのは面倒だからディレクトリを移動したらlsするようにする
#ディレクトリを移動したら自動でls
.bashrcあたりに下記のコードを追記する。
autols(){
[[ $AUTOLS_DIR != $PWD ]] && ls
AUTOLS_DIR="${PWD}"
}
export PROMPT_COMMAND="autols"
最後の行が肝心で、PROMPT_COMMAND
にコマンド名を設定するとプロンプトが表示される前に、そのコマンドが実行される。
#ターミナル起動時には実行しない
上記のコードだと新しくターミナルを立ち上げるとホームディレクトリの内容が表示されて個人的には鬱陶しい。
autols(){
[[ -n $AUTOLS_DIR ]] && [[ $AUTOLS_DIR != $PWD ]] && ls
AUTOLS_DIR="${PWD}"
}
export PROMPT_COMMAND="autols"
る。
別の書き方もあるので紹介する。
###起動時にAUTOLS_DIR
に値を設定しておく
AUTOLS_DIR="$PWD"
autols(){
[[ $AUTOLS_DIR != $PWD ]] && ls
AUTOLS_DIR="${PWD}"
}
export PROMPT_COMMAND="autols"
###変数展開を使う
シェルの変数展開
autols(){
[[ ${AUTOLS_DIR:-$PWD} != $PWD ]] && ls
AUTOLS_DIR="${PWD}"
}
export PROMPT_COMMAND="autols"
#おまけ
##lsで色がでない
Linuxの場合は下記のようにlsにオプションを渡せばいい。
ls --color=always
OSXなどDarwinもオプションを渡せばいいのだが、手元に環境がないため各自で調べて欲しい。
##autocd
ちなみにちなみに.bashrcに
shopt -s autocd
と書くとcdを省略して/etcとか~/Downloadsとかでディレクトリを移動できるようになる。
##zshの場合
setopt autocd
autoload -Uz add-zsh-hook
add-zsh-hook precmd autols
autols(){
[[ ${AUTOLS_DIR:-$PWD} != $PWD ]] && ls
AUTOLS_DIR="${PWD}"
}
詳しい説明は省くが、add-zsh-hook precmd autols
がbashのexport PROMPT_COMMAND="autols"
にあたる。