Cosa succede con tutti i nomi: nome, rinomina, rinomina file?


24

Sul mio sistema Debian (bene, il mio sistema LMDE, ma abbastanza vicino), ho almeno 3 renameprogrammi diversi :

  • /usr/local/bin/rename: Questa è una sceneggiatura in Perl, scritta da Tom Christiansen. Stranamente, non riesco a trovare quale pacchetto lo abbia installato:

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
    
  • /usr/bin/prename: un altro script perl, scritto da Robin Barker, questo fa parte del perlpacchetto:

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
  • /usr/bin/file-rename: ancora un altro script Perl, nessuna chiara informazione sull'autore ma sono menzionati sia un Larry (presumibilmente Wall) che un Robin (presumibilmente Barker). Questo è installato dal renamepacchetto ed è anche collegato a /usr/bin/rename:

    $ dpkg -S /usr/bin/file-rename
    rename: /usr/bin/file-rename

Ho anche rename.uldal util-linuxma ignoriamo che uno per ora. Qual è la differenza tra questi 3 script Perl? Tutti sembrano avere la stessa pagina man, man rename, man file-renamee man prenametutti mi danno la stessa pagina.

Potrei passare attraverso gli script stessi e provare a capire le differenze, ma questo non è banale e spero che qualcuno sappia quali caratteristiche hanno ognuna delle quali gli altri no. Punti bonus per spiegare perché il mondo Debian ha bisogno di tre script per rinominare Perl separati.


È peggio di così! RHEL spedisce un binario completamente diverso come parte del loro util-linux-ngpacchetto. % file = rename / usr / bin / rename: eseguibile LSB a 64 bit ELF, x86-64, versione 1 (SYSV), ...
thrig

@thrig Ho convertito la tua risposta in un commento poiché in realtà non stava rispondendo alla domanda (qual è la differenza tra questi script e perché ci sono così tante versioni di perl). Stai parlando del renameda util-linuxcui si trova rename.ulsu Debian e renamesui sistemi RedHat. Lo cito nel penultimo paragrafo della mia domanda.
terdon

cosa update-alternatives --display renameti mostra? Mi chiedo se fa parte di un'alternativa post-installata.
Jeff Schaller

@JeffSchaller no, viene da Unicode :: Tussle . Il suo autore (tchrist) è attivo su SE e me lo ha spiegato in chat.
terdon

4
Correlato . Per la cronaca, lo script di rinomina con il mio nome sopra menzionato supporta alcune opzioni utili a me come la riscrittura dei target dei link simbolici anziché i nomi dei percorsi corretti, la lettura dell'elenco dei nomi dalle pipe e dei nomi con terminazione null in tale elenco, oltre alla " normale " -ve -iopzioni. È un vecchio, vecchio, vecchio script senza adeguata documentazione al di fuori del suo messaggio di utilizzo, ma è un cavallo di battaglia standard per la riscrittura di file di massa . È forse uno dei due o tre script che voglio sempre con me, non importa dove vada.
tchrist,

Risposte:


16

Non sono sicuro se questo dovrebbe essere un commento, ma è solo una risposta parziale -

http://lists.alioth.debian.org/pipermail/perl-maintainers/2014-February/004113.html

ha quelli che sembrano essere i semi del pasticcio. In particolare:

Riassumendo: per molti anni il pacchetto perl ha fornito / usr / bin / rename, un'utilità stanalone implementata in perl. Il problema è che non vogliamo più fornire l'utilità dal pacchetto perl perché è stata aggiunta localmente all'interno di debian / e non viene mantenuta. Una versione mantenuta è disponibile come pacchetto separato, libfile-rename-perl.

Quanto libfile-rename-perlsopra è ora sostituito da rename:

$ apt-cache show rename | head
Package: rename
Version: 0.20-3
Installed-Size: 69
Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
Architecture: all
Replaces: libfile-rename-perl
Provides: libfile-rename-perl
Depends: perl
Conflicts: libfile-rename-perl
Description-en: Perl extension for renaming multiple files

Quindi, Perl ha il suo renameche non è gestito da Debian e fornisce /usr/bin/prename. Gli sviluppatori Debian mantengono un renamepacchetto (apparentemente precedentemente noto come libfile-rename-perl) che è il pacchetto che fornisce /usr/bin/rename: un collegamento simbolico al /etc/alternatives/renamequale esso stesso è un collegamento simbolico allo /usr/bin/file-renamescript.

La sceneggiatura di Tom Christiansen è in bundle con il Unicode::Tusslemodulo di Perl . Probabilmente l'hai installato ed è quello che è stato fornito /usr/local/bin/rename.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.