it-swarm.com.de

Woher kommt der Befehl "Umbenennen"?

Woher kommt der Befehl rename?

[email protected]> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
17
guettli

Überraschenderweise stammt es aus dem Paket rename.

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

Sie werden wahrscheinlich feststellen, dass es sich um einen symbolischen Link handelt, der vom Mechanismus update-alternatives verwaltet wird:

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

Sie können die optionalen Implementierungen mit sehen

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

und kann zwischen Implementierungen mit wählen

update-alternatives --config rename

FWIW file-rename wird vom Paket rename bereitgestellt, während das ursprüngliche prename von Perl selbst bereitgestellt wird. Aus apt-cache show rename:

Dieses Paket enthält sowohl eine Perl-Schnittstelle zum Umbenennen von Dateien (File :: Rename) als auch ein Befehlszeilentool 'rename', das die derzeit vom Perl-Paket bereitgestellte Version ersetzen soll.

Als ob dies nicht schon verwirrend genug wäre, könnten Sie auch noch auf ein anderes rename aus dem util-linux -Paket stoßen - siehe Was ist mit all den Umbenennungen?

12
steeldriver

Wenn es sich um /usr/bin/rename handelt, ein hübsches Perl-Skript, dann gehört der Befehl rename zu einem eigenen Paket.

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

Bei Korn Shell und seinen Derivaten ist rename ein in Shell integrierter Befehl.

$ echo $Shell
/bin/mksh

$ type rename
rename is a Shell builtin
7