10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Linux]ファイル名にコマンド実行日時を差し込む方法

Last updated at Posted at 2019-07-29

はじめに

mysql の dump 生成時に毎回ファイルの生成日時を手でファイル名に加えていましたが、どうにかならんものかと思って調べてみたらすでに先人からすばらしいヒントが残されておりました。Linux ではバッククオートされた文字列はコマンドとして解釈されるそうです。

参考:
Linuxのシェルやコマンドにおけるバッククォートの使い方 | UX MILK

シングルクォートは囲った中身を文字列として主力するのに対して、バッククォートは囲った中身をコマンドとして実行しその結果を出力します。

つまり

こういうことが可能です。

bash
# ファイル生成
$ touch my_text_`date "+%Y_%m_%d_%H_%M_%S"`.txt

# 確認
$ ls
my_text_2019_07_25_23_04_22.txt
$(...)版(これでもOK)
$ touch my_text_$(date "+%Y_%m_%d_%H_%M_%S").txt

date "+%Y_%m_%d_%H_%M_%S" で取得した日付時刻の文字列をそのままファイル名に使うことができています。これと同じことを mysql の dump 実行時に出力するファイル名に指定すれば、ファイル名にコマンド実行時の日付時刻を含めることが可能ということです。

使用例(※mysqldumpコマンドの細かいオプションは省略)
mysqldump -uxxxxxx -pxxxxxx --databases some_db_name > /path/to/my_dump_`date "+%Y%m%d_%H%M%S"`.dump

こんなかんじですね。やったぜ!

ちなみに

なお、個人的には $(...) のほうがバッククオートよりもコマンドを実行している感があってわかりやすいとおもいました。(あくまで個人の感想です)

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?