【问题标题】:Unix/Linux: what is ./? [closed]Unix/Linux:什么是./? [关闭]
【发布时间】:2014-12-10 03:29:50
【问题描述】:

如果你这样做,你在 Linux 上看到的./ 是什么:

$ ls -a
./  ../ other-files

我知道../代表父目录关系,我也知道我们可以使用./来执行标记为可执行的文件,但是./被调用了,为什么它在ls -a中显示为隐藏文件?

谢谢!

【问题讨论】:

  • .是当前目录,..是父目录,/是路径分隔符。
  • 评论是为了要求澄清,而不是提供简短的答案。
  • 如果./ 只是当前目录,我想我的问题是为什么我们需要在可执行文件之前键入./ 才能执行它?如果文件在我们当前的工作目录中,为什么不只是文件名呢?谢谢!
  • 当您运行不在PATH 中列出的目录中的可执行文件时,您需要提供其全名。如果你在/home/you,那么你可以说./command/home/you/command
  • echo 不会以任何方式操纵其参数。如果您想查看. 指的是什么,请尝试stat .

标签: linux command ls


【解决方案1】:

它是文件系统树中的一个节点,它之所以出现是因为它有一个与之关联的文件描述符。

在外壳中。代表当前目录,/代表这是一个目录,当我们需要运行一个文件时,我们需要告诉路径。/比如当前目录,然后是可执行文件。

【讨论】:

    【解决方案2】:

    . 指当前工作目录。
    .. 指当前工作目录的父目录。

    目录结构

    Unix 中的每个目录都有一个... 作为参考。要了解它,请使用ls -lai 命令进一步检查...inodes

    假设目录a 是目录b 的父目录。当您列出目录bls -lai 的内容时,. 的inode 将指向b 目录,.. 将指向a 目录。

    文件列表

    ... 可用于文件列表。

    $ ls -l ./file1.txt
    

    相同
    $ ls -l file1.txt
    

    在第一种情况下,我们更具体地使用了。

    文件执行

    当我们需要执行当前工作目录中的脚本时,我们会使用以下方法。

    ./ 表示执行当前工作目录中的script.sh

    $ ./script.sh
    

    我们可以将script.sh 作为参数传递给bash,因此不必指定./

    $ bash script.sh
    

    $ bash ./script.sh
    

    如果当前工作目录是PATH 环境变量的一部分,那么我们可以简单地调用脚本而不提及./bash

    $ script.sh
    

    echo ./ 不会被扩展,因为.echobash 并不特殊。其中像*?.. 等文件扩展元字符是特殊的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2021-12-05
      • 2012-12-28
      • 2011-12-07
      • 1970-01-01
      相关资源
      最近更新 更多