fishシェルのディレクトリ移動履歴管理はとても簡単

Goro Yanagi
Feb 20 · 6 min read

「bashからfishへ乗り換えました」の第2回になります。 fishシェルを使うと ディレクトリの移動履歴管理がとても簡単になります、という話。

fishシェルではbuild-inコマンドで コマンドを使ったディレクトリ移動履歴を簡単に管理できます。

bashシェルでは

bashシェルでも コマンド、 コマンド、 コマンドを使うと、移動したディレクトリの履歴を管理できます。

ディレクトリの移動履歴を管理する、という目的は達成出来るのですが、いくつか問題があります。

問題1) コマンドで移動した履歴が記録されない

通常、ディレクトリを移動するのに使うコマンドは コマンドです。しかし、困ったことに コマンドで移動した場合、履歴が記録されません。したがって コマンドで戻ることもできません。 ディレクトリの移動履歴を管理したい場合は コマンドを使う必要があります。

問題2) 履歴をジャンプできない

先ほどの例で -> -> という順に移動しました。この場合、 から コマンドで戻ることはできません。

問題3) 前に進めない

コマンドで移動した後、もとのディレクトリに戻ることはできません。 つまり から コマンドで戻った後、再び に戻るには改めて、 コマンドで移動する必要があります。

さてfishシェルでは

もちろんfishシェルでも同様のコマンドがあります。しかも、もっと便利です。

コマンドで移動した履歴を記録する

コマンドで移動したディレクトリが記録されており、 コマンドで戻ることができます。 コマンドはで移動したディレクトリの履歴が確認できます。

履歴をジャンプする

移動したディレクトリのリストを表示したときに、行頭に番号が表示されています。 コマンドの引数にこの番号を指定すると、そのディレクトリに移動できます。つまり履歴をジャンプできます。

前に進む

コマンドを使って、 コマンドで戻ったディレクトリを進むことができます。

これで、bashシェルのディレクトリの移動履歴管理で挙げた3つの問題が解消されていることが確認できました。

もっと便利に

fishシェルには高性能なプラグイン管理の仕組み(fisher)があります。fisherを使って以下のプラグインをインストールしてください。

fisherがあれば、以下のコマンドでインストール出来ます。

インストール後、新たにfishシェルを起動すると コマンドが使えるようになります。

新たに起動したfishシェルでディレクトリをいくつか移動したあとに、 コマンドを使ってみてください。

キーを連打すると過去の移動履歴が表示され、移動可能なディレクトリが順にフォーカスされます。 コマンドを利用するよりも簡単に移動できますね。


fishシェルは friendly interactive shellの略です。標準の状態でもbashシェルよりも便利です。

プラグインを入れるともっと便利になりますが、fishシェルの面目躍如ですね。

VELTRA Engineering

Posts from the VELTRA Engineering team. www.veltra.com

Goro Yanagi

Written by

VELTRA Engineering

Posts from the VELTRA Engineering team. www.veltra.com