“文件”和“./file”path有什么区别吗?

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

我对SmallLoanOf1M的解释并不疯狂。 这在技术上是正确的,但是以与问题中的使用示例不匹配的方式来回答。

举个例子,这里是两个问题之间的重要区别:“file”和“./file”

如果文件是用shellparsing的字符命名的呢? 特别是对于正在运行的命令解释的字符。

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

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

尝试列出文件:

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

更糟的是,如果该文件被命名为“ -rf rmbomb * ”呢? 现在尝试删除它

 rm "-rf rmbomb *" 

我甚至不会去尝试运行这个例子,但是希望你能明白这个想法。

那么你如何列出一个文件盯着破折号? 在前面使用./

 # ls ./-dingle ./-dingle 

同上

是。

通过在命令行上发布file ,BASH将search你的$ PATH环境variables来获得这个名字的文件。 除非文件驻留在$ PATHvariables的目录中,否则将不会被find。

. 表示当前目录。 ./表示当前目录中的相对值。 在/home/sheogorath/shivering/目录中调用./isles.img时,它相当于说/home/sheogorath/shivering/isles.img

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

编辑:在你的例子中, ls被shell调用,并通过使用pathvariablesfind。 它的论点将被处理在你的工作目录中,无论可能如何。 由于这是ls的默认值,所以在指定file和显式指定./file ,您将看不到任何区别,因为它们都指向当前目录。

并不是所有的命令都会接受工作目录中的文件path,有些人希望你在自己预先通过configuration定义的目录中声明文件。 在接受文件作为参数的命令中,这些命令不太常见