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
,或者机器可能就是那样。
我正在关注 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
,或者机器可能就是那样。