要在 Linux 上移动多个文件,可以使用:
mv -t DESTINATION file1 file2
而在 macOS 上则是
mv file1 file2 DESTINATION
为什么会有这样的差异呢?这是 Bash 与 Zsh 的问题,还是旧语法与新语法的问题,还是什么?
要在 Linux 上移动多个文件,可以使用:
mv -t DESTINATION file1 file2
而在 macOS 上则是
mv file1 file2 DESTINATION
为什么会有这样的差异呢?这是 Bash 与 Zsh 的问题,还是旧语法与新语法的问题,还是什么?
第一个示例
mv
使用GNU 扩展-t
(--target-directory
),并且具有特定的基本原理。您的第二个示例是标准 POSIX解决方案,适用于每个平台产品
mv
(包括使用 GNU 实现的那些系统mv
)。如果您使用的是第二个版本并且想要保证目标是已经存在的目录,请在其后缀为
/
. 要么mv
完全成功,要么因错误而失败。(如果没有尾随/
,如果目标不存在或不是目录,则将mv
仅充当重命名。)不,这与 shell(bash 与 zsh)无关,它只是
mv
. Linux 机器很可能拥有GNUmv
,因为 Linux 机器往往是使用 GNU 实用程序构建的。另一方面,MacOS 附带BSD实用程序。这意味着许多常见的命令行实用程序的行为有所不同,因为它们是设计用于执行相同操作但具有不同调整的不同实现。因此,不是较旧的与较新的,只是设计用于执行相同操作的工具,但由做出不同设计选择的不同人编写。这与汽车的想法是一样的:所有汽车都有一种转向、刹车、加速等方式。然而,不同的汽车制造商会添加不同的东西(空调、收音机、加热座椅或其他东西),这些东西的设计方式也不同。它们仍然都是汽车,就像 GNU 和 BSD
mv
仍然是mv
汽车一样,但除了基本功能之外,它们还有自己的怪癖和特性。请注意,该标准
mv file1 file2 dir/
适用于 Linuxmv
和 Mac。如果您不确定正在使用什么实现,只需使用mv file1 file2 dir/
语法,它将适用于任何mv
.