touch コマンド

目的

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

構文

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

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

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

説明

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

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

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

フラグ

項目 説明
-a File 変数で指定されたファイルのアクセス時刻を変更します。-m が指定されていない限り、修正時刻は変更しません。
-c ファイルがまだ存在していない場合は、 ファイルを作成しません。 この条件に関する診断メッセージは書き出されません。
-d Date_Time これは、現在時刻ではなく指定の日時を使用します。 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 現在時刻の代わりに指定された時刻を使用します。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 ユーザーおよび Trusted AIX ユーザーへの注意: このコマンドは特権命令を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権についての詳細情報は、「セキュリティー 」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、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
    このコマンドは、 アクセス日付と修正日付を現在の年の 2 月 17 日 14:25 (午後 2:25) に設定します。
  5. 現在時刻の代わりに別のファイルのタイム・スタンプを使用するには、以下のように入力します。
    touch  -r file1 program.c
    このコマンドは、program.c ファイルに file1 ファイルと同じタイム・スタンプを設定します。
  6. 現在時刻ではなく、指定した時刻でファイルを更新するには、以下のように入力します。
    touch  -t 198503030303.55 program.c
    このコマンドは、program.c ファイルに 1985 年 3 月 3 日の 3:03:55 のタイム・スタンプを設定します。

ファイル

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