De onde vem o comando 'rename'?

17

De onde vem o comando rename ?

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

3 respostas

20

Surpreendentemente, ele vem do pacote 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
    
por Pilot6 19.01.2017 / 15:37
12

Você provavelmente descobrirá que é um link simbólico gerenciado pelo mecanismo update-alternatives :

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

Você pode ver as implementações opcionais usando

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

e pode escolher entre implementações usando

update-alternatives --config rename

FWIW file-rename é fornecido pelo pacote rename , enquanto o prename original é fornecido pelo próprio perl . De apt-cache show rename :

  

Este pacote fornece uma interface perl para renomear arquivos   (File :: Rename) e uma ferramenta de linha de comando 'rename' que se destina a   substitua a versão atualmente fornecida pelo pacote perl.

Como se isso já não fosse suficientemente confuso, você também pode encontrar outro rename do pacote util-linux - consulte O que há com todas as renomeações?

    
por steeldriver 19.01.2017 / 15:48
7

Se estivermos falando de /usr/bin/rename , que é um script perl bastante interessante, o comando rename pertence ao seu próprio pacote separado.

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

No caso do shell Korn e suas derivadas, rename é um comando interno do shell.

$ echo $SHELL
/bin/mksh

$ type rename
rename is a shell builtin
    
por Sergiy Kolodyazhnyy 19.01.2017 / 15:42