当前位置: 首页>>技术教程>>正文


`rename` 命令来自哪里?

, ,

问题描述

rename命令来自哪里?

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

最佳答案

令人惊讶的是,它来自 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

次佳答案

您可能会发现它是由 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

FWIW file-renamerename 包提供,而原始 prenameperl 本身提供。来自 apt-cache show rename

\\n

This package provides both a perl interface for renaming files \\n (File::Rename) and a command line tool ‘rename’ which is intended to \\n replace the version currently supplied by the perl package.

\\n

好像这还不够混乱,您可能还会遇到 util-linux 包中的另一个 rename – 请参阅 What’s with all the renames?

第三种答案

如果我们谈论的是 /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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13879.html,未经允许,请勿转载。