7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ディレクトリ移動したらls pushd popd cd autocd対応版

Last updated at Posted at 2015-03-09

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"にあたる。

7
9
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
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?