【小ネタ】mkdirした後にそのディレクトリにcdするエイリアスを作る

Posted by 雅楽斎 on Friday, April 22, 2022

TOC

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

FileZillaにある「ディレクトリを作成して移動

よく、githubとかからcloneするときにディレクトリがとっ散らからないように一時ディレクトリを作ることがあります。そして、作業を一時ディレクトリでやるので、一時ディレクトリは作った後は必ず移動する訳です。

最初から移動することがわかっているmkdirとcdは一緒にできないかなぁとググって、結果すぐに見つかるレベルの頻出ハウツーな訳ですが、ようやく重い腰を上げて対応することにしました。

mkdirとcdを連続して行うalias - Qiita

手順.bashrcに以下を追記し、source ~/.bashrcするmkcd() { \mkdir _}alias mkcd="mkcd"使い方こんな感じに使う。…

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の後にそのディレクトリに移動するmkdircdmkdirpcdを定義しています。

試す

$ 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