普段、ターミナル操作をメインで行う人であれば、ディレクトリ移動や移動の履歴などを効率よくできないか?など考えたり、自作スクリプトなどでカスタマイズしている人もいると思います。今回は、fish shellを使っていてディレクトリ移動管理が便利だと感じたので紹介したいと思います。bashのディレクトリ移動履歴管理などと比較しながらまとめてみようと思います。
目次
bashでのディレクトリ移動の効率化について
cd
でディレクトリを移動します。このとき、移動後に直前のディレクトリへ戻るには、cd -
で戻ることができます。cd
コマンドで移動する場合は、基本的に履歴が管理されません。代わりのコマンドとしては、以下のコマンドを利用します。
- pushd
- popd
- dirs
pushd
cd
コマンドと同じく引数で指定したディレクトリに移動することが出来るコマンドです。この時、移動前のカレントディレクトリをスタックに保存して指定されたディレクトリに移動するというのがpushd
の特徴です。
popd
pushd
コマンドによってスタックに保存された最新ディレクトリに移動するのがpopd
コマンドです。スタックは、後入れ先出しなので、最後に移動したものを取り出して移動する。
dirs
pushd
コマンドによって保存されているスタック情報を確認出来るのがdirs
コマンドです。スタックのクリアなどもこのコマンドで実行することが出来ます。
bashを利用して移動履歴を残したい場合には、cdではなくpushed を使う必要がありました。また、スタック上に積んで、取り出すという操作を行っているので、繰り返し利用することが出来ない状況にありました。
fishの場合を見てみましょう。
fishシェルでも同様のコマンドがあります。
dirh
dirh
コマンドは、履歴を表示するコマンドです。
prevd
prevd
コマンドは、ディレクトリ履歴を過去方向に移動します。
nextd
nextd
コマンドは、prevd
コマンドと反対で、ディレクトリ履歴を未来方向に移動します。
実際に使ってみると
# 1.ディレクトリ移動履歴の確認
$ dirh
2) /Users/kawashima
1) /Users/kawashima/test1
/Users/kawashima/test2
# 2. 2番の移動履歴に移動する。
$ prevd 2
$ pwd
/Users/kawashima
# ディレクトリ移動履歴の確認
❯ dirh
/Users/kawashima
1) /Users/kawashima/test2
2) /Users/kawashima/test1
前にも移動してみましょう。
# ディレクトリ移動履歴の2つ先へ移動する。
$ nextd 2
$ dirh
2) /Users/kawashima
1) /Users/kawashima/test1
/Users/kawashima/test2
良く移動するディレクトリは、頻繁に移動することが多いので、移動履歴が視覚的に把握できると作業効率はあがりますね。
おわりに
触ってみるとかなり便利だなという印象を持ちました。ディレクトリ移動なんかは何気なく利用するコマンドですので、このように効率的に利用できるのは嬉しいですね。