mkdirした後にそのディレクトリに移動
これをやりたいことって多い
なので、エイリアスとして登録しておきたいと思い調べてみると、すぐ出てきた。
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
参考: [Hack 3. 1つのコマンドで mkdir と cd を実行する
で、これ何やってるの?
一見して何やってるかよくわからなかったので調べた
mkdir -p
は/dir1/dir2
を渡したときに再帰的に作ってくれるオプション
eval
は後ろのコマンドの中の変数を評価して展開する
$@
は引数全部をスペース区切り
$#
は引数の数
cd "\"\$$#\""
= cd "${引数の数}"
= cd {最後の引数}
つまり複数の引数が渡されたらそれらをmkdirして、最後に渡された引数のディレクトリに移動する。
例
$ mkdircd dir1/dir2 dir3/dir4
# $@ = "dir1/dir2 dir3/dir4"
# $# = 2
# eval cd "\"\$$#\"" => cd "$2" => cd "dir3/dir4"
# つまり mkdir dir1/dir2 dir3/dir4; cd dir3/dir4