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。