Ark's Blog

数学とか競プロとか参加記とか備忘録とか

ようこそ

mkdir + cd

mkdircdを同時にしたいときに毎回

$ mkdir hoge
$ cd hoge

をするのがめんどいので、これをまとめて実行させる。

自分的に落ち着いた手段は.bashrcに以下を追加する。

function mkcd() {
  mkdir $@ && cd $_;
}

あとは

$ mkcd hoge

でOK。

$ mkcd -p aaa/bbb/ccc

と打ったとき、ディレクトaaa/bbbが存在しないときでもちゃんと作れる。

この記事のメインはここまで。以下、蛇足


適当にぐぐったら、関数を定義する系では

function mkcd() {
  mkdir $1;
  cd $1;
}

とか

function mkcd() {
  mkdir $1 && cd $_;
}

とか

function mkcd() {
  mkdir -p "$@" && eval cd "\"\$$#\"";
}

が出てきた。

-pなどのオプションへの対応や記述の簡潔さを考えると、冒頭のものが最適かなと。

ところで$_なんてのがあったんですね。${@:$#}と等価らしい。