`Rename` komutu nereden geliyor?


17

Nerede gelmez renamekomut geliyor?

user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename

3
Yine renamede Fedora ile birlikte gelenler farklı. Derlenmiş bir program gibi görünüyor ve renameUbuntu ile birlikte gelen kadar güçlü değil . Farklı bir Linux dağıtımında komut dosyaları kullanırken dikkatli olun.
Martin Ueding

@MartinUeding burada bir yorum bırakabilir misiniz: askubuntu.com/questions/873661/…
guettli

Yanıtlar:


20

Şaşırtıcı bir şekilde, renamepaketten geliyor .

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

1
dpkg -SSymlink'i neden takip etmiyor ? Hata veya özellik?
guettli

5
@guettli özelliği : "Bu komut sürdürücü komut dosyaları tarafından oluşturulan ekstra dosyaları veya alternatifleri listeler."
muru

2
Symlink, paketin kendisine ait değildir.
Pilot6

2
@guettli çünkü bu bir dpkgiş değil . dpkgsadece kurulu paketlerle ilgilenir. Kullanın update-alternatives --query rename , size çözümlenmiş bağlantı yolunu gösterecektir
Sergiy Kolodyazhnyy

5
@guettli Bkz. Debian Bug # 198220 . dpkg/ Eğer dpkg-querybu bilgileri uygun bir şekilde sunulan kullanışlı olacaktır . Ancak, bir paket dosyası bulana kadar sembolik sessizce dereference dpkg -Sgerektiğini düşünmüyorum . komutu bulması gerekmiyorsa , dosyayı yükleyen paketi bulur ve bir dosyanın mutlak yoluyla çağrıldığında en kullanışlıdır. Neden hiçbir paketin bu sembolik bağlantıyı sağladığını açıklamak güzel olurdu , ama yine de hiçbir paketin yapmadığı gerçeğini söylemeliyiz. dpkg -S foofoo foodpkg -S /usr/bin/rename
Eliah Kagan

12

Muhtemelen bu update-alternativesmekanizma tarafından yönetilen sembolik bir bağlantı olduğunu göreceksiniz :

$ ls -l $(which rename)
lrwxrwxrwx 1 root root 24 Jun 29  2016 /usr/bin/rename -> /etc/alternatives/rename

İsteğe bağlı uygulamaları aşağıdakileri kullanarak görebilirsiniz:

$ update-alternatives --list rename
/usr/bin/file-rename
/usr/bin/prename

ve kullanarak uygulamalar arasında seçim yapabilir

update-alternatives --config rename

FWIW paket file-renametarafından renamesağlanırken, orijinal kendisi prenametarafından sağlanır perl. Gönderen apt-cache show rename:

Bu paket, dosyaları yeniden adlandırmak için bir perl arabirimi (Dosya :: Yeniden Adlandır) ve perl paketi tarafından sağlanan sürümün yerini alması amaçlanan bir komut satırı aracı 'yeniden adlandır' sağlar.

Bu olmasaydı zaten yeterince kafa karıştırıcı olarak ayrıca bir başka rastlamak olabilir renamegelen util-linuxpaketin - bkz tüm adlandırmalar ne?


Rename.ul neden yeniden adlandırma alternatifi olarak sunulmuyor?
Random832

@ Random832 Komut satırı yardımcı programları için, alternatiflerin birbirleri için sözdizimi uyumlu değiştirmeler olması gerekir (en azından bazı ortak işlevler için); rename.ul ve prename uygun değil.
zwol

7

Eğer bahsediyorsak /usr/bin/rename, bu oldukça şık bir perl betiğidir, o zaman renamekomut kendi ayrı paketine aittir.

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

Korn kabuğu ve türevleri durumunda rename, bir kabuk yerleşik komutudur.

$ echo $SHELL
/bin/mksh

$ type rename
rename is a shell builtin

Neden "/ usr / bin / rename hakkında konuşuyorsak?" Soru mutlak yolu içerir.
guettli

1
@guettli Soru renamekomuta soruyor , ancak cevabımda gördüğünüz gibi renamesadece atıfta bulunulmuyor /usr/bin/rename. Ksh veya mksh mermisi olan kullanıcılar bunun farkında olmayabilir. Şahsen mkshişe başladığımda rename, normal ifadeyi kabul etmediğimde, bunların iki farklı şey olduğunu anlayana kadar çok şaşırmıştım . Ayrıca, sözlerimi almayın "Eğer x hakkında konuşuyorsak", "Durumda" demenin bir yolu olarak düşünün
Sergiy Kolodyazhnyy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.