gue*_*tli 17 command-line dpkg rename
哪里的rename命令是从哪里来的?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
Run Code Online (Sandbox Code Playgroud)
Pil*_*ot6 20
令人惊讶的是,它来自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
Run Code Online (Sandbox Code Playgroud)
ste*_*ver 12
你可能会发现它是一个由update-alternatives机制管理的符号链接:
$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29 2016 /usr/bin/rename -> /etc/alternatives/rename
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法查看可选实现
$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename
Run Code Online (Sandbox Code Playgroud)
并且可以使用
update-alternatives --config rename
Run Code Online (Sandbox Code Playgroud)
FWIWfile-rename由rename包提供,而原始文件prename由其perl自身提供。来自apt-cache show rename:
这个包提供了一个用于重命名文件的 perl 接口 (File::Rename) 和一个命令行工具“rename”,用于替换 perl 包当前提供的版本。
好像这还不够令人困惑,您可能还会rename从util-linux包中遇到另一个- 请参阅所有重命名是什么?
如果我们谈论的是/usr/bin/rename,这是一个非常漂亮的 perl 脚本,那么renamecommand 属于它自己的单独包。
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
Run Code Online (Sandbox Code Playgroud)
在 Korn shell 及其衍生产品的情况下,rename是一个 shell 内置命令。
$ echo $SHELL
/bin/mksh
$ type rename
rename is a shell builtin
Run Code Online (Sandbox Code Playgroud)