答案1
问题是关于 Windows 的,但你标记了Linux的所以我的答案适用于Linux。
每次你调用一个命令时,都会有一些工作目录您当前所在的位置;.
表示此目录。pwd
是了解此目录的通用命令。在 shell 中工作时,bash
您可以使用 来“转到”另一个目录cd /another/directory/path
。
某些命令(如上cd
)接受目录(即其路径)作为参数。现在我想谈谈显而易见的基本知识;但您的问题似乎很基础,所以我们开始吧。传递参数的一般语法some_command
如下:
some_command argument
或甚至任意数量的参数(本例中为四个):
some_command argument1 argument2 "argument3 with spaces" argument4
您可以将.
其用作参数,而不是返回的路径pwd
。如果如果命令将其解释为目录路径,则应将其理解为当前工作目录。虽然这cd .
没什么意义,因为它会使您的 shell“转到”它已经所在的同一目录,但语法完全有效。有用的例子是
df .
它报告当前工作目录所在文件系统的磁盘空间使用情况。
默认情况下,有一些命令对当前工作目录进行操作:ls
相当于ls .
,du
相当于du .
。请注意,情况并非总是如此:df
打印所有可用的文件系统,而df .
仅打印其中一个。
我写 ”如果该命令将其解释为目录路径”,因为有些命令不这样做。例如在bash
命令中
tr . , <<< foo.bar
将打印foo,bar
(在给定字符串中tr
替换.
为)。这是因为解释为单字符字符串。,
foo.bar
tr
.
这表明.
shell 不会将 转换为当前目录路径。将其与~
转换为 的值$HOME
(try echo ~
in bash
)进行比较。将 解释为.
特定路径的深层原因在于 Linux(更广泛的说法是:UNIX)中目录树的设计。
因此,每个命令都可以.
自行解释。但是,当它表示目录路径时,惯例是它应该是当前工作目录。Linux 理解这一点,并提供支持这种“转换”的工具。
还要注意,ls -a
几乎总是.
在“真实”目录内容中打印。当您当前的工作目录被删除时,情况会变得有趣。在这种情况下,ls -a
不会打印任何内容,但ls .
仍然可以df .
工作,就像.
在那里一样。
答案2
一个稍微有点设计的 Windows 示例:你可以使用.
设置当前目录的属性:
C:\Path\to\Some\Directory> md sub1 sub2
C:\Path\to\Some\Directory> attrib * /s /d
C:\Path\to\Some\Directory\sub1
C:\Path\to\Some\Directory\sub2
C:\Path\to\Some\Directory> cd sub2
C:\Path\to\Some\Directory\sub2> attrib +r .
C:\Path\to\Some\Directory\sub2> cd ..
C:\Path\to\Some\Directory> attrib * /s /d
C:\Path\to\Some\Directory\sub1
R C:\Path\to\Some\Directory\sub2
sub2
这里我们在目录中 设置了只读属性。比 或 attrib +r .
更短并且更容易输入。attrib +r ..\sub2
attrib +r C:\Path\to\Some\Directory \sub2