触摸:无法触摸`foo':没有这样的文件或目录

Lor*_*ein 26 linux shell touch

什么可能导致触摸失败并显示此错误消息?

touch: cannot touch `foo': No such file or directory
Run Code Online (Sandbox Code Playgroud)

请注意,由于权限不正确导致的错误看起来不同:

touch: cannot touch `foo': Permission denied
Run Code Online (Sandbox Code Playgroud)

max*_*zig 23

以下顺序会导致此错误消息:

$ mkdir foo
$ cd foo
Run Code Online (Sandbox Code Playgroud)

在另一个终端:

$ rm -r foo
Run Code Online (Sandbox Code Playgroud)

在上一个终端中:

$ touch x
touch: cannot touch `x': No such file or directory
Run Code Online (Sandbox Code Playgroud)

当然,也会导致尝试在那里创建文件的进程的当前工作目录 (CWD) 无效的其他事件也会产生此错误消息。

  • 一般情况是当前目录不存在。除了在 maxschlepzig 的例子中被删除之外,这只会发生在奇怪的情况下,比如行为不端的文件系统(你的情况),或者像 SELinux 这样的安全机制使目录不可见(我不知道 SELinux 是否真的可以产生这种效果)。 (3认同)
  • 在原始答案中,不需要另一个终端:同一终端中的`rmdir ../foo` 应该可以工作。没有错误文件系统的另一种可能性:`ln -s directory-that-doesnt-exist/foo foo; 触摸 foo`。 (3认同)
  • 就我而言,这是由于 GlusterFS 挂载点配置错误而发生的,但我对导致这种情况发生的一般情况感到好奇。这种类型的问题真的会是课堂上的家庭作业问题吗? (2认同)

ant*_*alm 5

对我来说,它试图写入一个指向不再存在的文件的符号链接:

$ ln -s file symlink
$ rm file
$ touch symlink
$ touch: cannot touch `symlink': No such file or directory
Run Code Online (Sandbox Code Playgroud)