Bash cdコマンドでファイルを指定しても移動できるようにするだけ

    >


yuis ASUS /mnt/c/pg$ cd ruby/hoge.md
yuis ASUS /mnt/c/pg/ruby$ cd -
/mnt/c/pg
yuis ASUS /mnt/c/pg$

オーバーライドってやつみたいな。

cd(){
    [[ -f "${1}" ]] && builtin cd "$(dirname "${1}")" || builtin cd "${1}"
}

Everythingでファイルのあるディレクトリに移りたい時、ctrl+shift+Cでファイルのフルパスはコピーできるが、フォルダパスはコピーできない。いちいちdirnameするのもあれなのでcdを改造しようと思ったら以外と面倒だった。

because it calls recursively the cd defined by you. To fix, use the builtin keyword like:

bash – Override a builtin command with an alias – Stack Overflow

ということで、builtin cdcdにするとバグります。command cdでも出来ないと思う。

cdって以外にアラグメンツが不安定っていうか不定なので、細かく指定しようとすると詰むと思います。例えば-.../とか、realpathが効かない値もありますので、”引数がファイルである”という断固確定のものにだけ処理をしてそれ以外の全て曖昧なものは通常の動作ってしたほうが後々バグに悩まされないかと。



お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu