touch コマンド

目的

ファイルのアクセス時刻と変更時刻を更新します。

構文

touch [ -a ] [ -c ] [ -m ] [ -f ] [ -r RefFile ] [ Time | -t Time | -d date_time] { File ... | Directory ... }
注:前述の構文は、AIX®オペレーティング・システムでUNIX03モードが有効になっていない場合にのみ適用できる。

touch [-a c m f] [-r ref_file | -t time | -d date_time ] file... | Directory

注: 上記の構文は、 UNIX03 モードが有効になっている場合にのみ適用されます。 AIX オペレーティング・システムで UNIX03 モードを使用可能にするには、 XPG_SUS_ENV 環境変数の値を ONに設定する必要があります。

説明

touch コマンドは、Directory パラメーターで指定された各ディレクトリー内の、File パラメーターで指定された各ファイルのアクセス時刻と修正時刻を更新します。 Time 変数の値を指定しなければ、touch コマンドは現在の時刻を使用します。 存在しないファイルを指定すると、touch コマンドは、-c フラグを指定しない限り、ファイルを作成します。

touch コマンドからの戻りコードは、時刻を修正できなかった (存在しなかったファイル、および作成されなかったファイルを含む) ファイル数です。

-a フラグと -m フラグは、touch コマンドで指定されていないときでもアクティブです。

フラグ

項目 説明
-a File 変数で指定されたファイルのアクセス時刻を変更します。 -m が指定されていない限り、修正時刻は変更しません。
-c ファイルがまだ存在していない場合は、 ファイルを作成しません。 この条件に関する診断メッセージは書き出されません。
-d 日付と時刻 これは、現在時刻ではなく指定の日時を使用します。 date_time 変数は、10 進フォーマット、YYYY-MM-DDThh:mm:SS[.frac][tz]、または YYYY-MM-DDThh:mm:SS[,frac][tz] で指定します。 各項目の説明は以下のとおりです。
yyyy
これは、4 桁の年 (0000 から 9999 まで) を指定します。
MM
月を指定します (01 から 12)。
DD
日付を指定します (01 から 31)。
hh
時刻を指定します (00 から 23)。
mm
分を指定します (00 から 59)。
ss
秒を指定します (00 から 59)。
T
これは時刻指定子を表していて、シングル・スペースで置き換えることができます。
[.frac]。
これは、小数点以下の秒を指定します。 これはブランクでも、小数点 (.) とそれに続く 1 つ以上の 10 進数字でもかまいません。
[、frac]
これは、小数点以下の秒を指定します。 これはコンマ (,) とそれに続く 1 つ以上の 10 進数字です。
[tz]
[tz] パラメーターの値がブランクの場合は、結果の時刻に対してローカル・タイム・ゾーンが使用されます。 [tz] パラメーターの値が文字 Z の場合は、結果の時刻に対して協定世界時 (UTC) が使用されます。 [tz] パラメーターの値がブランクの場合は、結果の時刻を識別するために TimezoneInfo (TZ) 環境変数の値が使用されます。 結果の時刻が Epoch 時刻よりも前になる場合、[tz] パラメーターの値は実装環境固有となります。 また、結果の時刻が、File パラメーターで指定されているファイルのタイム・スタンプとして表すことができない場合、touch コマンドはエラー状況で終了します。
-f ファイルの読み取り許可と書き込み許可に関係なく、更新を強制的に実行しようとします。
-m File の修正時刻を更新します。 -a が指定されていない限り、アクセス時刻は変更しません。
-r RefFile 現在時刻の代わりに、RefFile 変数で指定されたファイルの対応する時刻を使用します。
Time 新しいタイム・スタンプの日付と時刻を MMDDhhmm[YY] のフォーマットで指定します。
MM
月を指定します (01 から 12)。
DD
日付を指定します (01 から 31)。
hh
時刻を指定します (00 から 23)。
mm
分を指定します (00 から 59)。
YY
年数の最後の 2 桁を指定します。 YY 変数を指定しないと、デフォルト値は現在の年になります (70 から 99、または 00 から 37)。

YY の桁の値が 70 から 99 までの場合は、年号の上 2 桁は 19 であると見なされます。

YY の桁の値が 00 から 37 までの場合は、年号の上 2 桁は 20 であると見なされます。

-t 時間 現在時刻の代わりに指定された時刻を使用します。 Time 変数は、10 進形式 [[CC]YY]MMDDhhmm[.SS] で指定されます。
CC
その年の最初の 2 桁 (19 から 21) を指定します。
YY
その年の最後の 2 桁 (00 から 99) を指定します。

YY の桁の値が 70 から 99 までの場合は、CC の値は 19 であると見なされます。

YY の桁の値が 00 から 37 の場合は、CC の値は 20 であると見なされます。

2038 年以降の年は、yyyy 形式で年を指定します。

MM
月を指定します (01 から 12)。
DD
日付を指定します (01 から 31)。
hh
時刻を指定します (00 から 23)。
mm
分を指定します (00 から 59)。
ss
秒を指定します (00 から 59)。
   
注:
  1. touch コマンドは、 utimenstat () サブルーチンを呼び出して、タッチされたファイルの変更時刻とアクセス時刻を変更します。 これにより、ファイルに対する書き込み許可があるにもかかわらず、実際にはファイルが存在しない場合は、フラグが使用された時点で touch コマンドが失敗することがあります。
  2. touch コマンドの使用時にエラー・メッセージを受け取った場合は、絶対パス名 /usr/bin/touch を指定しないでください。

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
0 コマンドは正常に実行されました。 要求されたすべての変更を行いました。
>0 エラーが発生しました。

セキュリティー

hm

RBACユーザーおよびTrustedAIXユーザーに注意:このコマンドは特権操作を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限と特権の詳細については、セキュリティの特権コマンドデータベースを参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

  1. ファイルのアクセス時刻と変更時刻を更新するには、次のように入力します。
    touch program.c
    これにより、以下の最終アクセス時刻と最終変更時刻が設定されます。program.cファイルを現在の日時に変更します。 もしprogram.cファイルが存在しない場合、 touch コマンドはその名前の空のファイルを作成します。
  2. 新規ファイルを作成しないようにするには、次のように入力します。
    touch  -c program.c
  3. 変更時刻のみを更新するには、次のように入力します。
    touch  -m *.o
    これにより、以下で終わるファイルの最終変更時刻 (アクセス時刻ではなく) が更新されます。.o現行ディレクトリー内の拡張子。 make コマンドの結果を変更するときには、touch コマンドをこの方法でしばしば使用します。
  4. アクセス時刻と変更時刻を明示的に設定するには、次のように入力します。
    touch  -c  -t 02171425 program.c
    これにより、アクセスおよび変更の日付が 14:25 (午後 2 時 25 分 ) 現在の年の 2 月 17 日 に設定されます。
  5. 現在時刻の代わりに別のファイルのタイム・スタンプを使用するには、次のように入力します。
    touch  -r file1 program.c
    これにより、program.cタイム・スタンプと同じタイム・スタンプをファイルします。file1
  6. 現在時刻以外の指定時刻を使用してファイルをタッチするには、次のように入力します。
    touch  -t 198503030303.55 program.c
    これにより、program.c3:03:55 a.mのタイム・スタンプをファイルします。 1985 年 3 月 3 日です

ファイル

項目 説明
/usr/bin/touch touch コマンドが入っています。