$ ls -l
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf
この設定ファイルを編集したいから先に時間をファイル名に含めたバックアップを取っておきたい、という場合の操作を考えてみます。
パターン1: 普通にcpする
$ cp -a server_settings.conf server_settings.conf.20160808
$ ls -l
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf.20160808
はい、バックアップ取れました。
取れましたが、、、ファイル名を2度タイプしたり、日付をカレンダー見て自分で入力したりと、なんか効率悪い!
というわけで、これを改善します。
パターン2: ブレース展開を利用する
$ cp -a server_settings.conf{,.20160808}
$ ls -l
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf.20160808
これでファイル名を2度タイプする手間が省けました。
次に日付の入力をなんとかします。
なお、ブレース展開については以下の記事がとても参考になりました。
参考
パターン3: dateコマンドを利用する
$ cp -a server_settings.conf{,.`date '+%Y%m%d'`}
$ ls -l
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf.20160808
なかなかいい感じです。
が、dateコマンド自体のタイプがとても面倒臭い!特にフォーマットの部分!(僕は記号のタイプがとても苦手です)
パターン4: alias を利用する
alias bkdate='date "+%Y%m%d"'
$ source ~/.bashrc
$ cp -a server_settings.conf{,.`bkdate`}
$ ls -l
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf
-rw-rw-r--. 1 chooyan chooyan 0 8月 8 06:55 server_settings.conf.20160808
だいぶ楽になりました。
これなら日付を調べる必要もなく、タイプミスによるファイル名の間違いもなく、多少は楽にバックアップファイルが作れそうです。
また、本筋からは外れますが、日付でフォルダを作りたい場合も
$ mkdir `bkdate`
で簡単に作ることができたりします。
まとめ
書いてみて、タブキーの補完も考慮すると実際のタイプ量はあまり最初と最後で変わっていないような気がしてきましたが、正確性や「今日何日だっけ?」と考えなくて良い分、楽になったのではないかと思います。
なによりブレース展開や長めのコマンドをaliasに登録し、出力を使い回せるようにする、といった工夫ができることを学べたので、今後何か他の工夫に使えそうな気がしています。
前回、カレントディレクトリの一部分を変更してcdするのを効率化してみたという記事を書いたのですが、
zshはビルトインのcdがこの機能を最初から持っていますね.
というコメントを@mpywさんより速攻でいただいてしまいました。(ありがとうございます!)
今回の工夫ももしかしたら二番煎じにすらなっていないかもしれませんが、その場合はコメントいただければ幸いです。とっても勉強になります。