De onde vem o comando `rename`?

17

De onde vem o renamecomando?

user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
guettli
fonte
3
O renameque acompanha o Fedora é diferente, no entanto. Parece ser um programa compilado e não é tão poderoso quanto o renameque acompanha o Ubuntu. Portanto, tenha cuidado ao usar scripts em uma distribuição Linux diferente.
Martin Ueding
@MartinUeding você pode deixar um comentário aqui: askubuntu.com/questions/873661/…
guettli
Essa resposta diz que éprename
Gallifreyan

Respostas:

20

Surpreendentemente, vem do renamepacote.

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
Pilot6
fonte
1
Por que dpkg -Snão segue o link simbólico? Bug ou recurso?
guettli
5
recurso @ guettli : "Este comando não listará arquivos extras criados por scripts de mantenedor, nem listará alternativas."
Muru
2
O link simbólico não pertence ao próprio pacote.
precisa saber é o seguinte
2
@ guettli porque não dpkgé trabalho. dpkglida apenas com pacotes instalados. Use update-alternatives --query rename , ele irá mostrar-lhe o caminho do link resolvido
Sergiy Kolodyazhnyy
5
@guettli Veja Bug Debian # 198220 . Seria útil se dpkg/ dpkg-queryoferecesse essas informações convenientemente. No entanto, não acho que dpkg -Sdeveria desreferir silenciosamente os links simbólicos até encontrar um arquivo de pacote. dpkg -S foonão deve encontrar o comando foo, ele encontra o pacote que instalou o arquivo foo e é mais útil quando chamado com o caminho absoluto de um arquivo. Seria bom se dpkg -S /usr/bin/renameexplicado por que nenhum pacote fornece esse link simbólico, mas acho que ainda deve dizer a verdade que nenhum pacote fornece.
Eliah Kagan
12

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

$ 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

O FWIW file-renameé fornecido pelo renamepacote, enquanto o original prenameé fornecido por perlele mesmo. 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 substituir a versão atualmente fornecida pelo pacote perl.

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

chave de aço
fonte
Por que o rename.ul não está disponível como uma alternativa de renomeação?
precisa saber é o seguinte
@ Random832 Para utilitários de linha de comando, as alternativas devem ser substituições compatíveis com sintaxe umas das outras (pelo menos para algum núcleo comum de funcionalidade); rename.ul e prename não se qualificam.
Zwol
7

Se estamos falando /usr/bin/rename, que é um script perl bastante bacana, o renamecomando 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 seus derivados, renameé um comando interno do shell .

$ echo $SHELL
/bin/mksh

$ type rename
rename is a shell builtin
Sergiy Kolodyazhnyy
fonte
Por que "se estamos falando sobre / usr / bin / rename"? A pergunta contém o caminho absoluto.
guettli
1
@ guettli A pergunta é sobre renamecomando, mas renamenão é apenas referida /usr/bin/rename, como você vê na minha resposta. Os usuários que possuem shells ksh ou mksh podem não estar cientes disso. Quando eu comecei pessoalmente mksh, fiquei muito perplexo quando renamenão estava aceitando a expressão regular, até perceber que eram duas coisas diferentes. Além disso, não tome minhas palavras "Se estamos falando de x", literalmente, considerá-lo como uma maneira de dizer "Em caso de"
Sergiy Kolodyazhnyy