¿De dónde renameviene el comando?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
prename
¿De dónde renameviene el comando?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
prename
Respuestas:
Sorprendentemente, proviene del renamepaquete.
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
dpkg -Sno sigue el enlace simbólico? ¿Error o característica?
dpkges el trabajo. dpkgsolo trata con paquetes instalados. Uso update-alternatives --query rename , le mostrará la ruta de enlace resuelta
dpkg/ dpkg-queryofreciera esta información convenientemente. Sin embargo, no creo que dpkg -Sdeba eliminar silenciosamente los enlaces simbólicos hasta que encuentre un archivo de paquete. dpkg -S foose supone que no encuentra el comando foo, encuentra el paquete que instaló el archivo foo y es más útil cuando se invoca con la ruta absoluta de un archivo. Sería bueno si se dpkg -S /usr/bin/renameexplicara por qué ningún paquete proporciona ese enlace simbólico, pero creo que aún debería decir la verdad que ningún paquete lo hace.
Probablemente encontrará que es un enlace simbólico administrado por el update-alternativesmecanismo:
$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29 2016 /usr/bin/rename -> /etc/alternatives/rename
Puede ver las implementaciones opcionales usando
$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename
y puede elegir entre implementaciones usando
update-alternatives --config rename
FWIW file-rename proporcionarename , mientras que el original prenamese proporciona perlsolo. De apt-cache show rename:
Este paquete proporciona una interfaz perl para cambiar el nombre de los archivos (File :: Rename) y una herramienta de línea de comando 'renombrar' que está destinada a reemplazar la versión suministrada actualmente por el paquete perl.
Como si esto ya no fuera lo suficientemente confuso, también puede encontrar otro más renamedesde elutil-linux paquete - ver ¿Qué pasa con todos los cambios de nombre?
Si estamos hablando /usr/bin/rename, que es un script perl bastante ingenioso, entonces el renamecomando pertenece a su propio paquete 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
En el caso de Korn shell y sus derivados, renamees un comando incorporado de shell.
$ echo $SHELL
/bin/mksh
$ type rename
rename is a shell builtin
renamecomando, pero renameno solo se menciona /usr/bin/rename, como puede ver en mi respuesta. Los usuarios que tienen shells ksh o mksh pueden no ser conscientes de eso. Cuando comencé personalmente mksh, estaba muy desconcertado cuando renameno aceptaba la expresión regular, hasta que me di cuenta de que eran dos cosas diferentes. Además, no tome mis palabras "Si estamos hablando de x" literalmente, considérelo como una forma de decir "En caso de"
renameembargo, el que viene con Fedora es diferente. Parece ser un programa compilado y no es tan poderoso como elrenameque viene con Ubuntu. Así que tenga cuidado cuando use scripts en una distribución de Linux diferente.