日付パラメータに\ +または\ -を使用する理由はありますか?

日付パラメータに\ +または\ -を使用する理由はありますか?

date \+%F\-%T日付と時刻を次の形式で表示するために使用します2019-08-15-21:34:58

からman date

%F合計日付、%Y-%m-%d
%T時間と同じ、%H:%M:%S と同じ

私は理解していないか、\+説明がありません\-

後でバックスラッシュがエスケープされ、プラス記号はパラメータ接頭辞であり、ハイフンは文字列などの区切り記号(日付-時間)、
一部の人々はより簡単なものを使用する+'%F-%T'か、+"%F-%T"代わりに使用します。

日付パラメータに+または-を使用する理由はありますか?

ベストアンサー1

バックスラッシュは何もしません。

-文字は+シェル構文に特別な内容がないため、エスケープする必要はありません。

$ set -o xtrace
$ date +%F-%T
+ date +%F-%T
2019-08-15-11:51:46
$ date \+%F\-%T
+ date +%F-%T
2019-08-15-11:51:50

上記のトレース出力からわかるように、シェルで実行されるコマンドはバックスラッシュに関係なく同じです。また、トレース出力はシェルの「デバッグ出力」に過ぎず、出力されるすべてのコマンドです。一般的に言えばケースに合わない入力する

フォーマット仕様が導入されました+dateこれは-書式指定の一部である文字通りのダッシュです(出力でもダッシュとして表示されます)。

コマンドはdate \+%F\-%Tと同じですdate +%F-%T。また、一般的にに示されているように、引用された日付形式を表示することもできますdate +'%F-%T'。形式は単一の単語なので、ここでは違いはありませんが、date +'%F %T'シェルが空白の形式を2つの別々の引数に分割するのを防ぐために引用する必要がありますdate

する他の点は%キャラクターだ。 crontab仕様で使用している場合は、エスケープをしたい場合があります。たとえば、参照してください。cronタブタスクで「日付」を実行する方法は?

この%文字は、3.0より前のシェル構文fish(作業拡張用)では特別でしたが、単語の最初の文字としてのみ使用されていました(したがって、aではありません+)。同様に、zsh先行文字は、後ろの文字がグローバル演算子と見なされない%という点で特別ですが(引用符を使用せずに同様の操作を可能にするために)、ここでは同じには適用されません。?kill %?cmd?

おすすめ記事