目录中的“。”和“ ..”是什么?


15

基于以下问题:如何使使用命令提示符的痛苦减轻,投票最多的答案中的...项是什么?我在执行dir命令时会看到它,但用户看不到文件形式的内容。

如果您不知道我的意思,这是一个例子:

.
..
Su.exe
Sup.txt
SuperUser.COM

Answers:


40

的。是当前目录,而..表示父目录。它也使命令行处理变得更快,因此您无需键入完整路径。

例:

上升2个目录:

cd ..\..\

或在基于UNIX的系统上,以在当前目录中运行可执行二进制文件:

./program

许多UNIX脚本也将使用。代表当前目录,以扫描文件(例如,Perl):

#!/usr/bin/perl

opendir ( DIR, "." ) || die "Error opening current directory\n";
while( ($f = readdir(DIR))){
     print("$f\n");
}
closedir(DIR);

如果您希望将脚本移动到不同的目录或系统,因为目录名不是硬编码的,所以它更加可移植。


3
鲜为人知,但是Windows命令行对此进行了进一步扩展。。=此目录.. =父目录... =父目录的父目录有时3个点很有用,远不止于此,而且很难处理。
salmomoose

4
使用Vista,3个点对我不起作用
Kevin Panko

1
Windows 7 64位RTM上也不是我。对我来说听起来像是一个神话。.. \ ..到底怎么了?
AdamV 2010年

2
@salmonmoose:在XP上也不适合我。
西蒙·史蒂文斯


10

..用来浏览该文件系统的层次结构。当您不想键入很长的路径,或者编写的脚本/程序不知道确切的安装位置,但知道../media/应该保存所有图像/视频/图标等时,此功能很有用。

单点.在Linux中非常有用,在Linux中您想在当前目录中运行可执行文件,因此您键入该内容./a.out是因为命令外壳程序默认情况下不会在当前目录中搜索可执行文件(出于安全原因)。

.如果要将当前目录作为参数传递给命令,也可以使用单点。


1
PowerShell也不包含。在路径列表中搜索可执行文件。
乔伊,

如何通过“。” 作为命令的参数?
微积分

@DeFu,您将点作为点传递,例如:ls .
hasen

ls 功能与ls .
微积分

@DeFu好,是的,但是当您通过时,ls .传递'。作为“ ls”的论点;那不是你问的吗?它的功能相同,因为默认情况下列出ls了当前目录,并且.是当前目录。但是你将它传递给命令,肯定的。
哈森

5

的。是当前目录。您很少需要使用它;大多数命令将采用当前目录。..是下一个升级;这是一个相当有用的捷径。如果您在C:\ foo \ bar中,并且想要转到C:\ foo \ bar2,则可以说

cd ..\bar2

您将位于C:\ foo \ bar2中。如果您不想转到bar2,而只想运行C:\ foo \ bar.exe,则可以说

..\bar.exe

或.. \ bar来运行它,而无需返回到父目录。当然,当它代表C:\ foo较长的路径(例如“ C:\ Users \ Daniel \ My Dropbox \”)时,这将更为有用。


1
我发现 。有时非常有用,尤其是在将文件复制或移动到当前位置(copy F:\*.foo .)或以其他方式引用它时(start .例如,在当前目录中打开资源管理器)。
乔伊,

3

他们代表:

.

当前目录

.. 

代表父目录

因此,如果您在以下位置有可执行文件“ su.exe”:

  • 您的Path环境变量(假设C:\ MyExecutables \ su.exe)
  • 您当前的目录
  • 您的父目录。

您可以像这样执行每个:

 su.exe  

执行路径中的一个

.\su.exe 

在当前目录中执行一个

..\su.exe

在父目录中执行一个。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.