我注意到有时我触摸了一个根本不存在的文件,并且在命令之后,文件被创建。但是,根据我正在触摸的目录,我收到“没有这样的文件或目录”错误。
例如,如果我运行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
将在您的主目录中创建。
答案2
您收到“没有这样的文件或目录”错误,因为 /bar/foo.txt 正在 root/bar/foo.txt 中查找。从您的主目录尝试“bar/foo.txt”(而不是/bar/foo.txt)。假设 bar 目录存在于您的主目录中