Woher kommt der rename
Befehl?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
command-line
dpkg
rename
guettli
quelle
quelle
rename
, was mit Fedora geliefert wird, ist jedoch ein anderes. Es scheint ein kompiliertes Programm zu sein und es istrename
bei weitem nicht so leistungsfähig wie das , das mit Ubuntu geliefert wird. Seien Sie also vorsichtig, wenn Sie Skripte auf einer anderen Linux-Distribution verwenden.prename
Antworten:
Überraschenderweise kommt es aus der
rename
Verpackung.quelle
dpkg -S
folgt der Symlink nicht? Fehler oder Feature?dpkg
der Job ist.dpkg
befasst sich nur mit installierten Paketen. Verwenden Sieupdate-alternatives --query rename
, es wird Ihnen den aufgelösten Link-Pfad zeigendpkg
/dpkg-query
diese Info bequem angeboten würde. Ich denke jedoch nicht, dass Symlinks stillschweigend dereferenziert werdendpkg -S
sollten, bis eine Paketdatei gefunden wird. soll den Befehl nicht finden , findet das Paket, das die Datei installiert hat , und ist am nützlichsten, wenn es mit dem absoluten Pfad einer Datei aufgerufen wird. Es wäre schön, wenn erklärt würde , warum kein Paket diesen Symlink enthält, aber ich denke, es sollte trotzdem die Wahrheit sagen, dass kein Paket dies tut.dpkg -S foo
foo
foo
dpkg -S /usr/bin/rename
Sie werden wahrscheinlich feststellen, dass es sich um einen symbolischen Link handelt, der vom
update-alternatives
Mechanismus verwaltet wird :Sie können die optionalen Implementierungen mit sehen
und kann zwischen Implementierungen mit wählen
FWIW
file-rename
wird vomrename
Paket bereitgestellt, während das Originalprename
vonperl
sich aus bereitgestellt wird . Vonapt-cache show rename
:Als ob dies nicht schon verwirrend genug wäre, könnten Sie auch noch einen anderen
rename
aus demutil-linux
Paket finden - siehe Was ist mit all den Umbenennungen?quelle
Wenn es sich um
/usr/bin/rename
ein hübsches Perl-Skript handelt,rename
gehört der Befehl zu einem separaten Paket.Bei der Korn-Shell und ihren Derivaten
rename
handelt es sich um einen in die Shell integrierten Befehl.quelle
rename
Kommando,rename
wird aber nicht nur angesprochen/usr/bin/rename
, wie Sie in meiner Antwort sehen. Benutzer mit ksh- oder mksh-Shells sind sich dessen möglicherweise nicht bewusst. Als ich persönlich anfingmksh
, war ich sehr verblüfft, als ichrename
den regulären Ausdruck nicht akzeptierte, bis mir klar wurde, dass dies zwei verschiedene Dinge waren. Nehmen Sie meine Worte "Wenn wir über x sprechen" auch nicht wörtlich, betrachten Sie es als eine Art zu sagen "Im Falle von"