#はじめに
ファイル作ろー。親ディレクトリないけどtouch
に-p
オプションつければ大丈夫!(だよな?)
$ touch -p parent_hoge/child_hoge
touch: illegal option -- p
~略~
あれ?touchコマンドにpオプションなかったっけ?mkdirにはあるのに!
みなさんも一度はこのミスをしたことがありますよね?(この記事にたどり着いたということはあるに違いない!)
しかし、ここで怒ってはいけません。
そもそもtouchはファイルのタイムスタンプを更新するコマンドなので、ディレクトリに対する操作がないのは当然です。
かといってmkdir
とtouch
2回もコマンドを実行するのは煩わしいですよね?
そこで!上記の挙動をするcliをgemで作ってしまいました!
とりあえずgemのページとソースコードです。
使い方
まず、gemをインストールします
$ gem install touch_p
あとは通常のtouch
やmkdir
のように使うだけです。
パターン1 hoge/hogeのとき
$ tree
.
$ touch_p parent_hoge/child_hoge
$ tree
.
└── parent_hoge
└── child_hoge
1 directory, 1 file
パターン2 hoge/のとき
$ tree
.
$ touch_p hoge/
$ tree
.
└── hoge
1 directory, 0 files
gemにした理由
すでにshellスクリプトで実装する記事もたくさんありますし、新たにgemで作る必要はありませんでした。
ただRubyを使用しているプログラマとしてgemの仕様を知っておくべきだ思ったので、思い切ってgemで作成することにしました。