BEWARB Asked: 2017-03-05 20:05:36 +0800 CST2017-03-05 20:05:36 +0800 CST 2017-03-05 20:05:36 +0800 CST 为什么是 。当我们执行 ls -a 时,和 .. 会作为隐藏文件输出?[复制] 772 是不是默认情况下会将它们添加到为便于在外部移动而创建的每个目录中? command-line 3 个回答 Voted Best Answer Sergiy Kolodyazhnyy 2017-03-05T20:10:39+08:002017-03-05T20:10:39+08:00 前导点文件名 简单的答案是因为这些文件名以点开头。任何以点开头的文件名都被认为是Linux 上的隐藏文件(即使在这种情况下文件名本身只有一个字符长)并且基本上是可以追溯到第一个 Unix OS 的“传统”。您可以使用 来查看它们ls -a。 如果您想知道代码级别的原因,请在 coreutils 包的ls.c文件中将其设置为默认值:src/ls.c 638 static enum 639 { 640 /* Ignore files whose names start with '.', and files specified by 641 --hide and --ignore. */ 642 IGNORE_DEFAULT, 643 644 /* Ignore '.', '..', and files specified by --ignore. */ 645 IGNORE_DOT_AND_DOTDOT, 646 647 /* Ignore only files specified by --ignore. */ 648 IGNORE_MINIMAL 649 } ignore_mode; 简单的应用 您问: 是不是默认情况下会将它们添加到为便于在外部移动而创建的每个目录中? 是的,因为.指的是目录本身并..指的是父目录。例外是作为/文件系统树根目录的目录。在这种情况下,..引用/自身,因为它上面没有更高的目录。无需记住每条路径,方便的是您可以使用cd ... 很简单,对吧?现在想象你有一条很长的路。输入父目录的完整路径很不方便,但..要简单得多。它还允许进行简单的脚本编写,例如我保留的这个函数.bashrc: goup() { num=$1 while [ $num -ne 0 ] do cd .. num=$(expr $num - 1 ) done } 通过指定goup 5i 可以上 5 个目录,其中每个目录..指的是父级的父级的父级。 如果.有必要,脚本可以使用它来确定它们的当前位置。 在其他语言中,实用程序 贝壳是显而易见的。它们的行为与 of 相同ls,默认情况下在使用 glob 时忽略文件名 $ echo * LICENSE README.md ayatana-indicator ayatana-indicator.desktop debian star: 如果我们添加包含隐藏文件,我们可以ls -a用 shell glob模拟。.* $ echo * .* LICENSE README.md debian indicator-bulletin indicator-bulletin.desktop .git .gitignore 相比之下,其他一些程序/实用程序和编程语言不会隐藏这些项目(或者至少它们不会隐藏.)。然而,它们的目的比仅仅列出目录要广泛得多,而且它们更适合解析文件(请阅读为什么不应该解析 ls(1) 的输出)。 $ find -maxdepth 1 . ./.git ./README.md ./LICENSE ./debian ./indicator-bulletin.desktop ./.gitignore ./indicator-bulletin $ perl -le 'opendir(dh,$ARGV[0]);while( $file = readdir(dh) ){ print $file; }; closedir(dh);' "." .git .. README.md LICENSE debian . indicator-bulletin.desktop .gitignore indicator-bulletin Pythonos.listdir()是一个明显的例外——它不显示.也不显示... 该glob模块可用于显示与 shell 中相同的行为。 $ python -c 'import os;print(os.listdir("."))' ['.git', 'README.md', 'LICENSE', 'debian', 'indicator-bulletin.desktop', '.gitignore', 'indicator-bulletin'] $ python -c 'import glob;print(glob.glob(".*"),glob.glob("*"))' (['.git', '.gitignore'], ['README.md', 'LICENSE', 'debian', 'indicator-bulletin.desktop', 'indicator-bulletin']) WinEunuuchs2Unix 2017-03-05T20:18:43+08:002017-03-05T20:18:43+08:00 在 MS-DOS 和 Windows 中也有.和..。很简单.的代表当前目录和..代表父目录。 MS-DOS 诞生于 CPM 操作系统,当时比尔盖茨以 80,000 美元的价格购买了权利,并以 PC-DOS 的身份授权给 IBM,PC-DOS 变成了 MS-DOS,然后变成了 Windows,预计最终会给他带来万亿美元的收入。 Linux 还使用基于 IBM PC-AT 硬件的第一个文件系统版本.。.. 正如 Serg 在 Linux 中回答的那样,.并且..不会出现在ls命令中,因为任何以开头.的文件都是隐藏文件。不过,您可以使用ll别名来查看这些文件。 在 MS-DOS 和 Linux 中,您都可以使用cd ..命令切换到父目录。在 Linux 中,当您想在当前目录(而不是路径)中调用命令时,您需要在命令前加上./. 但是在 MS-DOS 中,它会在搜索 PATH 之前自动在当前目录中查找命令。 Apple Mac 和 Google Android 是基于 Linux 操作系统的,但我不知道他们的文件系统是否也使用.和... L. D. James 2017-03-05T20:17:43+08:002017-03-05T20:17:43+08:00 以 a 开头的文件.是隐藏文件。隐藏部分便于为用户提供他可能正在查看的内容的更清晰的输出。 在正常情况下,用户正在寻找他将使用的文件的输出,例如文字处理器文件、图片和系统上的其他数据。 该-a选项是显示所有文件的参数。这包括隐藏文件。 隐藏文件通常是特殊文件,如配置文件和辅助文件。您可以通过在输出中包含所有文件或隐藏文件来查看它们。GUI 文件浏览器有一个显示隐藏文件选项。 在这种情况下,文件是.和..。它们是您的目录的规范。单点是您的当前目录。双点是父目录。您可以通过键入以下内容备份到您所在的父目录: $ cd .. 就像其他以点开头的文件一样,它们是隐藏的。如果一个人想要查看那些目录规范,他们将指定全部显示以显示隐藏文件。
前导点文件名
简单的答案是因为这些文件名以点开头。任何以点开头的文件名都被认为是Linux 上的隐藏文件(即使在这种情况下文件名本身只有一个字符长)并且基本上是可以追溯到第一个 Unix OS 的“传统”。您可以使用 来查看它们
ls -a
。如果您想知道代码级别的原因,请在 coreutils 包的
ls.c
文件中将其设置为默认值:src/ls.c
简单的应用
您问:
是的,因为
.
指的是目录本身并..
指的是父目录。例外是作为/
文件系统树根目录的目录。在这种情况下,..
引用/
自身,因为它上面没有更高的目录。无需记住每条路径,方便的是您可以使用cd ..
. 很简单,对吧?现在想象你有一条很长的路。输入父目录的完整路径很不方便,但..
要简单得多。它还允许进行简单的脚本编写,例如我保留的这个函数.bashrc
:通过指定
goup 5
i 可以上 5 个目录,其中每个目录..
指的是父级的父级的父级。如果
.
有必要,脚本可以使用它来确定它们的当前位置。在其他语言中,实用程序
贝壳是显而易见的。它们的行为与 of 相同
ls
,默认情况下在使用 glob 时忽略文件名如果我们添加包含隐藏文件,我们可以
ls -a
用 shell glob模拟。.*
相比之下,其他一些程序/实用程序和编程语言不会隐藏这些项目(或者至少它们不会隐藏
.
)。然而,它们的目的比仅仅列出目录要广泛得多,而且它们更适合解析文件(请阅读为什么不应该解析 ls(1) 的输出)。Python
os.listdir()
是一个明显的例外——它不显示.
也不显示..
. 该glob
模块可用于显示与 shell 中相同的行为。在 MS-DOS 和 Windows 中也有
.
和..
。很简单.
的代表当前目录和..
代表父目录。MS-DOS 诞生于 CPM 操作系统,当时比尔盖茨以 80,000 美元的价格购买了权利,并以 PC-DOS 的身份授权给 IBM,PC-DOS 变成了 MS-DOS,然后变成了 Windows,预计最终会给他带来万亿美元的收入。
Linux 还使用基于 IBM PC-AT 硬件的第一个文件系统版本
.
。..
正如 Serg 在 Linux 中回答的那样,
.
并且..
不会出现在ls
命令中,因为任何以开头.
的文件都是隐藏文件。不过,您可以使用ll
别名来查看这些文件。在 MS-DOS 和 Linux 中,您都可以使用
cd ..
命令切换到父目录。在 Linux 中,当您想在当前目录(而不是路径)中调用命令时,您需要在命令前加上./
. 但是在 MS-DOS 中,它会在搜索 PATH 之前自动在当前目录中查找命令。Apple Mac 和 Google Android 是基于 Linux 操作系统的,但我不知道他们的文件系统是否也使用
.
和..
.以 a 开头的文件
.
是隐藏文件。隐藏部分便于为用户提供他可能正在查看的内容的更清晰的输出。在正常情况下,用户正在寻找他将使用的文件的输出,例如文字处理器文件、图片和系统上的其他数据。
该
-a
选项是显示所有文件的参数。这包括隐藏文件。隐藏文件通常是特殊文件,如配置文件和辅助文件。您可以通过在输出中包含所有文件或隐藏文件来查看它们。GUI 文件浏览器有一个显示隐藏文件选项。
在这种情况下,文件是
.
和..
。它们是您的目录的规范。单点是您的当前目录。双点是父目录。您可以通过键入以下内容备份到您所在的父目录:就像其他以点开头的文件一样,它们是隐藏的。如果一个人想要查看那些目录规范,他们将指定全部显示以显示隐藏文件。