Linuxのコマンドラインで作業をしていると、新しいファイルを作成したくなることがあります。 また、ファイルのタイムスタンプを変更する必要がある場合もあるでしょう。 そんなときに使えるユーティリティーがあります。
ここで使用するすべての例は、Ubuntu 16.04 マシンでテストされていることに注意してください。
Linux Touch コマンド
touch コマンドは主にファイルのタイムスタンプを変更するために使用されますが、引数として渡されたファイルが存在しない場合は、ファイルを作成します。
コマンドの一般的な構文は次のとおりです:
touch ... FILE...
また、manページでのこのコマンドの説明は次のとおりです。
DESCRIPTION
Update the access and modification times of each FILE to the current
time. A FILE argument that does not exist is created empty, unless -c or -h
is supplied. A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.
以下の Q&A タイプの例を見ると、このツールがどのように動作するかがよくわかるでしょう。
touchコマンドを使用してアクセス/修正時間を変更する方法
これはシンプルで、かなりわかりやすい方法です。 既存のファイルを例にとってみましょう。
ここでは、touchコマンドを使用して、ファイルのアクセス時間と修正時間を変更する方法を説明します:
touch apl.c
次のスクリーンショットで、これらのタイムスタンプの変更を確認します。
アクセス時間または修正時間のみを変更する方法
デフォルトでは、touchコマンドは入力ファイルのアクセス時間と修正時間の両方を変更します。 しかし、必要に応じて、この動作をこれらのタイムスタンプのいずれか1つに限定することができます。
アクセス時間のみを変更したい場合は、-a コマンド ライン オプションを使用します。
touch -a
同様に、変更時間のみを変更したい場合は、-m コマンド ライン オプションを使用します。
touch -m
touchに既存のファイルのアクセス/修正時刻を使わせる方法
必要に応じて、touchコマンドに参照ファイルからアクセス/修正時刻を強制的にコピーさせることもできます。 たとえば、「apl.c」というファイルのタイムスタンプを変更したいとします。 このファイルの現在のタイムスタンプは次のとおりです:
そして、touchが参照として使用するファイルは次のとおりです:
さて、touchが’apl.c’に’apl’のタイムスタンプを使用するには、次のようにします。c’ に ‘pl’ のタイムスタンプを使用するには、次のように -r コマンド ライン オプションを使用する必要があります:
touch apl.c -r apl
上記のスクリーンショットでは、’apl.
touchで新しいファイルを作成する方法
新しいファイルを作成するのもとても簡単です。 実際、touchコマンドの引数として渡したファイル名が存在しない場合は、自動的に作成されます。
touch newfile
touch に新しいファイルを作成させない方法
万が一、touch コマンドが新しいファイルを作成してはいけないという厳しい要求がある場合は、-c オプションを使用することができます。
touch -c
次のスクリーンショットでは、「newfile12」が存在せず、-c コマンド ライン オプションを使用したため、touch コマンドはファイルを作成しませんでした。
シンボリック リンクの場合の touch の動作
デフォルトでは、シンボリック リンクのファイル名を touch コマンドに渡した場合、アクセス タイムスタンプと修正タイムスタンプの変更は、元のファイル (シンボリック リンクが参照するファイル) に対するものになります。 しかし、このツールには、この動作を無効にするオプション(-h)があります。
-h オプションについて、man ページでは次のように説明されています。
-h, --no-dereference
affect each symbolic link instead of any referenced file (useful
only on systems that can change the timestamps of a symlink)
したがって、シンボリック リンクの修正およびアクセス タイムスタンプを (オリジナル ファイルではなく) 変更したい場合は、次のようにして touch コマンドを使用します。
touch -h
結論
ご承知のとおり、touch は理解して使用するのが難しいコマンドではありません。 このチュートリアルで説明した例やオプションは、このツールを使い始めるのに十分なものです。 初心者の方は新しいファイルを作成するために使うことが多いと思いますが、経験豊富な方は他の目的にも使うことができます。