🗂

cdコマンドで直前にいたディレクトリに戻る + fishのディレクトリ移動おまけ

2021/01/27に公開

モチベーション

fishには z コマンドが用意されています。
正確には、fish シェルで使えるプラグインに z があります。
このプラグインは、Fuzzy 検索でこれまでターミナルで訪れたことがあるディレクトリからもっとも似ている名前のディレクトリに一発で移動してくれます。

たとえば以下のように打つと、現在のディレクトリAがどこであっても、もっとも名前の似ている Desktop ディレクトリに一発で移動してくれます。

z Dektop

このとき、Desktop ディレクトリから 元いたディレクトリA に移動したい・戻りたい場合があります。
しかし、カレントディレクトリからの相対パスを打ち込むのは面倒です。

cd -

cd -

つい最近知ったのですが、cd -と打つと直前にいたディレクトリへ移動します。

たとえば、~/Desktop/A/B/C/Dというディレクトリにいたとします。
ここで、cd ~/Desktop/X/Y/Zと打つと、当然 Z に移動します。
このとき、cd -を打つともとの ~/Desktop/A/B/C/D に戻ります。

pushd/popdコマンドより機能が絞られており利用が簡単です。

fishのディレクトリ移動

fish シェルの man コマンドで cd を調べるとハイフンコマンドについて書かれていました。

       Fish also ships a wrapper function around the builtin cd that understands cd - as changing to  the  previous  directory.
       See  also  prevd.  This wrapper function maintains a history of the 25 most recently visited directories in the $dirprev
       and $dirnext global variables. If you make those universal variables your cd history is shared among all fish instances.

Fish シェルはどうやら cd コマンドをいい感じにラップしてくれているようです。

prevd, nextdは Fish の機能のコマンドで、ディレクトリ履歴を数字POSだけ移動してくれます。
dirhコマンドでこれまでの移動履歴をわかりやすく表示してくれます。

prevd [ -l | --list ] [POS]

cd -の内部ではおそらく prevd などを叩いているのかなと思います。

さいごに

cd -だけ書こうと思っていたら最終的に fish になりました。
fishがさらに好きになりました。

参考URL

GitHubで編集を提案

Discussion