“文件”和“。/file”路径之间有什么区别?

“文件”和“。/file”路径之间有什么区别?

正如标题所说,*NIX 文件系统有什么区别吗?ls file例如ls ./file

答案1

我不太喜欢 SmallLoanOf1M 的解释。从技术上讲,它是正确的,但回答的方式与问题中的使用示例不符。

举例来说,这里有两个问题中的一个重要区别:“file”和“./file”

如果文件以 shell 解析的字符命名会怎么样?特别是对于正在运行的命令所解释的字符。

具体来说,“破折号”字符:“-”。但其他字符对 shell 有意义。

例如。我的文件名为“-dingle”

尝试列出文件:

ls -dingle
# ls -dingle
ls: invalid option -- 'e'

更糟糕的是,如果文件名为“ -rf rmbomb *”,该怎么办?现在尝试删除它

rm "-rf rmbomb *"

我甚至不会尝试运行该示例,但希望你能明白我的意思。

那么如何列出以破折号开头的文件?使用./前面。

# ls ./-dingle
./-dingle

同上rm

答案2

是的。

通过在命令行中发出file,BASH 将在您的 $PATH 环境变量中搜索该名称的文件。除非该文件位于您的 $PATH 变量中的目录中,否则将找不到它。

../表示当前目录。之内当前目录,相对而言。这相当于在目录中工作时/home/sheogorath/shivering/isles.img调用类似的东西。./isles.img/home/sheogorath/shivering/

因此,它通常用于“就地”执行工作目录中的文件。

编辑: 在您的示例中,lsshell 调用 并使用 path 变量找到 。其参数将在您的工作目录中处理,无论该目录是什么。由于这是 的默认设置ls,因此您不会看到指定file和显式指定之间的任何区别./file,因为它们都指向您的当前目录。

并非所有命令都会接受工作目录中的文件路径,有些命令希望您在它们自己通过配置预定义的目录中声明文件。在接受文件作为参数的命令中,这些命令不太常见

相关内容