web-dev-qa-db-fra.com

D'où vient la commande `rename`?

D'où vient la commande rename?

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

É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
20
Pilot6

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 renamename__, alors que l’original prenameest fourni par Perlname__. 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 renamedu paquet util-linux - voir Qu'est-ce qui se passe avec tous les renommés?

12
steeldriver

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
7
Sergiy Kolodyazhnyy