Linuxコマンド「touch」
touchコマンドとは
touchコマンドはタイプスタンプを更新するためのコマンドである。更新するファイルが見つからない場合は新規に作成するため、空ファイルを作成するときにも使われる。
基本的な構文
touchコマンドの構文は以下の通りである。
touch [オプション] タイムスタンプを更新するファイル [タイムスタンプを更新するファイル2 ...]
オプションを何も指定しなかった場合、ファイルの最終更新日時、最終変更日時、最終アクセス日時が現在時刻に更新される。
stat oldfile
File: oldfile
Size: 400 Blocks: 8 IO Block: 4096 regular file
Device: 8,48 Inode: 45908 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2025-02-24 10:17:05.058183875 +0900
Modify: 2024-08-23 23:20:46.000000000 +0900 # 古いファイルをコピーしたためBirthよりModifyの方が過去になっている
Change: 2025-02-24 10:38:45.024806410 +0900
Birth: 2025-02-24 10:38:27.015828614 +0900
touch oldfile
stat oldfile
File: oldfile
Size: 400 Blocks: 8 IO Block: 4096 regular file
Device: 8,48 Inode: 45908 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2025-02-24 10:40:33.214707127 +0900
Modify: 2025-02-24 10:40:33.214707127 +0900
Change: 2025-02-24 10:40:33.214707127 +0900
Birth: 2025-02-24 10:38:27.015828614 +0900
オプションでどのタイムスタンプを変えるか、いつに変えるかを指定できる。
タイムスタンプの指定
変更するタイプスタンプ | オプション | 備考 |
---|---|---|
アクセス日時 | -a | 仕様上、変更日時も変わる。 |
更新日時 | -m | 仕様上、変更日時も変わる。 |
ワード指定 | --time=WORD | access , atime , use : アクセス日時mtime : 更新日時 |
日時の指定
オプション | 意味 |
---|---|
-d time --date=time | 指定の日時にタイムスタンプを更新する。 「2025-02-24 10:56:37」のようなものだけでなく「yesterday」や「1 year ago」のような相対的な指定も受け付ける。 詳細はData input formats参照。 |
-t [[cc]yy]mmddhhmm[.ss] | 指定の日時にタイムスタンプを更新する。 |
-r file --reference=file | 指定したファイルのタイムスタンプで更新する。 -dの相対的な指定と併用して、指定したファイルの1日前のような指定ができる。 |
その他のオプション
オプション | 意味 |
---|---|
-c --no-create | ファイルが見つからないときに作成をせず、警告も出さない。 |
-h --no-dereference | シンボリックリンクが指定された場合に、参照するターゲットではなくシンボリックリンク自体のタイムスタンプを更新する。 |
参考:空ファイルの作成
空ファイルを作成する方法としても使われるtouchコマンドだが、ほかにも空ファイルを作る方法はいくつかある。
方法 | コマンド例 | 備考 |
---|---|---|
リダイレクト(追記) | >> ファイル名 | ・ファイルがなければ空に、ファイルがあればそのままになる |
リダイレクト(上書) | > ファイル名 | ・ファイルがあろうとなかろうと、空ファイルになる。 |
echo+リダイレクト | echo -n > ファイル名 echo -n >> ファイル名 | ・上のリダイレクトのみだとエラーになる環境向け ・-nを付けることで改行が出力されないようにしている ・2つの違いはリダイレクトと同じ |
truncate | truncate -s 0 ファイル名 | ・ファイルがあろうとなかろうと、空ファイルになる。 ・-cオプションをつけると、ファイルがあるときは空に、ファイルがないときは何もしないという動作になる。 ・truncateはファイルのサイズを指定の長さに伸縮するコマンドで、デフォルトではファイルが無いときに作成する挙動である。 |