touchコマンドを使用すると、既存のファイルとディレクトリのタイムスタンプを更新したり、新しい空のファイルを作成したりできます。
このガイドでは、実際の例と最も一般的なコマンドオプションの詳細な説明を通じて、touchコマンドの使用方法を示します。
Linuxファイルのタイムスタンプ#
touchコマンドの使用方法に入る前に、Linuxでファイルのタイムスタンプを確認することから始めましょう。
Linuxのファイルには3つのタイムスタンプがあります:
- atime(アクセス時間)-cat、vim、grepなどのコマンドまたはアプリケーションによってファイルが最後にアクセス/開かれた時間。
- mtime(modify time)-ファイルのコンテンツが最後に変更された時刻。
- ctime(変更時刻)-ファイルの属性またはコンテンツが最後に変更された時刻。属性には、ファイルのアクセス許可、ファイルの所有権、またはファイルの場所が含まれます。
タイムスタンプを含むファイルステータスを表示するには、stat
を使用します コマンド。
stat file_name
新しいファイルを作成するには、親ディレクトリへの書き込み権限が必要です。そうしないと、許可拒否エラーが発生します。
オプションなしで使用した場合の最も単純な形式では、引数として指定されたファイル名が存在しない場合、touchは新しいファイルを作成します。
ファイルがすでに存在する場合、タッチするとファイルの最終アクセス時刻と変更時刻が現在の時刻に変更されます。
たとえば、ファイルfile1
存在しない場合、次のコマンドで作成されます。そうでない場合は、タイムスタンプが変更されます。
touch file1
複数のファイルを一度に作成または変更するには、ファイル名を引数として指定します。
touch file1 file2 file3
touchコマンドで新しいファイルを作成したくない場合は、-c
を使用します (--no-create
)オプション。
たとえば、ファイルfile1
次のコマンドが存在すると、ファイルのタイムスタンプが変更されます。それ以外の場合は、何も実行されません。
touch -c file1
アクセス時間または変更時間のみを変更する#
デフォルトでは、オプションが使用されていない場合、touchはファイルの最終アクセス時刻と変更時刻を現在の時刻に更新します。 -a
を使用する および-m
オプションの場合、これらのタイムスタンプの1つのみを変更できます。
アクセス時間のみを変更する#
-a
を使用します ファイルのアクセス時間のみを変更するオプション:
touch -a file1
変更時間のみを変更する#
-m
を使用します ファイルの変更時間を変更するオプション:
touch -m file1
変更時刻を変更すると、変更時刻も更新されます。
特定のタイムスタンプの設定#
touchコマンドを使用すると、現在の時刻以外の特定の時刻でファイルを更新または作成することもできます。
-d
を使用します (--date=
)日付文字列を指定し、現在の時刻の代わりにそれを使用するオプション。
たとえば、file1
の最終アクセス時間と変更時間の両方を変更するには 2018年6月1日11:02まで、次のコマンドを使用します:
touch -d '1 June 2018 11:02' file1
日付文字列は一重引用符で囲む必要があります。
touchコマンドに部分的な日時文字列を指定することもできます。日付のみを指定すると、年が現在の年に自動的に変更されます:
touch -d '12 June' file1
-t
を使用します タイムスタンプを指定し、現在の時刻の代わりにそれを使用するオプション。タイムスタンプ引数は次の形式である必要があります:
use [[CC]YY]MMDDhhmm[.ss]
たとえば、次のコマンドは、file1
の最終アクセス時刻と変更時刻を設定します。 今年の6月1日11:02まで。
touch -t 06011102 file1
別のファイルのタイムスタンプを使用する#
-r
(--reference=
)オプションを使用すると、参照ファイルを指定して、現在の時刻の代わりにそのタイムスタンプを使用できます。
たとえば、次のコマンドは、touchにfile1
の時刻を使用するように指示します。 file2
の場合 :
touch -r file1 file2
シンボリックリンクのタイムスタンプの変更#
デフォルトでは、シンボリックリンクでタッチコマンドを使用すると、参照ファイルのタイムスタンプが変更されます。
-h
を使用します (--no-dereference
)シンボリックリンクのタイムスタンプを変更します。
たとえば、シンボリックリンクsymlink1
のタイムスタンプを変更するには 使用するもの:
touch -h symlink1
結論#
これで、Linuxtouchコマンドの使用方法を十分に理解できたはずです。