やりたいこと
1行で、存在しない ディレクトリごとファイルを作成したい!
要するに、以下のことを touch
コマンドのみで以下のことをやりたいということです。
❯ mkdir -p hoge/fugo/piyo
❯ touch hoge/fugo/piyo/test.txt
❯ tree .
.
└── hoge
└── fugo
└── piyo
└── test.txt
3 directories, 1 file
シェルの設定ファイルにエイリアスとして登録して使えるまでがゴールです。
既存のtouchコマンド
touch
で 存在しない ディレクトリごとファイルを作成しようとするとディレクトリがないよと怒られます。
❯ touch hoge/fugo/piyo/test.txt
touch: hoge/fugo/piyo/test.txt: No such file or directory
シェルスクリプトを作成する
名前は適当ですが、一気通貫に作成するシェルスクリプトを作成します。
touch_mkdir.sh
#!/bin/sh
mkdir -p "$(dirname "$1")" && touch "$1"
当方はzshを使用しているので、zshrcにエイリアスを登録します。
今回は mkdir + touch
ということで mduch
にしました。
zshrc
alias mduch='sh $HOME/dotfiles/lib/touch_mkdir.sh'
使ってみる
作成できました。簡単ですね!
❯ mduch hoge/fugo/piyo/text.txt
❯ tree .
.
└── hoge
└── fugo
└── piyo
└── text.txt
3 directories, 1 file