Ser*_*aev 12 linux filesystems
正如标题所说,*NIX 文件系统有什么区别吗?例如ls file和ls ./file
JDS*_*JDS 14
我对 SmallLoanOf1M 的解释并不着迷。它在技术上是正确的,但以与问题中的用法示例不匹配的方式回答。
因此,举例来说,以下是问题中两者之间的一个重要区别:“file”和“./file”
如果文件以 shell 解析的字符命名怎么办?特别是关于由正在运行的命令解释的字符。
具体来说,“破折号”字符:“-”。但是其他字符对 shell 来说是有意义的。
例子。我的文件被命名为“-dingle”
尝试列出文件:
ls -dingle
# ls -dingle
ls: invalid option -- 'e'
Run Code Online (Sandbox Code Playgroud)
更糟糕的是,如果文件名为“ -rf rmbomb *”怎么办?现在尝试删除它
rm "-rf rmbomb *"
Run Code Online (Sandbox Code Playgroud)
我什至不会尝试运行该示例,但希望您能理解。
那么如何列出以破折号开头的文件呢?用./在前面。
# ls ./-dingle
./-dingle
Run Code Online (Sandbox Code Playgroud)
同上 rm
是的。
通过file在命令行上发出命令,BASH 将在您的 $PATH 环境变量中搜索具有该名称的文件。除非文件驻留在 $PATH 变量中的目录中,否则将无法找到它。
.表示当前目录。./表示在当前目录中,相对而言。这相当于在目录中工作/home/sheogorath/shivering/isles.img时调用之类的话。./isles.img/home/sheogorath/shivering/
因此,它通常用于“就地”执行工作目录中的文件。
编辑:
在您的示例中,lsshell 正在调用并使用 path 变量找到。它的参数将在您的工作目录中处理,无论它是什么。由于这是 的默认值ls,因此您不会看到指定file和显式指定之间的任何区别,./file因为它们都指向您的当前目录。
并非所有命令都接受工作目录中的文件路径,有些命令希望您将文件放在他们自己通过配置预先定义的目录中。在接受文件作为参数的命令中,这些命令不太常见