touch:不能触摸`foo':没有这样的文件或目录


21

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

touch: cannot touch `foo': No such file or directory

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

touch: cannot touch `foo': Permission denied

Answers:


21

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

$ mkdir foo
$ cd foo

在另一个终端:

$ rm -r foo

在上一个终端中:

$ touch x
touch: cannot touch `x': No such file or directory

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


2
就我而言,这是由于错误配置的GlusterFS安装点而发生的,但是我对可能导致这种情况发生的一般情况感到好奇。这种问题真的是课堂上的家庭作业问题吗?
罗琳·霍希斯坦

3
一般情况是当前目录不存在。除了像maxschlepzig的示例中那样被删除之外,这只能在奇怪的情况下发生,例如文件系统运行不正常(您的情况),或者像SELinux这样的安全机制使目录不可见(我不知道SELinux是否可以实际产生这种效果)。
吉尔(Gilles)“所以

@lorin:嗯,在大学的Unix入门课程中,我们问了这类问题,作为作业的一部分(因为例如NFS问题可能会出现在类似的错误消息中)。只是出于好奇而问...
maxschlepzig

3
在原始答案中,不需要另一个终端:rmdir ../foo在同一个终端中应该可以工作。不会出现错误的文件系统的另一种可能性:ln -s directory-that-doesnt-exist/foo foo; touch foo
短暂

我觉得您应该编辑“嗯,作业问题?” 没有答案....老实说,这很令人反感。我在此页面上,因为这实际上发生在我的计算机上。但是这个答案根本解决不了这个问题。重新启动已解决,这是一个NFS问题,但我需要根本原因。
codetaku 2015年

4

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

$ ln -s ~/doomed/file ~/mysymlink
$ rm ~/doomed/file
$ touch ~/mysymlink
$ touch: cannot touch `mysymlink': No such file or directory

就是这样!现在感觉很蠢!只需在目录中执行“ ls -la”,该文件应立即显示出来。它是“ resolv.conf”,它指出由于崩溃而导致的更新不存在的地方
。– stolsvik

1

触发消息的另一种(更简单的)方法:

$ mkdir foo
$ touch foo/bar/baz.txt
touch: cannot touch 'foo/bar/baz.txt': No such file or directory

基本上是尝试在不存在的文件夹中创建文件。


0

也许这会在将来对某人有所帮助:

当我使用删除文件夹中存在的唯一文件时,遇到了同样的问题git rm。因此git删除了我所在的文件夹,任何尝试创建文件的尝试都会触发此错误,因为该文件夹不再存在。因此,我不得不手动重新创建文件夹,进入该文件夹并touch成功运行命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.