たとえば、現在の日付と時刻を次の形式で表示します。
yyyymmddhhmmss
それ、どうやったら出来るの?ほとんどの日付形式には-
、/
、:
などが付属しているようです。
どうぞ:
date +%Y%m%d%H%M%S
man date
が上部近くで言っているように、次のようにdate
コマンドを使用できます。
date [OPTION]... [+FORMAT]
つまり、+
で始まる形式パラメーターを指定できます。おそらく、私が使用したフォーマットシンボルの意味を推測できます。
%Y
は年%m
は月用です%d
は日用これと他のフォーマット記号はman date
にあります。
シェルスクリプトの簡単な例
#!/bin/bash
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
句読点フォーマットなし:-+%Y%m%d%H%M%S
句読点付き:-+%Y-%m-%d%H:%M:%S
Bashを使用している場合は、次のコマンドのいずれかを使用することもできます。
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the Shell was invoked
Option -v varname
を使用して、結果を標準出力に出力する代わりに$varname
に保存できます。
printf -v varname '%(%Y%m%d%H%M%S)T'
Dateコマンドは常にサブシェルで(つまり、別のプロセスで)実行されますが、printfは組み込みコマンドであるため、より高速になります。
句読点なし(@Burusothmanが述べたように):
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
O/P:
20170115072120
句読点付き:
current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;
O/P:
2017-01-15 07:25:33
面白い/面白いパラメータ拡張 を使用してこれを行う方法(bash 4.4
以降が必要):
${parameter@operator} - P operator
展開は、パラメータの値をプロンプト文字列であるかのように展開した結果の文字列です。
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251