知っておくとちょっと便利!ファイルの作成や情報の変更を行う touch コマンド

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

今号では、touch コマンドの使い方やオプションについてご紹介します!

touch コマンドとは

touch コマンドは、ファイルのタイムスタンプを変更するコマンドです。
ファイルのタイムスタンプとは、ファイルへのアクセス日時や更新日時の事を言います。

存在しないファイル名を指定した場合は、空のファイル (テキストファイル) を作成します。

基本の書式

“touch <ファイル名>” コマンドを実行すると、ファイルのタイムスタンプを現在時刻へと更新します。
ここで言うタイムスタンプとは、ファイルのアクセス時刻と更新時刻の両方になります。

例として、text1 というファイルのタイムスタンプを変更してみます。
まずは text1 のタイムスタンプを変更する前の情報を、あらかじめ確認しておきます。

$ stat text1
  File: `text1'
  Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
Device: fd00h/64768d    Inode: 18171963    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-09-13 14:01:15.245551301 +0900
Modify: 2022-09-13 14:01:15.245551301 +0900
Change: 2022-09-13 14:01:15.245551301 +0900
 Birth: -

次に touch コマンドで text1 のタイムスタンプを変更し、再度タイムスタンプを確認します。

$ touch text1
$ stat text1
  File: `text1'
  Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
Device: fd00h/64768d    Inode: 18171962    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-09-13 14:26:49.305260877 +0900
Modify: 2022-09-13 14:26:49.305260877 +0900
Change: 2022-09-13 14:26:49.305260877 +0900

タイムスタンプ (Access、Modify、Change) が更新されている事が確認できました。

touch コマンドのオプション

次に、touch コマンドで使用可能なオプション (一部抜粋) をご紹介します。
オプションには多くの種類がありますが、よく使用されると考えられるものを抜粋してご紹介します。

  • 最終アクセス日時 (atime) を変更する
    -a オプションを指定すると、最終アクセス日時 (atime) を変更します。
    また、この時同時に ctime (ファイルの内容、もしくは属性を変更した時間) も変更されます。

    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 14:26:49.305260877 +0900
    Modify: 2022-09-13 14:26:49.305260877 +0900
    Change: 2022-09-13 14:26:49.305260877 +0900
    $ touch -a text1
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 14:27:33.257137083 +0900
    Modify: 2022-09-13 14:26:49.305260877 +0900
    Change: 2022-09-13 14:27:33.257137083 +0900
    
  • 編集日時 (mtime) を変更する
    -m オプションを指定すると、ファイルの編集日時 (mtime) を変更します。
    また、この時同時に ctime (ファイルの内容、もしくは属性を変更した時間) も変更されます。

    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 09:34:27.863856572 +0900
    Modify: 2022-09-13 09:34:27.863856572 +0900
    Change: 2022-09-13 09:34:27.863856572 +0900
    $ touch -m text1
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 09:34:27.863856572 +0900
    Modify: 2022-09-13 09:35:55.954219462 +0900
    Change: 2022-09-13 09:35:55.954219462 +0900
    
  • 存在しないファイル名を指定した場合に、空のファイルを作成しない
    -c オプションを指定すると、指定したファイルが存在しない場合に空のファイルの作成しません。
    誤ってファイルを作成したくない場合などにこのオプションを指定すると便利です。

    $ touch newfile
    $ ls newfile
    # -c オプションがない場合はファイルが作成される
    newfile
    $ touch -c newfile2
    $ ls newfile2
    -c オプションがある場合はファイルが作成されない
    ls: newfile2 にアクセスできません: そのようなファイルやディレクトリはありません
    
  • タイムスタンプの日時を指定する
    -d オプションを指定すると、タイムスタンプの日時を指定できます。
    なお、この時 ctime (ファイルの内容、もしくは属性を変更した時間) は現在日時に変更されるため、指定の日時は反映されません。

    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-13 09:36:28.051004881 +0900
    Modify: 2022-09-13 09:36:28.051004881 +0900
    Change: 2022-09-13 09:36:28.051004881 +0900
    $ touch -d "2022-9-1 9:00" text1
    $ stat text1
      File: `text1'
      Size: 0               Blocks: 0          IO Block: 4096   通常の空ファイル
    Device: fd00h/64768d    Inode: 18171962    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2022-09-01 09:00:00.000000000 +0900
    Modify: 2022-09-01 09:00:00.000000000 +0900
    Change: 2022-09-13 09:37:01.300177846 +0900
    
アバター画像
About 貝野 友香 69 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる