touch
ファイルが存在しない場合、新しい空のファイルを作成します。これは、それが実行するように設計されているためです。ユーティリティには、そのケースを具体的に処理するコードが含まれている必要があります。このユーティリティはUnix V7に登場しました。そのマニュアルはこう説明しています:
touch —ファイルの最終更新日を更新
touch
各ファイルの変更された日付を設定しようとします。これは、ファイルから文字を読み取り、書き戻すことによって行われます。**ファイル*が存在しない場合、-c
オプションが指定されない限り、作成が試行されます。
(touch
ファイルが空だったらどうしたのかわかりません。基礎となるシステムコールは後で来ました。)
なぜtouch
ファイルが存在するように設計されたのかはわかりませんが、それはが原因だと思われmake
ます。ファイルの変更時刻を現在の時刻に設定するのはなぜですか?変更時刻を特定の時刻に設定すると便利な場合もありますが、その機能は後になって、元のtouch
は修正時刻を現在の時刻にしか設定できませんでした。その理由はmake
、ファイルに依存するルールを再実行するためです。
つまり、あなたがファイルを持っていると仮定しfoo
て、生成するコマンド宣言するメイクファイルbar
からをfoo
。を入力するmake bar
と、コマンドが実行され、bar
作成されます。場合は、bar
存在し、より新しいfoo
、make bar
ので、何もしないmake
ことを前提としてbar
既に生成されています。ただし、bar
がより古い場合foo
、makeはbar
が最新ではなく、再生成する必要があると判断します。
しかし、生成するルールbar
が変更された場合はどうなりますか?次に、2つのオプションがあります。
rm bar; make bar
touch foo; make bar
foo
生成するには存在する必要がありますbar
、ない場合、通常、コマンドは機能しません。
「タッチ」という用語もmake
ユーティリティに存在しmake -t bar
ていました。コマンドを実行するふりをするだけです。つまり、bar
実際にコマンドを実行せずに、変更時刻を現在の時刻に設定しbar
ます。への変更foo
は影響しませんbar
)。touch
ユーティリティは、そのためのスタンドアロン版だったmake -t
機能。
touch /forcefsck
空のファイルを作成/forcefsck
して、次の再起動時にファイルシステムのエラーチェックを強制するために使用します。ファイル自体には何も含める必要はなく、存在する必要があります。なしtouch
では、空のファイルを使用するvi
かnano
、保存する必要があります。使用するのがはるかに速いtouch
。