正如标题所说,* 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定义的目录中声明文件。 在接受文件作为参数的命令中,这些命令不太常见