为什么会有两个软件包使用相同的名称提供不同的命令(如果不是偶然的话)?
这并不稀奇。作者通常会选择他们想到的最简单的命令名称,因此,如果两个人编写一个命令来重命名文件,则他们俩都可能会为其命名rename
。这是Debian Alternatives系统背后的原因之一-它允许提供相似名称命令的软件包共存,并允许一个软件包替换另一个。例如,有多个AWK实现- ,mawk
,original-awk
(gawk
尽管他们都称自己为AWK)。使用替代系统,您可以同时安装它们,并方便地在其中任何一个之间进行默认切换awk
。
在这种特定情况下,prename
来自Perl源代码。Debian软件包的维护者最初rename
是Perl,然后切换到替代系统,以适应rename
from util-linux
。然后有人rename
在File-Rename Perl模块中编写了Perl的改进版本,然后将其添加为另一个替代方案。但这还不是唯一用于重命名文件的Perl模块。
那岂不是相当简单的perl
包或者包括“全” rename
命令或者不包括任何rename
在所有的命令?为什么至少在Ubuntu 17.04之前,这种看似不完全的分裂会持续下去?
有关这种情况的演变,请参见Debian错误#735134。Debian维护人员通常在做一些大胆的事情时喜欢使用至少一个发行版,例如用另一个发行版代替一个工作指令。prename
留给杰西(Jessie)留,现在因破坏而被移走。此外,rename
由于rename.ul
太不兼容了,因此看起来将不再处于替代系统之内。rename
会公正的file-rename
。
由于Ubuntu通常会从Debian中获取打包更改rename
,因此Ubuntu迟早可能会在18.04中获取Debian中发生的情况。17.10似乎为时已晚。
这些命令之间到底有什么区别?
从根本上说,无论是prename
和file-rename
运行Perl表达式来重命名文件。file-rename
只是积极维护并支持更多选择。rename
与util-linux
作品完全不同,具有自己的模式规则。
man prename
17.10开始,看起来17.10实际上file-rename
代替了prename
。与18.04相同。