JavaScriptを有効にしてください

mkdir + cd のbash関数とその解説?

 ·  ☕ 1 分で読めます

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
共有