ShellScript
Go
Bash
Zsh

検索画面を表示せずに目的のディレクトリに飛べて、history機能も備えたcdコマンド拡張gcdを作ってみた

More than 1 year has passed since last update.

greater cd command for lazy programmer.


何がしたかったか

cdコマンドは面倒くさいが検索画面が出るcd拡張も面倒くさい。なので、検索画面を出さずに一発で目的のディレクトリに飛べるようにした。


何ができるか

よく使うディレクトリを$GCDPATHに登録しておくと、そのディレクトリ、あるいはその直下のディレクトリに直接飛べる。検索画面は呼ばない限り表示されない。<-重要

誰でもカスタマイズできるように必要な機能だけバイナリで提供し、あとはShellで書くようにした。


デモ

aimof@host:~$ echo $GCDPATH 

/home/aimof/.vim:/home/aimof/go/src/github.com/aimof:/home/aimof
aimof@host:~$ gcd gcd
aimof@host:~/go/src/github.com/aimof/gcd$ gcd .vim
aimof@host:~/.vim$

gcd xxxで、$GCDPATHに登録したディレクトリかその直下のディレクトリに検索画面を経ずに飛ぶことができます。


history機能

さほど強力ではありませんが、history機能も備えています。

gcd latestgcd frequentで、gcdの履歴を最新/頻度の順番で改行区切り標準出力します。こいつをfzfやpecoなどに渡すことで、(面倒だけど)検索してジャンプすることも可能です。


実装

gcdリポジトリは、パスを解釈して絶対パスを返すgcdpath、絶対パスを受け取って記録するgcdhist、それらをつなぎ合わせるgcdコマンドの例、で構成されています。

gcdpathとgcdhistはバイナリですが、それ以外はshellコマンドの組み合わせなのでカスタマイズ性が高いです。(使い方をユーザーに丸投げしているとも言う)

詳しくはgithubのREADME.mdに書きましたが、中身はこんな感じ

gcd() {

TARGET=`gcdpath $1`
gcdhist add $TARGET
cd $TARGET
ls $TARGET # if you need to run ls when you move directory.
}


src

github.com/aimof/gcd


結びに

便利そうだなと思ったら、ぜひ使ってみてください!

もともとやりたかったことはだいたい終わっているので、欲しい機能ができたら追加していきます。