AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 696502
Accepted
thinksinbinary
thinksinbinary
Asked: 2015-11-11 16:24:33 +0800 CST2015-11-11 16:24:33 +0800 CST 2015-11-11 16:24:33 +0800 CST

“.”有什么关系?和目录中的“..”?[复制]

  • 772
这个问题在这里已经有了答案:
做什么 ”。” 和“..”是指在文件夹中时? (4 个答案)
6 年前关闭。

当我使用 nautilus 浏览目录时(这个目录中的具体示例是 /media 文件夹)我什么也看不到,但是当我ls -a在终端中输入时它显示:

. 
.. 

穿蓝色衣服。我知道蓝色突出显示是目录,.并且..可以象征父目录和工作目录,但为什么它们在/media文件夹中?

command-line
  • 5 5 个回答
  • 6044 Views

5 个回答

  • Voted
  1. NZD
    2015-11-11T16:34:29+08:002015-11-11T16:34:29+08:00

    如果 Nautilus 什么都不显示,ls -a只显示.and ..,则该目录中没有任何内容。

    Directory.表示当前目录,它是一种使用相对路径引用文件和目录的方式。例如./subdir1/subdir2/somefile

    当你发出命令ls时,在引擎盖下这被翻译成ls .

    也一样..,是引用父目录的一种方式。例如../../etc/cron.d。

    • 18
  2. thomasrutter
    2015-11-11T20:23:58+08:002015-11-11T20:23:58+08:00

    这两个条目是您机器上文件系统不可或缺的一部分,并且存在于内核的低级目录列表函数返回的列表中。

    正如其他人所说,..是指向父目录.的链接,并且是指向当前目录的链接。

    某些前端(例如 nautilus)隐藏了这两个条目,因为它们在图形环境中并不真正相关,但它们仍然存在。

    它们为什么存在?

    这些是为了方便起见的快捷方式。它们在您的整个文件系统中实施,以确保无论您使用哪个应用程序,它们都能正常工作——它们不依赖于个别应用程序的支持。它们将在允许目录路径的任何地方工作,包括配置文件。

    • 该快捷方式允许您使用、其祖父级 using等..来引用目录的父级。directory/..directory/../..

    • 如果应用程序要求您指定要在其中搜索的一个(或多个)目录,并且您想在当前目录中搜索,则该.快捷方式允许您明确引用当前目录。

      例如,.可以添加到PATH环境变量中,默认情况下允许在当前目录中搜索匹配的可执行文件。或者,如果它不存在于 中PATH,您可以使用./myscript在当前目录中运行脚本,即使PATH环境变量不会以其他方式在当前目录中查找可执行文件。

    它们是如何实施的

    在大多数传统文件系统中,.和..条目在磁盘上作为目录条目实现,目录条目与它们指向的目录共享一个索引节点——也就是说,它们就像到当前目录和父目录的硬链接,除了它们不能被删除或修改.

    在操作系统内核的帮助下,该..条目甚至可以跨挂载点工作,确保挂载点的根目录将有一个..条目实现为挂载所在的父目录的链接。无论文件系统类型如何,都会发生这种情况 - 即使在像/proc.

    .并且..是保留的文件名 - 不可能创建一个实际的文件或目录并将其命名为.or ..(尽管您可以使用这些字符作为文件名的开头)。

    • 13
  3. pabouk - Ukraine stay strong
    2015-11-12T04:12:43+08:002015-11-12T04:12:43+08:00

    存在的原因和.用途..

    .并且..是通常存在于每个目录中的条目。它们的含义与进程(如 shell)的工作目录无关,而是与条目所在的目录相关。

    ..提供目录树结构的双向链接,而.是引用目录本身的方便名称。路径directory/.与directory. 从理论上讲,可以选择一个空字符串来引用目录本身,但实际上它不是这样的:ls ''不起作用并且空字符串的含义会不明确,因为在 a 路径的开头它引用根目录already:/file1是指file1在根目录中还是file1在当前工作目录中?

    正如 thomasrutter 所展示的,重要的是您可以在路径中使用.和作为普通目录条目。..例如./-filename,可用于避免将破折号字符解释为-命令行选项的介绍。有效路径directory1/../directory2与./directory2which 相同 与 相同directory2。

    为什么是.和..隐藏?

    开头的文件(和目录)名称按照.惯例隐藏在类 Unix 系统中,因此默认情况下大多数工具不会显示.和..目录。这很有用,因为我们已经知道.和..通常存在于每个目录中。

    该命令ls -a显示所有目录条目。在 Nautilus Ctrl+H中打开隐藏条目的显示,但有例外,.因为..它们在图形文件管理器中通常不是很有用。对于命令行上的类似行为,您可以使用ls -A.

    .和..真实的目录条目?

    是的,在常用的文件系统中它们是。(正如 Jonathan Leffler 提醒的那样)我们如何检查?

    # prepare the directory
    cd /tmp ; mkdir testdir1
    
    # test 1
    ls -lid testdir1 testdir1/. testdir1/..
    1179767 drwxrwxr-x  2 pabouk  pabouk  4096 Nov 12 11:52 testdir1
    1179767 drwxrwxr-x  2 pabouk  pabouk  4096 Nov 12 11:52 testdir1/.
    1179650 drwxrwxrwt 14 root    root    4096 Nov 12 15:17 testdir1/..
    

    引用目录/文件本身的数据结构的 inode 编号(第 1 列)对于同一目录testdir1和testdir1/.. 链接计数(第 3 列)显示引用 inode(目录/文件)的目录条目数在创建目录后立即为 2,因为有testdir1in/tmp和.in /tmp/testdir1。/tmp/testdir1/..( )的索引节点/tmp有 14 个链接,因为它有 12 个子目录,包含..+ 每个目录的 2 个条目。

    # test 2
    touch testdir1/tesfile1   # to have a regular file too
    
    debugfs /dev/sda2 -R 'ls -l /tmp/testdir1' | cat
    debugfs 1.42.12 (29-Aug-2014)
     1179767   40775 (2)   1000   1000    4096 12-Nov-2015 11:52 .
     1179650   41777 (2)      0      0    4096 12-Nov-2015 15:46 ..
     1179771  100664 (1)   1000   1000       0 12-Nov-2015 11:52 tesfile1
    

    该实用程序debugfs直接从磁盘扇区读取 ext2(和更新版本)文件系统数据(绕过 Linux 内核中的文件系统)。

    # test 3
    
    debugfs /dev/sda2 -R 'dump /tmp/testdir1 '>(od -tax1)
    debugfs 1.42.12 (29-Aug-2014)
    0000000   w nul dc2 nul  ff nul soh stx   . nul nul nul stx nul dc2 nul
             77  00  12  00  0c  00  01  02  2e  00  00  00  02  00  12  00
    0000020  ff nul stx stx   .   . nul nul   { nul dc2 nul   h  si  bs soh
             0c  00  02  02  2e  2e  00  00  7b  00  12  00  e8  0f  08  01
    0000040   t   e   s   f   i   l   e   1   s   o   c   k   e   t nul nul
             74  65  73  66  69  6c  65  31  73  6f  63  6b  65  74  00  00
    0000060 nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul nul
             00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
    *
    0010000
    

    如果您不相信目录列表,debugfs您可以检查目录的原始转储并检查.和..条目是否真的存在。

    • 5
  4. Best Answer
    Sergiy Kolodyazhnyy
    2015-11-11T16:33:37+08:002015-11-11T16:33:37+08:00

    简短回答:.指的是您当前的目录,..指的是它上面的目录,也就是父目录。/media用于在驱动器上安装 USB 和分区等内容。除非您明确连接了 USB 或自己在其中安装了一些东西,否则该目录将保持为空。

    • 4
  5. Jane
    2015-11-11T17:39:49+08:002015-11-11T17:39:49+08:00

    .是当前目录,..是父目录。以下面的目录层次结构为例:

    foo
    └── bar
    

    foo/.并且foo/bar/..是foo。

    • 3

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve