🗂
cdコマンドで直前にいたディレクトリに戻る + fishのディレクトリ移動おまけ
モチベーション
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 の機能のコマンドで、ディレクトリ履歴を数字
dirhコマンドでこれまでの移動履歴をわかりやすく表示してくれます。
prevd [ -l | --list ] [POS]
cd -の内部ではおそらく prevd などを叩いているのかなと思います。
さいごに
cd -だけ書こうと思っていたら最終的に fish になりました。
fishがさらに好きになりました。
Discussion