2014-08-09

bash 変数を使って cd を楽にする方法

深い階層へ軽動したい時、cd コマンドを打つのは面倒。たとえ bash のパス補完が効くとしても、手間はかかる。そこで、目的のパスを bash 変数に保存することでこの問題の対処をしている。例えば、このブログ記事の下書きが置いてあるディレクトリーへ移動するには、次のコマンドを使う:

$ cd $blog

.bashrc に書く設定は次の通り:

blog="$HOME/Documents/blog/"

ディレクトリー階層がどんなに深くても、この方法なら一発で辿り着けるので便利。

パスに空白が含まれる場合

時として、パスに空白が含まれる場合がある。自分でそういうパスを作ろうとは思わないけど、他人の git repository を clone したらパスに空白が空いていた、等々何ともしがたい状況はある。そういう時、同じ要領で変数を指定しても cd で失敗する。

$ grep somedir ~/.bashrc
somedir="$HOME/Documents/path with space"
$ cd $somedir
bash: cd: /Users/ataka/Documents/path: No such file or directory

path の中に含まれる空白が引数の区切りとして扱われている。「path with space」というディレクトリー名の最初の「path」しか cd に渡っていない。これを解決する方法は、多少武骨だけれども変数を "" で囲む。

$ cd "$somedir"

これで「path with space」へと移動できた。

あとがき

ディレクトリー移動はコマンドライン操作の基本。ここで楽できると、随分ストレスが減る。もし良ければ試してみて欲しい。

No comments:

Post a Comment