我需要/etc/passwd
使用新名称将 复制到我已经创建的目录中my_passwd
。我了解如何使用绝对路径复制它:cp /etc/passwd /home/user/work/my_passwd
.
所以我知道这.
就是我在 shell 中的位置,并且..
用于在我所在的目录中向上移动一个并且我输入了cd work
,如果我在家,我可以移动到那里吗?我错了,我将如何使用相对路径进行复制?
我需要/etc/passwd
使用新名称将 复制到我已经创建的目录中my_passwd
。我了解如何使用绝对路径复制它:cp /etc/passwd /home/user/work/my_passwd
.
所以我知道这.
就是我在 shell 中的位置,并且..
用于在我所在的目录中向上移动一个并且我输入了cd work
,如果我在家,我可以移动到那里吗?我错了,我将如何使用相对路径进行复制?
相对路径是不以 开头的路径
/
。在此特定示例中,
/etc/passwd
是绝对路径,如果您知道要复制的文件的绝对路径,则(通常)将其转换为相对路径没有实际目的(实际上,它可能只是混淆了事情,因为路径取决于您当前在目录树中的位置)。您要将文件复制到的目录是
$HOME/work
filenamemy_passwd
。$HOME
将扩展到您的主目录的绝对路径。要仅使用绝对路径复制文件:
这不取决于您当前位于文件系统中的哪个位置(这很好)。
要查找
/etc/passwd
文件的相对路径,您可以realpath
在 Linux 上使用该命令(此实用程序可能在其他类型的 Unix 系统上不可用,并且至少在 Ubuntu 中可用)。假设您位于您的主目录中(在给出cd
不带参数的命令之后):这告诉我们“
/etc/passwd
位于从这里向上的两个目录,然后在etc
”中。要使用相对路径复制文件,从位于您的主目录中(它不适用于目录树中的其他位置):
work/my_passwd
是从主目录到子目录中文件my_passwd
的相对路径。work
乙醚组合
或者
显然也可以工作(从你的主目录),这取决于你想绝对或相对指定哪些路径。
如何制作相对路径
/etc/passwd
?创建一个相对路径/
,然后添加etc/passwd
. 如何制作相对路径/
?计算当前目录的深度,然后向根目录走那么多步。因此,如果我们在 中
/home/user/work
,我们会使用 3 次向根方向移动../../../
。以编程方式,计算当前路径中的斜杠,或者将所有目录名称替换为..
,并将第一个斜杠移到末尾。让我们在 Bash 中做后者:
输出例如:
也许更实际的情况是我们需要从
/foo/bar/some/path
to的相对路径/foo/bar/otherpath
,在这种情况下,只需删除公共前缀并应用上面的解决方案。