Откуда взялась команда «rename»?

17

Откуда приходит команда rename ?

[email protected]> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
    
задан guettli 19.01.2017 в 14:32
источник

3 ответа

20

Удивительно, но это происходит из пакета 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
    
ответ дан Pilot6 19.01.2017 в 14:37
12

Вероятно, вы обнаружите, что это символическая ссылка, которой управляет механизм 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-rename предоставляется пакетом rename , тогда как исходный prename предоставляется самим perl . От apt-cache show rename :

  

Этот пакет предоставляет как Perl-интерфейс для переименования файлов   (File :: Rename) и инструмент командной строки 'rename', который предназначен для   замените версию, поставляемую в настоящее время пакетом perl.

Как будто это уже не слишком запутывало, вы также можете встретить еще один rename из пакета util-linux - см. Что со всеми переименованиями?

    
ответ дан steeldriver 19.01.2017 в 14:48
7

Если мы говорим о /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 и ее производных rename является встроенной командой оболочки.

$ echo $SHELL
/bin/mksh

$ type rename
rename is a shell builtin
    
ответ дан Sergiy Kolodyazhnyy 19.01.2017 в 14:42