Jaka jest różnica między różnymi poleceniami „zmiany nazwy”?

13

Od wersji Ubuntu 14.04 istnieją co najmniej trzy renamepolecenia:

  1. renamedostarczone przez util-linuxpakiet, zobacz man rename.ul
  2. renamedostarczone przez perlpakiet, zobacz prename man
  3. renamedostarczone przez renamepakiet, zobacz man file-rename

Pytania:

  • Jakie dokładnie są różnice między tymi poleceniami?
  • Dlaczego jest wiele pakietów udostępniających różne polecenia o tej samej nazwie - przypuszczam, że to nie przypadek, czy tak?
  • Czy nie byłoby raczej łatwe, aby perlpakiet zawierał polecenie „pełne” renamelub nie zawierał żadnego renamepolecenia? Dlaczego ten pozornie niepełny podział utrzymuje się przynajmniej do wersji Ubuntu 17.04?

To pytanie zostało już zadane w U&L (jak się później dowiedziałem):
Co to za wszystkie nazwy: prename, rename, file-rename?

deser
źródło

Odpowiedzi:

8

Dlaczego są dwa pakiety zapewniające różne polecenia o tej samej nazwie (jeśli nie przez przypadek)?

To nie jest niezwykłe. Autorzy zazwyczaj wybierają najprostszą nazwę polecenia, o której myślą, więc jeśli dwie osoby napiszą polecenie zmiany nazwy plików, prawdopodobnie obie go nadadzą rename. To jeden z powodów, dla których powstał system Debian Alternatives - pozwala on na współistnienie pakietów udostępniających polecenia o podobnej nazwie, a także na zastępowanie jednego pakietu innym. Na przykład, istnieje wiele implementacji awk - mawk, original-awk, gawk(choć wszystkie one odnoszą się do siebie jak awk). Dzięki systemowi alternatyw możesz zainstalować je wszystkie jednocześnie i wygodnie przełączać się między nimi jako domyślnymi awk.

W tym konkretnym przypadku prenamepochodzi z kodu źródłowego Perla. Opiekunowie pakietów Debiana pierwotnie byli renamePerlami, a następnie przełączyli się na system alternatyw, aby pomieścić renameod util-linux. Potem ktoś napisał ulepszoną wersję Perla renamew module Perl File-Rename , który został następnie dodany jako kolejna alternatywa. Ale to nawet nie jedyny moduł Perla do zmiany nazw plików.

Czy nie byłoby raczej łatwe, aby perlpakiet zawierał polecenie „pełne” renamelub nie zawierał żadnego renamepolecenia? Dlaczego ten pozornie niepełny podział utrzymuje się przynajmniej do wersji Ubuntu 17.04?

Zobacz błąd Debiana # 735134, aby dowiedzieć się, jak ta sytuacja ewoluowała. Opiekunowie Debiana zazwyczaj wolą przejść przynajmniej jedną wersję, gdy robią coś drastycznego, na przykład zastępując działające polecenie innym. prenamebył trzymany w pobliżu dla jessie, a teraz został usunięty dla buster. Ponadto wygląda na to, że renamenie będzie już objęty systemem alternatyw, ponieważ rename.uljest zbyt niezgodny. renamebędzie sprawiedliwy file-rename.

Ponieważ Ubuntu zazwyczaj pobiera zmiany w pakiecie z Debiana, to, co dzieje się renamew Debianie, zostanie wcześniej lub później przez Ubuntu, prawdopodobnie w 18.04. Wydaje się, że jest już za późno na 17.10.

Jakie dokładnie są różnice między tymi poleceniami?

Zasadniczo oba prenamei file-renameuruchomić Perl wyrażeń do plików przemianowania. file-renamejest po prostu aktywnie utrzymywany i obsługuje więcej opcji. renamez util-linuxdziała zupełnie inaczej, ma swoje własne zasady dotyczące wzorów.

muru
źródło
Od man prename17.10 wygląda na to, że 17.10 faktycznie podniósł file-renamezamiast prename. To samo dla 18.04 .
wjandrea,