GNU/Linux >> Linux の 問題 >  >> Linux

Linuxコマンドdateを使用しているときに特定の時間を追加します

Linux の場合

-d を使用するだけです (または --date ) 日付を計算するには:

date -d '+1 hour' '+%F %T'
#    ^^^^^^^^^^^^

例:

$ date '+%F %T'
2013-04-22 10:57:24
$ date -d '+1 hour' '+%F %T'
2013-04-22 11:57:24
#           ^

Mac OS の場合

警告、上記は Linux でのみ機能し、Mac OS では機能しません。

Mac OS では、同等のコマンドは

date -v+1H

Linux と macOS を 1 つのコマンドで

Linux サーバーと macOS ワークステーションの両方で動作するスクリプトを作成する必要がある場合は、最初の date のエラーを黙らせることができます。 呼び出して「OR」します (|| ) 他と。どちらが先でも構いません。

date -u -d "+${max_age}Seconds" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || \
date -u -v "+${max_age}S"       +"%Y-%m-%dT%H:%M:%SZ"

たとえば、この bash 関数はファイルを AWS S3 にアップロードし、Expires: を設定します。 および Cache-Control:

s3_upload_cache_control(){
  local max_age_seconds="${1}" ;shift         # required
  local bucket_path="${1}"     ;shift         # required
  local filename="${1}"        ;shift         # required
  local remote_filename="/${1:-${filename}}"  # optional
  local fmt="+%Y-%m-%dT%H:%M:%SZ"
  aws s3 cp                                                          \
    "${filename}"                                                    \
    "s3://${bucket_path}${remote_filename}"                          \
    --expires                                                  "$(   \
      date -u -d "+${max_age_seconds}Seconds" $fmt 2>/dev/null  ||   \
      date -u -v "+${max_age_seconds}S"       $fmt               )"  \
    --cache-control max-age=$max_age,public                          \
    --acl public-read
}


シェル スクリプトで時間を追加する必要がある場合は、以下のコマンドと日付形式を使用します (DATE 文字列の前に TIME を入力)

date -d"11:15:10 2017-02-05 +2 hours" +"%Y-%m-%d %H:%M:%S" これは 2017-02-05 13:15:10 を出力します

これは、UTC なしでは正しい日付になりません。動作しません


Linux
  1. timedatectlコマンドを使用してRHEL7Linuxシステムの日時を変更する

  2. Linuxでのコマンドまたはプロセスの実行時間を検索する

  3. コマンドラインを使用して相対時間を設定する

  1. Linuxatコマンドでタスクをスケジュールする

  2. Linuxコマンドラインでのtcpdumpの使用の概要

  3. Linuxコマンドラインで力を使用する

  1. Linuxでtopコマンドを使用するためのヒント

  2. LinuxTouchコマンドの使用方法+例

  3. Linux で at を使用してタスクをスケジュールする方法