はじめに
どうも、エンジニアのタマゴです。
今回は、dateコマンドを用いた日付取得について書きます。
知っている方にとっては当たり前な内容かと思いますが、誰かしらの参考になればと思い、記させていただきます。
内容
以前、何かの手順書に以下のような記載がありました。
cp -p /sample/test.txt /backup/YYYYMMDD_test.txt
※YYYYMMDDには当日の日付を入れること
コマンドを打つ前に、YYYYMMDDを今日の日付に置換したり、カタカタと書き換えたりしていました。
作業準備しているときに日付を書いておいたりもしましたが、作業日がリスケとなったときに全然違う日付になってしまっていたりもしました。
しばらく、自分も同じようにYYYYMMDD仮置きや、作業日決め打ちで記載していましたが、他の人が以下のように記載しているのを教えてもらい、以来は使うようにしています。
cp -p /sample/test.txt /backup/$(date +"%Y%m%d")_test.txt
こう記述することで、サーバ上から今日の日付をYYYYMMDD形式で取得してくれます。
文法的な解説
$(command)について
$(command)
は、囲まれたコマンドの結果に置き換わります。
バッククォート囲みでも同じ働きをします。
つまり、上記のコマンドでは$(date +"%Y%m%d")
がdate +"%Y%m%d"
の結果に置き換わります。
dateコマンドについて
日付取得用のコマンドです。
何もオプションを付けずに打つと、現在の日時を長々と出力してくれます。
そこで、formatのオプションが大事になってきます。
+"%Y%m%d"
+以降がフォーマットの形式です。
%Y→年(YYYY) %m→月(MM) %d→日(DD)
となるので、日付がYYYYMMDDの形式で出力されるということになります。
デメリットについて
ここまでの書き方では至極便利なものである風に書きましたが、ある見方をするとデメリットも見えてきます。
日付を跨いだ作業
例えば、2024/04/01に以下のような夜間作業があったとします。
mkdir $(date +"%Y%m%d)_dir
※ここで日付が変わった
cd $(date +"%Y%m%d)_dir
この場合、mkdirコマンドは20240401ディレクトリを作成していますが、
日付を跨いだcdコマンドではdateコマンドの結果が20240402となり、作成したディレクトリを参照できません。
あとから見ると何日かわからない
コマンドだけを見ると、実際の作業日がわかりません。
別途、作業管理の中で日付は書くと思うので基本的には問題ないと思いますが、管理方法によっては大事に思うかもしれないと感じました。
まとめ
今回はdateコマンドを用いてバックアップ等のファイル名に日付を記載する方法を述べました。
メリットとデメリットがありましたが、基本的にはメリットの方が大きいかなと思いました。
今後、自分が作成する手順書等で使える機会があったら積極的に使いたいと思います。
以上です。閲覧ありがとうございました。