時刻コマンドのカスタムフォーマット
質問
を使いたいのですが 時間 コマンドを bashスクリプト で、スクリプトの経過時間を計算し、それをログファイルに書き出すことができます。 必要なのは 実時間 だけで、ユーザとシステムは必要ありません。 また、まともなフォーマットで必要です。例えば、00:00:00:00(標準出力のようなものではない)。 私はどんなアドバイスでも感謝します。
期待されるフォーマットは
00:00:00.0000
(ミリ秒) [時]:[分]:[秒].[ミリ秒].
私はすでに3つのスクリプトを持っています。こんな例もありましたね。
{ time { # section code goes here } } 2> timing.log
しかし、私は実時間だけが必要で、ユーザとシステムには関係ありません。また、適切なフォーマットが必要です。
00:00:00:00
(標準出力のようなものではなく)。
つまり、時間出力を処理しやすいものにする方法を知りたいのです。
どのように解決するのですか?
あなたは
date
コマンドを使って、時間を計測する作業を行う前と後の現在時刻を取得し、その差を次のように計算します。
#!/bin/bash
# Get time as a UNIX timestamp (seconds elapsed since Jan 1, 1970 0:00 UTC)
T="$(date +%s)"
# Do some work here
sleep 2
T="$(($(date +%s)-T))"
echo "Time in seconds: ${T}"
printf "Pretty format: %02d:%02d:%02d:%02d\n" "$((T/86400))" "$((T/3600%24))" "$((T/60%60))" "$((T%60))""
注意事項 $((...)) での基本的な算術演算に使用することができます。 バッシュ - 注意: マイナスの前にスペースを入れてはいけません。 - これはコマンドラインオプションとして解釈される可能性があるためです。
こちらもご覧ください。 http://tldp.org/LDP/abs/html/arithexp.html
EDITです。
さらに、以下のようなものがあります。
セド
で生成された出力から部分文字列を検索して抽出します。
時間
.
EDITです。
ミリ秒(実際にはナノ秒ですが、ここではミリ秒に切り捨てています)でタイミングをとる例です。あなたのバージョンの
date
をサポートしなければなりません。
%N
の形式と
bash
は大きな数字をサポートする必要があります。
# UNIX timestamp concatenated with nanoseconds
T="$(date +%s%N)"
# Do some work here
sleep 2
# Time interval in nanoseconds
T="$(($(date +%s%N)-T))"
# Seconds
S="$((T/1000000000))"
# Milliseconds
M="$((T/1000000))"
echo "Time in nanoseconds: ${T}"
printf "Pretty format: %02d:%02d:%02d:%02d.%03d\n" "$((S/86400))" "$((S/3600%24))" "$((S/60%60))" "$((S%60))" "${M}"
免責事項
私のオリジナルは
M="$((T%1000000000/1000000))"
というのがありましたが、これはどうやら一部の人には動作しないようなので編集されましたが、新しいバージョンでは動作することが報告されています。私は、残りを使わなければならないと思うので、これを認めませんでしたが、反対票を入れられました。
自分に合ったものを選びましょう。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] どうすれば、文字列中のリテラルな中抜き文字を印刷し、また.formatを使用することができるのでしょうか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] Javaでミリ秒を「X分X秒」に変換するには?
-
[解決済み] 引用符で囲まれたパラメータを受け取り、再送するためのBashスクリプト
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] find を使ってサブディレクトリを除外する
-
[解決済み] スクリプトの実行に関連したファイルの参照
-
[解決済み] 実行中のBASHスクリプトのパスを決定する [重複].
-
[解決済み] set -u` による Bash による空の配列展開
-
[解決済み] bashでHMAC-SHA1
-
[解決済み] ログファイルやコンソールへの出力の書き出し
-
[解決済み] シェルのワイルドカード文字展開を停止しますか?
-
[解決済み] Bash。フォルダ構造を保持したまま再帰的に名前付きファイルをコピーする
-
[解決済み] ファイル名の一部をリネームする [重複]。
-
[解決済み] Bashを使用してJARからMANIFEST.MFファイルを読み込む方法