mkdirして追加したディレクトリに、そのまま移動するためのコマンドをfish shellのfunctionとして実装してみた。
function mkcd
if test (count $argv) -eq 0
echo "Pass dir name"
return 1
end
set dirname $argv[1]
mkdir -p $dirname
eval "cd" $dirname
end
pオプションでmkdirを実行するので、複数階層を一度に作って遷移することも可能。
evalを使ってcdしているが、これをしないとコマンド終了時に元のプロセスに戻ったタイミングで実行していたパスになってしまう。この辺りはbashと同じ。
使い方は以下の通り。
~> mkcd test
~/test>
~/test> mkcd t1/t2
~/t/t/t2>