D'où vient la commande rename
?
user@Host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
Étonnamment, cela provient du paquetage 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
Vous constaterez probablement qu'il s'agit d'un lien symbolique géré par le mécanisme update-alternatives
:
$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29 2016 /usr/bin/rename -> /etc/alternatives/rename
Vous pouvez voir les implémentations optionnelles utilisant
$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename
et peut choisir entre des implémentations en utilisant
update-alternatives --config rename
FWIW file-rename
est fourni par le package rename
name__, alors que l’original prename
est fourni par Perl
name__. De apt-cache show rename
:
Ce paquet fournit à la fois une interface Perl pour renommer des fichiers (File :: Rename) et un outil de ligne de commande 'rename' destiné à remplacer la version actuellement fournie par le paquet Perl.
Comme si ce n’était pas déjà assez déroutant, vous pouvez également rencontrer encore un autre rename
du paquet util-linux
- voir Qu'est-ce qui se passe avec tous les renommés?
Si nous parlons de /usr/bin/rename
, qui est un joli script Perl, alors la commande rename
appartient à son propre paquet séparé.
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
Dans le cas de Korn Shell et de ses dérivés, rename
est une commande intégrée du shell.
$ echo $Shell
/bin/mksh
$ type rename
rename is a Shell builtin