BSDでタッチコマンドの時間形式を変更する

BSDでタッチコマンドの時間形式を変更する

Cシェルでtouchコマンドを使用して時間を変更するときに時間形式を変更する方法を知りたいです。

例えば

touch -a -t 051512002015 file.txt

これにより、接続時間が2015年5月15日12時に変更されます。

やりたいことは(今1年生)

touch -a -t 201505151200 file.txt

これがLinuxでタッチが機能する方法です。私はWindowsでUnxUtilsを使用していますが、これはcシェルタッチを使用するとほぼ確実です。順序が一貫していることを願っています。 c-shell touchコマンドを変更できますか?

ベストアンサー1

これはシェルとは何の関係もなく、touch外部プログラムです。

歴史的に、日付パラメータには2つの構文がありましたtouch

touch -t CCYYMMDDhhmm.SS    # CC or CCYY may be omitted; .SS may be omitted
touch MMDDhhmmYY            # YY may be omitted

このコマンドはUnix バージョン 7日付パラメーターはありません。 BSDバージョンでは、-tそのオプションはどこかにあります(すべての日付コンポーネントが降順でソートされています)。4.4BSD。システムV(例:Sun OS 4.1.3) 直接日付形式で、年で終わります。いつシングルUnix v2(POSIX:1992ベース), System V 形式は廃止と見なされ、シングル Unix v3 (POSIX:2001)

スクリプトに標準(BSD)構文を使用することをお勧めします。 BSD構文を必要とするレガシーシステムでは、互換性のあるtouch構文を配列するいくつかの可能なアプローチがあります。

  • スクリプトが以前のシステムで実行されていることを検出したら、パラメータを混在させるラッパー関数を作成します。
  • PATH前のディレクトリの前に基準を満たすディレクトリを配置するように配置します。
  • (サポートする必要がある正確なレガシーバリアントとバージョンを公開すると、より具体的な推奨事項が得られます。)

おすすめ記事