正如标题所说,*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/
因此,它通常用于“就地”执行工作目录中的文件。
编辑:
在您的示例中,ls
shell 调用 并使用 path 变量找到 。其参数将在您的工作目录中处理,无论该目录是什么。由于这是 的默认设置ls
,因此您不会看到指定file
和显式指定之间的任何区别./file
,因为它们都指向您的当前目录。
并非所有命令都会接受工作目录中的文件路径,有些命令希望您在它们自己通过配置预定义的目录中声明文件。在接受文件作为参数的命令中,这些命令不太常见