./
或~/
开头。以
./
开头的文件路径表示相对于当前目录的路径,而以~/
开头的路径则表示相对于用户主目录的路径。它们各自代表什么意思?
/bin/ls /home/you/Documents/unix-101/directories.txt
假设您位于主目录中,那么“is a longwinded but perfectly valid way to say”是一个啰嗦但完全有效的说法。
ls Documents/unix-101/directories.txt
你也可以这样说
cd Documents/unix-101
ls directories.txt
在您再次输入cd
之前,所有的命令都将在此目录中运行。
有关这个相关概念的更长阐述,请参见“当前工作目录是什么?”
有时人们会用“文件夹”来称呼“目录”,尤其是那些还不够老练的人。
顺便提一下,别把目录名.
与Bourne shell命令混淆,该命令只包含一个点(也被它的Bash别名source
所知)。
. ./scriptname
在当前shell实例中运行来自文件./scriptname
的命令,而不是在单独的子shell中运行(这就是仅使用./scriptname
的情况)。换句话说,这条命令行在点目录中的文件scriptname
上调用了点命令。
Bourne shell(及其派生品如Bash、Zsh等)使用单引号来防止变量扩展和通配符扩展,而使用双引号允许变量扩展,但在字符串中禁止通配符扩展。在Windows上的引用规则不同,通常使用双引号将以空格分隔的值作为单个字符串保存(并使用%
而不是$
进行变量替换)。
./
意味着“从当前目录开始”。.
指的是当前工作目录,所以像./foo.bar
这样的东西将在当前目录中查找名为foo.bar
的文件。(另外,..
是指当前目录的父目录。所以../foo.bar
将在当前目录的上一级目录中查找该文件。)
~/
意味着“从主目录开始”。这在不同的情况下可能有不同的含义。例如,在Unix环境中,~/foo.bar
将在您的主目录中查找名为foo.bar
的文件,类似于/home/totzam/foo.bar
。在许多Web应用程序中,~/foo.bar
将在Web应用程序根目录中查找名为foo.bar
的文件,类似于/var/http/mywebapp/foo.bar
。
./
表示当前目录。
~/
表示当前用户的主目录。
./
表示相对于当前位置的路径。
~/
表示相对于你的主目录的路径。
.
代表当前目录
..
代表父目录
~
代表当前用户的主目录。主目录也可以用HOME
环境变量表示。您可以在shell上执行echo $HOME
来查看它。
这些通常用于指定相对路径。每个符号末尾的/
是一个分隔符,您可以在使用这些符号时一起使用它。
例如:
$ cd ../.. # Go 2 directories backwards
$ cd ~ # Takes you to $HOME directory
$ cd . # Does nothing :) As it literally means go to the directory that you are already present in.
$ cd ~/dir1 $ go to `$HOME/dir1`
ls -a
命令,你都会看到.
和..
(即使是空目录)。正如所述,它们具有特殊含义,并且在Unix系统中默认生成,通常有助于指定相对路径(即相对于当前目录的不同目录的路径)。
cd
命令是无害的。因此,只需结合符号和cd
命令进行尝试,你最终将掌握它们。我将解释一个简单的例子。开发人员提到:
./
是当前目录。~/
是当前用户的主目录。这两种文件路径表示法如何帮助我们?假设您想执行一个脚本(.sh),并且您正在该文件所在的同一目录中,那么您可以简单地执行 ./filename.sh
我通常使用~/
来访问我的主目录文件,例如.bashrc
当我想要添加任何配置时。因为文件路径表达式(对于主目录)感觉更容易,并使得从任何地方访问文件更加容易,而不必担心路径或更改路径。
)字符而言,它实际上意味着取出在和第一个/之间的所有内容,并将其视为用户名。如果该空格为空,例如~/或用户不存在,则默认为当前用户。如果使用sudo和恶意字符串以另一个用户或root身份运行脚本,则可能会导致问题。 - Michael Treanor~user
的内容。现在已经完成了。 - tripleee\
而不是正斜杠/
)。通常情况下,在286时代,C:\
是第一块硬盘的根目录(而A:\
是第一块软盘驱动器的根目录),尽管存在一些变化。 - tripleee