私は、busyboxツールにほとんどアクセスできるだけの環境で作業していて、シェルスクリプトでMon Jan 1 23:59:59 2018 GMT
形式の日付をUNIXタイムスタンプに変換しようとしています。解析している入力時間の形式を変更できません。 busybox date
は、この日付形式、または名前付きの月を含む他の形式を理解できないようです。私はそれを実行できる本当に醜いスクリプトを持っていますが、誰かがもっと良いことを知っていますか?
編集:date -D
オプションが機能しません。
date: invalid option -- 'D'
BusyBox v1.24.1 (2018-01-11 16:07:45 PST) multi-call binary.
Usage: date [OPTIONS] [+FMT] [TIME]`
ビジーボックスdate
2 いくつかの助けを借りて、指定された文字列の日付を完全に解析できます1 (GMTタイムゾーンを除く)。
$ gdate='Mon Jan 1 23:59:59 2018 GMT'
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z'
Mon Jan 1 23:59:59 GMT 2018
ヘルプは-D
オプションで提供されます。これはソース形式の説明です。
UNIXタイムスタンプを取得するには、予想される出力形式+'%s'
を追加するだけです。
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z' +'%s'
1514851199
1
busybox date
には、GNU date
コマンドの機能のほとんどと、GNU date
コマンドは:-D
オプションではありません。busyboxのヘルプは次のように取得します。
$ busybox date --help
BusyBox v1.27.2(Debian 1:1.27.2-2)マルチコールバイナリ。
使用法:日付[オプション] [+ FMT] [時間]
時間の表示(+ FMTを使用)、または時間の設定
[-s,--set] TIME Set time to TIME -u,--utc Work in UTC (don't convert to local time) -R,--rfc-2822 Output RFC-2822 compliant date string -I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision -r,--reference FILE Display last modification time of FILE -d,--date TIME Display TIME, not 'now' -D FMT Use FMT for -d TIME conversion
-D FMT
オプションに注意してください。
2
2つの方法でbusybox date
を呼び出すことができる場合があることに注意してください。
$ busybox date
または、busybox
という名前のdate
へのリンクが正しいPATH
ディレクトリにインストールされている場合:
$ date
確認するには、--version
または--help
を要求して、インストールした日付を確認します。
GNU date
:
$ date --version
date (GNU coreutils) 8.28
または(busybox date
):
$ date --help
BusyBox v1.27.2 (Debian 1:1.27.2-2) multi-call binary.
…
…