シェルスクリプトで実行時のタイムスタンプを取得する方法

目次

スポンサードリンク

タイムスタンプは date コマンドで取得することができます。date コマンドはフォーマットを指定することで、様々な形式でタイムスタンプを取得できます。この記事ではタイムスタンプを取得する方法を解説します。

dateコマンドでタイムスタンプを取得する

dateコマンドは出力する形式をフォーマット文字列で指定することができます。以下サンプルコードは、「1970年1月1日午前0時0分0秒(UTC)」からの経過秒数で表現する UNIXタイムスタンプや、年月日、年月日時分秒 を連結した文字列、年月日時分秒にミリ秒、マイクロ秒まで追加した文字列を標準出力に出力しています。

#!/bin/bash

# 1970-01-01 00:00:00 UTCからの経過秒数
echo `date +%s`

# 実行時の年月日
echo `date +%Y%m%d`

# 実行時の年月日時分秒
echo `date +%Y%m%d%H%M%S`

# 実行時の年月日時分秒 + ミリ秒 
echo `date +%Y%m%d%H%M%S%3N`

# 実行時の年月日時分秒 + マイクロ秒 
echo `date +%Y%m%d%H%M%S%9N`

ファイル名に含めるタイムスタンプなど、極力重複を排除したい場合などはマイクロ秒まで含めてもいいかもしれません。上記サンプルを実行すると以下のようにタイムスタンプが出力されます。

[root@hostname tmp]# ./date.sh 
1719310283
20240625
20240625191123
20240625191123576
20240625191123578450345

タイムスタンプをファイル名に含める方法

以下のサンプルコードは、タイムスタンプを変数に保存しておき、ファイル名の一部にタイムスタンプを含めるようにしています。シェルスクリプトを実行したタイミングでログファイルなどを出力したいときなどに使うテクニックです。

#!/bin/bash

# タイムスタンプを変数に保存しておく
timestamp=`date +%Y%m%d`

# 文字列結合でファイル名の一部にタイムスタンプを含める
# filename_20240617.txt というファイルに 文字列 hoge が記録される
echo  "hoge" > filename_$timestamp.txt 


シェルスクリプトの知識は、プログラマにとって長く役立つ知識です。 私はこちらの書籍で一通り知識を抑えました。基本から丁寧に解説されています。

最短3時間で覚えるLinuxシェルスクリプト
こちらは、シェルスクリプトの基本的な書き方、デバッグ方法、if, case, while, forなど基本的な制御構文について書かれています。30日間の無料体験もできる『Kindle Unlimited』でも読むことができます。

Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】 icon