mv 混淆:我按照 socketxp 指南删除了 /usr/local/bin,但只是第一次

mv confusion: I deleted /usr/local/bin by following the socketxp guide, but only the first time around

我正在关注 SocketXP Agent Download & Setup,在第一步我被要求 运行 以下命令:

curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

随后出现了一些混乱,因为 bin- 文件夹现在似乎是一个可执行文件。结果是,我没有将 socketxp 插入 /usr/local/bin 文件夹,而是删除了整个文件夹并将其替换为 socketxp 文件,现在重命名为名为 bin 的文件.

但是,在重新创建文件夹后,我发现我可以运行将测试文件放入其中而不会出现问题

~touch test

~sudo mv test /usr/local/bin

所以在看到这个之后,我重新运行相同的socketxp安装命令,这次它工作正常。

我不知道最初的问题是什么,但我非常希望不再发生这种情况。我怀疑我缺少一些基本的 mv 知识。感谢任何可以为我解释导致问题的原因的提示和指示

我在西门子的 64 位 Linux SIMATIC 控制器上执行此操作,它 运行 是基于 Debian 的 OS。

在 Linux 中,您还可以使用 mv 重命名文件。为防止像您这样的错误,请始终在要将内容移入的路径末尾添加一个 /:

sudo mv test /usr/local/bin/

这会按照您的预期运行,并将文件 test 放入文件夹 /usr/local/bin.

正如@JohnBollinger 所述,如果您没有明确告诉它最后一个参数不是目录,那么预期的行为是 mv 将文件移动到现有文件夹中。

在您的情况下,可能是 /usr/local/bin 在您执行命令时根本不存在。在这种情况下,附加 / 的变体会发出一条错误消息。或者您不小心指定了选项 -T(可能用于其他命令或 copy-paste-mistake?)

I am asked to run the following command:

curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

接下来是一些混乱,因为 bin-文件夹现在 似乎是一个可执行文件。事实证明,而不是插入 socketxp进入/usr/local/bin文件夹,我居然全删了 文件夹并将其替换为 socketxp 文件,现在重命名为文件 称为 bin.

不可信。当 mv 命令中的目标路径是目录时,源文件将移动到该目录(除非被 command-line 选项覆盖)。这与您在后续实验中观察到的一致。

但是,如果只给出了一个源并且目标路径不存在(但其父目录存在)或指定了一个常规文件,则 mv 会将源重命名为目标。我们只能猜测实际发生了什么,但我的第一个猜测是 /usr/local/bin 最初并不存在。这可能是由于较早的错误引起的,例如当您真正想要 rm -rf /usr/local/bin/* 时执行 rm -rf /usr/local/bin,或者机器可能就是那样。