TOC
昔からあるはずのググればすぐ見つかるレベルの難題をいまさら対処

よく、githubとかからcloneするときにディレクトリがとっ散らからないように一時ディレクトリを作ることがあります。そして、作業を一時ディレクトリでやるので、一時ディレクトリは作った後は必ず移動する訳です。
最初から移動することがわかっているmkdirとcdは一緒にできないかなぁとググって、結果すぐに見つかるレベルの頻出ハウツーな訳ですが、ようやく重い腰を上げて対応することにしました。
bashで確認していますが、zshでも$_は同じ使い方ができるので恐らく使えます。
~/.bash_aliasesに以下の記述を追加します。
mkdircd() {
mkdir $* && cd $_
}
alias mkdircd="mkdircd"
mkdirpcd() {
mkdir -p $* && cd $_
}
alias mkdirpcd="mkdirpcd"
追加したら、source ~/.bash_aliasesor. ~/.bash_aliasesorbashで関数定義とaliasを反映させます。
vi開くのが面倒という方向けのコピペ用ヒアドキュメントはこちらです。(元々の~/.bash_aliasesのファイル末尾が改行でない場合のために前後に改行だけの行を追加しています。)
EOSをシングルクオートで括っているのはヒアドキュメント内で$を変数展開させないためです。
$ cat << 'EOS' >> ~/.bash_aliases
mkdircd() {
mkdir $* && cd $_
}
alias mkdircd="mkdircd"
mkdirpcd() {
mkdir -p $* && cd $_
}
alias mkdirpcd="mkdirpcd"
EOS
mkdirと作成するディレクトリの途中にディレクトリが存在しない場合に作成するオプションのmkdir -pの後にそのディレクトリに移動するmkdircdとmkdirpcdを定義しています。
試す
$ cat << 'EOS' >> ~/.bash_aliases
mkdircd() {
mkdir $* && cd $_
}
alias mkdircd="mkdircd"
mkdirpcd() {
mkdir -p $* && cd $_
}
alias mkdirpcd="mkdirpcd"
EOS
$ bash # ~/.bash_aliasesを反映
$ mkdirpcd first/second/third
$ pwd
/home/hogehoge/first/second/third
$ mkdircd tmp
$ pwd
/home/hogehoge/first/second/third/tmp
ありがとうございました。
スポンサーリンク
comments powered by Disqus
