无法获取主目录中的内容并且无法复制文件

无法获取主目录中的内容并且无法复制文件

我正在尝试在 Debian 上的主目录中复制一个命令 ( istioctl),以便我可以随时使用它,因为它会自动添加到我的 PATH 变量中。

我尝试过(“link1”是指向包含 istioctl 的硬盘驱动器的符号链接):

TestUser@ComputerName:~$ cp ~/link1/istio-1.12.2/bin/istioctl ~/cmd

TestUser@ComputerName:~$ cp ~/link1/istio-1.12.2/bin/istioctl ~/bin

在此之前这两个目录都不存在~。至少llls没有向他们展示。

但这就是我得到的:

TestUser@ComputerName:~$ ll ~
total 171856
-rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:47 bin
-rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:50 cmd
lrwxrwxrwx 1 TestUser users       38 Jan 13 18:16 link1 -> /some/path1
lrwxrwxrwx 1 TestUser users       39 Jan 13 18:10 link2 -> /some/path2
lrwxrwxrwx 1 TestUser users       38 Jan 13 18:17 link3 -> /some/path3
lrwxrwxrwx 1 TestUser users       38 Jan 13 18:15 link4 -> /some/path4
lrwxrwxrwx 1 TestUser users       38 Jan 13 18:15 link5 -> /some/path5
TestUser@ComputerName:~$
TestUser@ComputerName:~$ ll ~/bin
-rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:47 /home/TestUser/bin
TestUser@ComputerName:~$
TestUser@ComputerName:~$ ll ~/cmd
-rwxr-xr-x 1 TestUser users 87990272 Jan 24 19:50 /home/TestUser/cmd

我不明白为什么cmdbin文件夹会这样,以及为什么它们不包含该文件。

还尝试过root

root@ComputerName:~# cp ~/link1/istio-1.12.2/bin/istioctl /home/TestUser/bin

一样。

答案1

您错误地认为该cp命令会在目标位置创建一个目录,然后将源文件放入该目录中。它不是这样工作的——要将源文件放入目标目录,该目录必须已经存在;否则,cp只会创建一个目的地文件那个名字的。

man cp这种行为在(和其他地方)中有描述cp 的 POSIX 标准

cp [-Pfip] source_file target_file

cp [-Pfip] source_file... target

第一种概要形式由两个操作数表示,这两个操作数都不是目录类型的现有文件。 cp 实用程序应将 source_file ... 的内容复制到 target_file 指定的目标路径。

第二种概要形式由两个或多个操作数表示,其中未指定 -R 选项并且第一种概要形式不适用。如果任何 source_file 是目录类型的文件,如果 target 不存在,或者如果 target 未命名目录,则应为错误。 cp 实用程序应将每个 source_file ... 的内容复制到由 target 串联命名的目标路径,如果 target 不以 结尾,则为单个字符,以及 source_file 的最后一个组成部分。

本质上,您需要cp source-file destination-filecp source-file pre-existing-directory

为了达到你想要的目的,mkdir ~/bin或者mkdir ~/cmd然后 cp ~/link1/istio-1.12.2/bin/istioctl ~/bin。听起来您可能已将 $HOME 目录添加到您的 PATH 中。这是合法的,但不太常见。更常见的是将~/bin~/cmd目录添加到您的 PATH 中。确保您已添加目录到您的 PATH 才能成功。

相关内容