正如标题所说,* NIX文件系统有什么区别? 例如ls file
和ls ./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定义的目录中声明文件。 在接受文件作为参数的命令中,这些命令不太常见