こんにちは、たねやつです。
このシリーズでは、Linuxの基本的なコマンドを一つずつ取り上げ、その使い方を具体的な例とともに解説していきます。今回は、空のファイルを作成したり、ファイルのタイムスタンプを更新したりするtouchコマンドです。
touchコマンドとは?
touchコマンドの主な役割は2つあります。
- 指定した名前のファイルが存在しない場合、中身が空の新しいファイルを作成する。
- 指定した名前のファイルが既に存在する場合、そのファイルのタイムスタンプ(アクセス時刻と変更時刻)を現在の日時に更新する。
プログラムの動作確認で一時的なファイルが必要な場合や、ファイルの更新日時を意図的に変更したい場合などに使われます。
主なオプション
| オプション | 説明 |
|---|---|
-a |
アクセス時刻のみを更新します。 |
-m |
変更時刻のみを更新します。 |
-c |
--no-createの略。ファイルが存在しない場合に、新しくファイルを作成しません。 |
-d [日付] |
--date=[日付]の略。現在時刻の代わりに、指定した日時のタイムスタンプを設定します。 |
-r [参照ファイル] |
--reference=[参照ファイル]の略。指定した参照ファイルと同じタイムスタンプを設定します。 |
具体的な使用例
状況1: 新しいスクリプト用の空ファイルを作成したい
my_script.shという名前で、新しいシェルスクリプトのファイルをこれから作成する場面です。
# 空のファイルを作成 touch my_script.sh # ls -lで確認 ls -l my_script.sh # -rw-r--r-- 1 pi pi 0 Jul 10 11:00 my_script.sh
サイズが0の空ファイルが作成されました。この後、エディタで開いて中身を記述していきます。
状況2: ビルドプロセスを意図的にトリガーしたい
Makefileを使ったビルドシステムで、ソースコードは変更していないけれど、特定のファイル(main.c)を再コンパイルさせたい場面です。ビルドツールは通常、タイムスタンプを見て更新が必要か判断するため、タイムスタンプを更新することで再ビルドを促せます。
# main.cのタイムスタンプを現在時刻に更新 touch main.c
これでmakeコマンドを実行すると、main.cが更新されたと判断され、関連するビルドプロセスが実行されます。
状況3: 別のファイルとタイムスタンプを揃えたい
file_A.txtのタイムスタンプを、既にあるfile_B.txtと全く同じにしたい場面です。
# file_B.txtを参照してfile_A.txtのタイムスタンプを更新 touch -r file_B.txt file_A.txt
ls -lで確認すると、2つのファイルのタイムスタンプが同一になっていることがわかります。
最後に
今回はtouchコマンドについて解説しました。空のファイルを作るという単純な用途だけでなく、タイムスタンプを更新するという重要な役割も持っています。特に開発シーンでは、ビルドの制御などで役立つ便利なコマンドです。