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

★★★ イベント情報 ★★★
◇【参加登録受付中】Kong Summit, Japan 2022◇
今年は12月15日に開催決定!最新情報とデモとともにKongと事例/ユースケースのご紹介などAPIエコノミーやマイクロサービスに関心のある開発者の方にとっては必見です。ぜひお申し込みください!イベントの詳細・お申込はこちら

★★★ Live配信告知 ★★★
◇11月29日開催 19:00~ 世界一わかりみの深いクラウドネイティブon Azure◇
テーマは「Web App for ContainersとKeycloakで最速OpenID Connect」です!

◇11月30日開催 17:00〜 知ってると ちょっと便利なコマンド集◇
知っていると少し効率の上がるようなコマンドをいくつかご紹介します!

今号では、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
    




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



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


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる