覆盖 ~/bin 文件夹

dsg*_*dsg 3 file-recovery

不知何故,我不小心覆盖了我的~/bin.

我输入了命令: $ cp /home/dsg/Downloads/sbt-launch-0.7.4.jar ~/bin

我试图将文件复制到我的bin文件夹中,但覆盖了该文件夹。

现在:

$ cd ~/bin
bash: cd: /home/dsg/bin: Not a directory
Run Code Online (Sandbox Code Playgroud)

和:

$ diff /home/dsg/Downloads/sbt-launch-0.7.4.jar ~/bin
Run Code Online (Sandbox Code Playgroud)

显示没有差异。

我该怎么办?

Maj*_*nko 6

当您使用您使用的命令复制文件时:

$ cp /home/dsg/Downloads/sbt-launch-0.7.4.jar ~/bin
Run Code Online (Sandbox Code Playgroud)

不同的事情发生取决于目标是什么。

1) ~/bin 是一个目录

该文件将被复制到 ~/bin 目录中,并保留文件的原始名称。

2) ~/bin 是一个普通文件

文件 ~/bin 将被源文件覆盖。

3) ~/bin 不存在

源文件将被复制到创建新文件的目标名称。

默认情况下 ~/bin 目录不存在,因此除非您在过去某个时间创建了一个名为 ~/bin 的目录,否则选项 3 将发生。如果存在 ~/bin ,那么cp要覆盖它的命令必须是常规文件而不是目录。

您应该删除 ~/bin 文件并创建一个目录:

$ rm ~/bin
$ mkdir ~/bin
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用之前使用的相同命令将 jar 文件复制到其中。

(感谢 @grawity 和 @garyjohn 对此答案所基于的问题的评论。)