このエラーメッセージでタッチが失敗する原因は何ですか?
touch: cannot touch `foo': No such file or directory
不適切な権限に起因するエラーは異なって見えることに注意してください:
touch: cannot touch `foo': Permission denied
次のシーケンスにより、このエラーメッセージが表示されます。
$ mkdir foo
$ cd foo
別のターミナルで:
$ rm -r foo
前のターミナルでは:
$ touch x
touch: cannot touch `x': No such file or directory
もちろん、ファイルを作成しようとするプロセスの現在の作業ディレクトリ(CWD)を無効にする他のイベントも、このエラーメッセージを生成します。
私にとっては、存在しないファイルを指すシンボリックリンクに書き込もうとしていました。
$ ln -s ~/doomed/file ~/mysymlink
$ rm ~/doomed/file
$ touch ~/mysymlink
$ touch: cannot touch `mysymlink': No such file or directory
メッセージをトリガーする別の(より簡単な)方法:
$ mkdir foo
$ touch foo/bar/baz.txt
touch: cannot touch 'foo/bar/baz.txt': No such file or directory
基本的に、存在しないフォルダにファイルを作成しようとしています。
多分これは将来誰かを助けるでしょう:
git rm
を使用してフォルダーに存在する唯一のファイルを削除したときに、同じ問題が発生しました。したがってgitは私がいたフォルダーを削除し、ファイルが作成されようとするとフォルダーが存在しないため、このエラーがトリガーされます。そのため、手動でフォルダーを再作成し、そのフォルダーに移動して、touch
コマンドを正常に実行する必要がありました。