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

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。SBOMを全く知らない人から、開発との統合までを紹介するので様々なレベルの方に学びがあるライブとなる予定です!
https://tech-lab.connpass.com/event/321422/

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!
https://tech-lab.connpass.com/event/319077/

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!
https://tech-lab.connpass.com/event/319532/

今号では、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 貝野 友香 73 Articles
OSSよろず相談室でサポートをやっています。時々ライブ配信や勉強会に出ていることもあります。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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


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



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

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる