touch -cオプションの使い方を完全ガイド!初心者でもわかるファイルの存在確認
生徒
「Linuxでtouchコマンドを使ってるんですが、ファイルが勝手に作られちゃうのが困るんです…」
先生
「それなら、-cオプションを使ってみるといいですよ。ファイルが存在しないときに新しく作られないようにできます。」
生徒
「えっ、それってファイルがあるかどうか確認したいときにも使えるんですか?」
先生
「そうなんです。確認や更新のときに便利ですよ。使い方を丁寧に解説しましょう!」
1. touchコマンドとは?
touchコマンドは、Linux(リナックス)で空のファイルを作成したり、すでにあるファイルのタイムスタンプ(更新日時)を変更したりするコマンドです。よく「とりあえず空のファイルがほしい」というときや、ファイルがアクセスされたかどうかを調べるときにも使われます。
たとえば、以下のように使います:
touch sample.txt
このコマンドを実行すると、sample.txtというファイルがなければ新しく作られます。すでにある場合は、ファイルの「更新日時」だけが今の時間に変更されます。
2. -cオプションの意味とは?
-cオプション(別名--no-create)は、ファイルが存在しない場合は新しく作成しないという意味です。つまり「ファイルがなければ放置、あれば更新だけする」という動きになります。
このオプションの使い道としては:
- 特定のファイルが存在するかだけを確認したいとき
- 余計なファイルを作りたくないとき
- スクリプトの中でエラーを防ぎたいとき
たとえば、以下のように使います。
touch -c sample.txt
この場合、sample.txtが存在すれば「更新日時」が変わります。存在しなければ、何も起きません。
3. 実際の動作を確認してみよう
それでは、コマンドの動作を具体的に見てみましょう。
(1)ファイルが存在しない場合
まず、ファイルが存在しない状態でtouch -cを実行してみましょう。
rm -f test1.txt
touch -c test1.txt
ls test1.txt
ls: cannot access 'test1.txt': No such file or directory
ご覧のとおり、ファイルは新しく作成されていません。
(2)ファイルが存在する場合
次に、ファイルがすでにある状態で実行してみましょう。
touch test2.txt
ls -l test2.txt
-rw-r--r-- 1 user user 0 9月 16 14:00 test2.txt
sleep 3
touch -c test2.txt
ls -l test2.txt
-rw-r--r-- 1 user user 0 9月 16 14:00 test2.txt
このように、ファイルが存在する場合は、ファイルの「更新日時」が変更されます。
4. -cオプションと通常のtouchの違い
touchだけで使った場合とtouch -cで使った場合の違いを比べてみましょう。
通常のtouch(ファイルがなければ作成)
rm -f hello.txt
touch hello.txt
ls hello.txt
hello.txt
touch -c(ファイルがなければ無視)
rm -f hello2.txt
touch -c hello2.txt
ls hello2.txt
ls: cannot access 'hello2.txt': No such file or directory
このように、-cを付けるだけで、ファイルを作らずに済むようになります。
5. 他の便利なオプションとの組み合わせ例
touch -cは他のオプションと一緒に使うこともできます。たとえば、タイムスタンプを指定する-tオプションと組み合わせることで、日時を変更することもできます。
以下は、日時を「2025年1月1日 00:00:00」に設定する例です。
touch -c -t 202501010000.00 test.txt
このように指定すれば、ファイルが存在していればその日時に変更され、存在しなければ何もしません。
6. スクリプトでの活用例
シェルスクリプトの中でtouch -cを使うと、ファイルが存在する場合だけ処理したいときに便利です。たとえば、ログファイルの確認や、設定ファイルの更新などに使えます。
#!/bin/bash
file="/etc/sample.conf"
touch -c "$file"
このスクリプトでは、/etc/sample.confが存在する場合のみ、タイムスタンプが更新されます。存在しない場合は、何も起きません。