关于 .file 和 ./directory 混淆

Mr *_*qua 6 filenames files

我最近从 windows 转移到 linux,我看到了一件奇怪的事情:

./configure
Run Code Online (Sandbox Code Playgroud)

或者

nano /something/something2
Run Code Online (Sandbox Code Playgroud)

这是something2一个文件吗?它看起来像一个目录,我不明白如何编辑它?对于./configure. 这是什么意思?

n.s*_*.st 21

您可能会感到困惑,因为这些文件没有扩展名(以 结尾.txt),这对于在 Windows 上确定文件的内容至关重要。

在 Linux 上,大多数程序不依赖文件的扩展名来确定用哪个程序打开它,而是查看它的前几个字节(“魔术字节”),通常会显示文件的类型。

因此,通常可以省略文件扩展名,并且您会遇到大量README文本文件和configure脚本。

  • 很好的诠释。我不认为这可能是混淆的地方。 (3认同)

phe*_*mer 10

您的 2 个示例彼此完全无关,因此我将这样处理它们。

 

。/配置

这是 shell 表示法,意思是执行configure在当前工作目录中调用的文件。

通常,当您想运行一个程序时,例如/bin/ls,您只需将其称为ls. 您不需要指定路径。这是有效的,因为您的 shell 有一个名为的变量$PATH,其中包含在输入非限定命令时要搜索的位置列表。所以$PATH会包含/bin,当您运行时ls,它会在 中查找/bin并执行它。

现在,当您想要运行不在 中的程序时$PATH,您必须限定该路径。如果您当前在 中/home/johndoe,并且configure在该目录中调用了一个程序/脚本,则可以将其作为/home/johndoe/configure或运行./configure。由于您已经在该目录中,因此./符号较短。

 

纳米/某事/某事2

在这种情况下,您只是将参数传递给nano. 没有什么比这更重要的了。

nano是一名编辑。所以你只是/something/something2作为参数传递给nano. 由 nano 决定如何处理该参数。编辑器可能会查看参数并“哦,那是一个文件,让我们打开它”,或者它可能会“哦,那是一个目录,让我们列出内容并让用户选择一个文件”。或者它可能会向您抛出错误:-)

重点是,虽然nano可以智能地确定是什么/something/something2,但这完全取决于 nano。另一个编辑器或程序可能会有完全不同的反应。