LoginSignup
5
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-15

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

結びに

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

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

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5