Nerede gelmez rename
komut geliyor?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
prename
Nerede gelmez rename
komut geliyor?
user@host> dpkg -S /usr/bin/rename
dpkg-query: no path found matching pattern /usr/bin/rename
prename
Yanıtlar:
Şaşırtıcı bir şekilde, rename
paketten 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
dpkg -S
Symlink'i neden takip etmiyor ? Hata veya özellik?
dpkg
iş değil . dpkg
sadece kurulu paketlerle ilgilenir. Kullanın update-alternatives --query rename
, size çözümlenmiş bağlantı yolunu gösterecektir
dpkg
/ Eğer dpkg-query
bu bilgileri uygun bir şekilde sunulan kullanışlı olacaktır . Ancak, bir paket dosyası bulana kadar sembolik sessizce dereference dpkg -S
gerektiğ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 foo
foo
foo
dpkg -S /usr/bin/rename
Muhtemelen bu update-alternatives
mekanizma 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-rename
tarafından rename
sağlanırken, orijinal kendisi prename
tarafı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 rename
gelen util-linux
paketin - bkz tüm adlandırmalar ne?
Eğer bahsediyorsak /usr/bin/rename
, bu oldukça şık bir perl betiğidir, o zaman rename
komut 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
rename
komuta soruyor , ancak cevabımda gördüğünüz gibi rename
sadece atıfta bulunulmuyor /usr/bin/rename
. Ksh veya mksh mermisi olan kullanıcılar bunun farkında olmayabilir. Şahsen mksh
iş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
rename
de Fedora ile birlikte gelenler farklı. Derlenmiş bir program gibi görünüyor verename
Ubuntu ile birlikte gelen kadar güçlü değil . Farklı bir Linux dağıtımında komut dosyaları kullanırken dikkatli olun.