`rename` 命令来自哪里?

`rename` 命令来自哪里?

命令从哪里来rename

user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename

答案1

令人惊奇的是,它是从rename包裹里出来的。

pilot6@Pilot6:~$ ls -l /usr/bin/rename
lrwxrwxrwx 1 root root 24 окт 17  2013 /usr/bin/rename -> /etc/alternatives/rename
pilot6@Pilot6:~$ ls -l /etc/alternatives/rename
lrwxrwxrwx 1 root root 20 апр 29  2016 /etc/alternatives/rename -> /usr/bin/file-rename
pilot6@Pilot6:~$ dpkg -S /usr/bin/file-rename
rename: /usr/bin/file-rename

答案2

您可能会发现它是一个由该update-alternatives机制管理的符号链接:

$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29  2016 /usr/bin/rename -> /etc/alternatives/rename

您可以使用以下方式查看可选的实现

$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename

并可以选择使用

update-alternatives --config rename

FWIWfile-rename由软件包提供rename,而原始版本prename由软件包本身提供perl。来自apt-cache show rename

该软件包提供了用于重命名文件的 perl 接口(File::Rename)和命令行工具“rename”,旨在替换 perl 软件包当前提供的版本。

如果这还不够令人困惑的话,你还可能renameutil-linux包装中看到另一个——参见这些重命名有什么意义吗?

答案3

如果我们谈论的是/usr/bin/rename,这是一个非常漂亮的 perl 脚本,那么rename命令就属于它自己单独的包。

rename:
  Installed: 0.20-4
  Candidate: 0.20-4
  Version table:
 *** 0.20-4 500
        500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        500 http://archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status

对于 Korn shell 及其衍生产品来说,rename是 shell 的内置命令。

$ echo $SHELL
/bin/mksh

$ type rename
rename is a shell builtin

相关内容