概要
ファイルのアクセス時刻や更新時刻を変更します。対象が存在しなければ空ファイルを作成できるため、初期化、生成物の用意、ビルドや自動化の補助でもよく使われます。
基本構文
touch [オプション]... ファイル...
touch -r 参照ファイル 対象
touch -d '日時文字列' ファイル
touch -t [[CC]YY]MMDDhhmm[.ss] ファイル詳細解説
touchは、ファイルのアクセス時刻と更新時刻を変更するためのコマンドです。最もよく使われるのは「存在しないなら空ファイルを作る」「既存ファイルの更新時刻だけを現在時刻へ進める」という二つの使い方です。シェルスクリプト、ビルド手順、検証手順、バックアップの確認など、幅広い場面で登場します。
Linuxでは多くの道具が更新時刻を手がかりに処理順や差分を判断します。そのためtouchは単なる空ファイル作成ではなく、時刻情報を明示的に操作する道具として理解すると実務で役立ちます。たとえば監視用の存在確認ファイルを置く、デプロイ済みマーカーを作る、比較用に基準時刻をそろえる、といった用途があります。
一方で、時刻を意図的に書き換えると、調査時に「いつ変更されたか」の手がかりを弱めることがあります。ログや設定ファイル、証跡として重要なファイルに対して安易に使うと、後から判断材料を失う原因になります。何のために時刻を変えるのかを明確にしたうえで使うことが重要です。
このコマンドを使う場面
存在確認用の空ファイルを作りたい時、生成物の作成日時を更新したい時、比較用に複数ファイルの時刻をそろえたい時、ビルドや自動化の動作確認で時刻依存の処理を再現したい時に使います。
まず安全に試す方法
まずは作業用ディレクトリで空ファイルを作り、時刻だけが変わることを確認します。
1. mkdir -p /tmp/touch-demo && cd /tmp/touch-demo
2. touch sample.txt
3. ls -l sample.txt
4. sleep 1
5. touch sample.txt
6. ls -l sample.txt
次に参照ファイルの時刻を複製します。
1. touch ref.txt
2. touch -r ref.txt sample.txt
3. stat sample.txt
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
touchで空ファイルを作り、ls -lでサイズが0であることを確認します。
-
touch -rで別ファイルと同じ時刻にそろえ、statで比較します。
資格試験との関連
-
LinuC レベル1
範囲: 1.02.2 基本的なファイル管理の実行根拠: officialtouchは、LinuCレベル1の基本的なファイル管理を理解するうえで重要なコマンドです。
-
LPIC-1
範囲: 103.3 基本的なファイル管理の実行根拠: officialtouchは、LPIC-1のファイルとディレクトリの基本操作に関わる代表的なコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorialtouchは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
touch demo.txt ls -l demo.txt-rw-r--r-- 1 user user 0 4月 9 12:00 demo.txt -
sleep 1 touch demo.txt ls -l demo.txt-rw-r--r-- 1 user user 0 4月 9 12:00 demo.txt
戻り値コード
- 0 正常終了。時刻変更または空ファイル作成に成功しました。
- >0 権限不足、対象不正、日時指定の解釈失敗などで処理できませんでした。
使用例
touch sample.txttouch -c existing.txttouch -r ref.txt target.txttouch -d '2026-04-09 12:00:00' report.txt
よくあるエラー
-
設定ファイルを作るつもりが空ファイルだけできてしまった 原因: 存在しない対象へtouchを実行したため、空ファイルが作成されました。対処: 内容を作る処理と存在確認を分け、必要ならtouch -cで新規作成を防ぎます。
-
時刻をそろえたつもりなのに期待通りにならない 原因: 参照元の選択や日時文字列の解釈が意図とずれています。対処: touch -rで参照元を明示し、必要に応じてstatで変更後の値を確認します。
導入・互換性情報
POSIXではtouchが標準化されており、時刻変更と空ファイル作成の基本動作は広く共通しています。GNU実装では-dや-hなどの拡張があり、日時指定やシンボリックリンクへの扱いが豊富です。
実装差として注意したいのは、日時文字列の解釈とシンボリックリンクへの時刻変更です。GNU系では人が読みやすい日時文字列を扱いやすい一方、最小構成環境では利用できる指定方法が限られることがあります。
注意点 / セキュリティリスク
危険度は低めですが、証跡として使われる時刻情報を人為的に変えるため、運用手順と無関係に使うべきではありません。特に障害調査中や差分確認中に不用意に実行すると、本来の更新順序が分かりにくくなります。
また、存在しない対象に対して何も考えずにtouchすると、空ファイルが新規作成されます。設定ファイルや入力データを期待している処理系では、「中身があるはずのファイル」が空のまま存在する状態を作ってしまい、別の不具合につながることがあります。
FAQ
-
Q. touchは必ず空ファイルを作りますか。 A. いいえ。対象が既に存在する場合は中身を変えず、通常は時刻だけを更新します。
-
Q. 中身を書かずに作成日時だけ整えたい時にも使えますか。 A. はい。存在しないファイルの作成や既存ファイルの時刻調整に向いています。
参照リンク
- カテゴリー: File And Directory
- レベル: Beginner
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎