Warum unterscheidet sich das Umbenennungsprogramm unter Debian / Ubuntu von dem auf anderen Distributionen wie CentOS?

7

Unter CentOS verwendet der Befehl zum Umbenennen zwei einfache Zeichenfolgen fromund to.

rename from to file...

Unter Debian / Ubuntu wird ein regulärer Ausdruck im Perl-Stil verwendet.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

Warum unterscheidet sich dieses Dienstprogramm aufgrund der Verteilung? Gibt es eine Referenz für welche Distributionen oder standardmäßig für welche Versionen des Dienstprogramms?

Jacob Ritchie
quelle
1
Siehe auch unix.stackexchange.com/q/229230/117549
Jeff Schaller
Beantwortet Ihre Frage nicht, aber hier erfahren Sie, wie Sie die beiden Syntaxen verwenden .
Wildcard
@ JeffSchaller Danke! Sehr nützlich, obwohl ich immer noch gerne mehr darüber erfahren möchte, warum jede Distribution-Familie welche Version des Dienstprogramms verwendet.
Jacob Ritchie

Antworten:

13

Geschichte. Es gibt zwei historische Zeilen eines renameBefehls mit demselben Grundzweck, aber völlig unterschiedlicher Syntax und Funktionen:

  • Der renameBefehl im util-linux- Paket. Es erschien in Version 2.10e und das Programm ist vom 01.01.2000.
  • Ein Perl-Skript, das mit Perl als Beispielprogramm verteilt wurde. Das Debian-Changelog zeichnet auf, dass es im Juni 1999 zu Debian hinzugefügt wurde (das Programm selbst stammt aus mindestens 1992). Eine andere Version, die abwärtskompatibel ist, wird mit Unicode :: Tussle geliefert (ab Debian Jessie heißt es file-renameund ist im renamePaket enthalten ; einige andere Distributionen nennen es prename).

Einerseits ist util-linux ein Kernpaket, daher ist es mehr Standard als das Perl-Beispielskript, das nach Debians Laune enthalten war. Andererseits war das Perl-Skript zuerst in Debian. Bisher hat Debian beschlossen, die Kompatibilität mit früheren Debian-Versionen beizubehalten, anstatt sich an anderen Distributionen auszurichten. Von Debian abgeleitete Distributionen (Ubuntu, Mint, Elementary usw.) folgen in diesem Punkt eher Debian.

Andere Distributionen hatten keinen renameBefehl, als einer zu util-linux hinzugefügt wurde, daher enthalten sie natürlich die util-linux-Version.

Gilles 'SO - hör auf böse zu sein'
quelle
1
/usr/bin/renameist nicht Teil eines Pakets. Zumindest dpkg -S /usr/bin/renamegibt nichts zurück.
Faheem Mitha
1
@FaheemMitha Es handelt sich um einen Symlink zu/etc/alternatives/rename , der standardmäßig die Perl-Version verwendet (kann jedoch nach Wahl des Administrators stattdessen auf die Util-Linux-Version verweisen).
Gilles 'SO - hör auf böse zu sein'
1
@FaheemMitha Das liegt daran, dass / usr / bin / rename vom alternativen System von debian gesteuert wird. versuche es update-alternatives --display rename. Debian erlaubt dem lokalen Systemadministrator, zwischen Util-Linux oder Perl-Umbenennung (oder anderen, falls vorhanden) zu wählen
cas
hmmm, das ist seltsam. bietet auf meinem sidSystem util-linuxkeine Alternative für /usr/bin/rename. aber ein anderes Paket renametut, so dass die Entscheidungen sind /usr/bin/prenamevon perl (Priorität 60) oder /usr/bin/file-renameaus rename(Priorität 70). file-renamescheint eine aktualisierte / erweiterte Version von zu sein prename.
Cas
@cas file-renameist die Unicode :: Tussle-Version. Ich denke, der Grund dafür rename.ulist keine Alternative, renameweil es nicht kompatibel ist. Ein Administrator, der die Konsistenz zwischen Distributionen bevorzugt, kann den Link dennoch manuell ändern, auf den er verweist /usr/bin/rename.ul. Ich weiß nicht, ob dies Debian-Skripte beschädigen würde; Im Prinzip können Pakete laut Richtlinie auf die Perl-Version zählen, wenn sie davon abhängen perl, und Build-Skripte können auf die Perl-Version zählen, da das perlPaket für den Build unerlässlich ist.
Gilles 'SO - hör auf böse zu sein'