Touchコマンドは、空のファイルを作成するために使用され、UnixおよびLinuxシステム上の既存のファイルのタイムスタンプも変更します。ここでタイムスタンプを変更するということは、ファイルとディレクトリのアクセス時間と変更時間を更新することを意味します。
タッチコマンドで使用される構文とオプションを見てみましょう
構文 :#touch {options} {file}
タッチコマンドで使用されるオプション
この記事では、Linuxで役立つ9つのタッチコマンドの例を紹介します。
例:1touchを使用して空のファイルを作成する
Linuxシステムでtouchコマンドを使用して空のファイルを作成するには、touchに続けてファイル名を入力します。例を以下に示します。
[[email protected] ~]# touch devops.txt [[email protected] ~]# ls -l devops.txt -rw-r--r--. 1 root root 0 Mar 29 22:39 devops.txt [[email protected] ~]#
例:2touchを使用して空のファイルをまとめて作成する
テストのために空のファイルをたくさん作成しなければならないシナリオがいくつかある可能性があります。これは、タッチコマンドを使用して簡単に実現できます。
[[email protected] ~]# touch sysadm-{1..20}.txt
上記の例では、sysadm-1.txtという名前の20個の空のファイルをsysadm-20.txtに作成しました。要件に基づいて、名前と番号を変更できます。
例:3ファイルとディレクトリのアクセス時間の変更/更新
「devops.txt」というファイルのアクセス時間を変更するとします。 「、これを行うには、「 -a」を使用します ‘タッチコマンドのオプションの後にファイル名が続きます。例を以下に示します
[[email protected] ~]# touch -a devops.txt [[email protected] ~]#
次に、「stat」コマンドを使用して、ファイルのアクセス時間が更新されているかどうかを確認します
[[email protected] ~]# stat devops.txt File: ‘devops.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 67324178 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2018-03-29 23:03:10.902000000 -0400 Modify: 2018-03-29 22:39:29.365000000 -0400 Change: 2018-03-29 23:03:10.902000000 -0400 Birth: - [[email protected] ~]#
ディレクトリのアクセス時間を変更する 、
/ mntの下に「nfsshare」フォルダがあると仮定します。次のコマンドを使用して、このフォルダのアクセス時間を変更しましょう。
[[email protected] ~]# touch -a /mnt/nfsshare/ [[email protected] ~]#
[[email protected] ~]# stat /mnt/nfsshare/ File: ‘/mnt/nfsshare/’ Size: 6 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 2258 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:mnt_t:s0 Access: 2018-03-29 23:34:38.095000000 -0400 Modify: 2018-03-03 10:42:45.194000000 -0500 Change: 2018-03-29 23:34:38.095000000 -0400 Birth: - [[email protected] ~]#
例:4新しいファイルを作成せずにアクセス時間を変更する
ファイルが存在する場合はそのアクセス時間を変更して、ファイルの作成を避けたい場合があります。 「-c」を使用する ‘touchコマンドのオプション。ファイルが存在する場合はアクセス時間を変更でき、存在しない場合はファイルを作成しません。
[[email protected] ~]# touch -c sysadm-20.txt [[email protected] ~]# touch -c winadm-20.txt [[email protected] ~]# ls -l winadm-20.txt ls: cannot access winadm-20.txt: No such file or directory [[email protected] ~]#
例:5ファイルとディレクトリの変更時刻を変更する
「-m」を使用する ‘touchコマンドのオプションで、ファイルとディレクトリの変更時間を変更できます。
「devops.txt」というファイルの変更時刻を変更しましょう
[[email protected] ~]# touch -m devops.txt [[email protected] ~]#
次に、statコマンドを使用して、変更時刻が変更されたかどうかを確認します。
[[email protected] ~]# stat devops.txt File: ‘devops.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 67324178 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2018-03-29 23:03:10.902000000 -0400 Modify: 2018-03-29 23:59:49.106000000 -0400 Change: 2018-03-29 23:59:49.106000000 -0400 Birth: - [[email protected] ~]#
同様に、ディレクトリの変更時間を変更できます。
[[email protected] ~]# touch -m /mnt/nfsshare/ [[email protected] ~]#
例:6アクセスと変更の時間を一度に変更する
「-am」を使用します アクセスと変更を一緒にまたは一度に変更するためのtouchコマンドの」オプション。例を以下に示します。
[[email protected] ~]# touch -am devops.txt [[email protected] ~]#
統計を使用してアクセス時間と変更時間を相互検証します
[[email protected] ~]# stat devops.txt File: ‘devops.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 67324178 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2018-03-30 00:06:20.145000000 -0400 Modify: 2018-03-30 00:06:20.145000000 -0400 Change: 2018-03-30 00:06:20.145000000 -0400 Birth: - [[email protected] ~]#
例:7アクセスと変更の時刻を特定の日時に設定します
touchコマンドを使用してファイルとディレクトリのアクセスと変更の時刻を変更する場合は常に、現在の時刻をそのファイルまたはディレクトリのアクセスと変更の時刻として設定します。
ファイルのアクセスおよび変更時刻として特定の日時を設定するとします。これは、タッチコマンドの「-c」および「-t」オプションを使用して実現できます。
日付と時刻は、{CCYY} MMDDhhmm.ss
の形式で指定できます。場所:
- CC –年の最初の2桁
- YY –年の2桁目
- MM –月(01〜12)
- DD –月の日(01-31)
- hh –その日の時間(00-23)
- mm –時間の分(00-59)
devops.txtファイルのアクセスと変更の時刻を将来の日時(2025年、10か月、19日、18時間、20分)に設定しましょう
[[email protected] ~]# touch -c -t 202510191820 devops.txt
statコマンドを使用して、更新アクセスと変更時間を表示します。
日付文字列に基づいてアクセスと変更の時間を設定し、touchコマンドで「-d」オプションを使用してから、日付文字列の後にファイル名を指定します。例を以下に示します。
[[email protected] ~]# touch -c -d "2010-02-07 20:15:12.000000000 +0530" sysadm-29.txt [[email protected] ~]#
statコマンドを使用してステータスを確認します
[[email protected] ~]# stat sysadm-20.txt File: ‘sysadm-20.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 67324189 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2010-02-07 20:15:12.000000000 +0530 Modify: 2010-02-07 20:15:12.000000000 +0530 Change: 2018-03-30 10:23:31.584000000 +0530 Birth: - [[email protected] ~]#
注: 上記のコマンドで「-c」を指定しない場合、touchコマンドは、システムに存在しない場合に備えて新しいファイルを作成し、コマンドに記載されているタイムスタンプを設定します。
例:8参照ファイル(-r)を使用してタイムスタンプをファイルに設定します
touchコマンドでは、参照ファイルを使用してファイルまたはディレクトリのタイムスタンプを設定できます。 「devops.txt」ファイルに「sysadm-20.txt」ファイルと同じタイムスタンプを設定したいとします。これは、タッチで「-r」オプションを使用して簡単に実現できます。
構文: #touch -r {reference-file} actual-file
[[email protected] ~]# touch -r sysadm-20.txt devops.txt [[email protected] ~]#
例:9シンボリックリンクファイルのアクセスと変更時刻の変更
デフォルトでは、touchコマンドを使用してシンボリックリンクファイルのタイムスタンプを変更しようとすると、元のファイルのタイムスタンプのみが変更されます。シンボリックリンクファイルのタイムスタンプを変更する場合は、「-h」を使用してこれを実現できます。タッチコマンドのオプション
構文: #touch-h{シンボリックリンクファイル}
[[email protected] opt]# ls -l /root/linuxgeeks.txt lrwxrwxrwx. 1 root root 15 Mar 30 10:56 /root/linuxgeeks.txt -> linuxadmins.txt [[email protected] ~]# touch -t 203010191820 -h linuxgeeks.txt [[email protected] ~]# ls -l linuxgeeks.txt lrwxrwxrwx. 1 root root 15 Oct 19 2030 linuxgeeks.txt -> linuxadmins.txt [[email protected] ~]#
このチュートリアルは以上です。これらの例がタッチコマンドの理解に役立つことを願っています。貴重なフィードバックやコメントをぜひ共有してください。
続きを読む: Linuxでの17の便利なrsync(リモート同期)コマンドの例