時々まったく存在しないファイルに触れましたが、コマンドを実行した後にファイルが生成される現象が発生しました。ただし、タッチしたディレクトリによっては、「該当するファイルやディレクトリはありません」というエラーが発生します。
たとえば、を実行すると、touch foo.txt
foo.txtファイルが私のホームディレクトリに作成されます。逆に、私が実行するとtouch /bar/foo.txt
、私はそれを取得しますtouch: cannot touch '/bar/foo.txt': No such file or directory
。
これの論理は何ですか?ありがとうございます。
ベストアンサー1
このtouch
コマンドにはターゲットファイルは必要ありませんが、ターゲットファイルの親ディレクトリが必要です。したがって、実行するには、そのtouch /bar/foo.txt
ディレクトリがすでに存在することを確認する必要があります/bar/
。
ほとんどのコマンドラインプログラムと同様に、このtouch
コマンドはユーザーが提供するパス引数が相対パスであると仮定します。したがって、touch foo.txt
現在の作業ディレクトリにファイルが作成されます。現在のディレクトリがホームディレクトリの場合は、foo.txt
ホームディレクトリに作成されます。