Belirli bir yazılımın yolunu nasıl bilebilirim?


13

Bağlam: Bir uygulamayı giriş yaptığımda otomatik olarak başlatmaya çalışıyorum. Bunun için pathuygulama için seçmeliyim.

resim açıklamasını buraya girin

İşte zaten baktığım yollar:

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

Bu yardımcı olabilir, bulmaya çalıştığım uygulamanın adı " ScreenCloud " ve Ubuntu Yazılım Merkezi'nden indirdim.

Ama bulamıyorum, belirli bir yazılımın nereye kurulduğunu bilmemin bir yolu var mı? Çünkü bunun için bulsam bile, gelecekte aynı sorunu yaşamaktan kaçınmak istiyorum.


2
Komut satırına screencloud yazarsanız çalışmaz mı?
Graham

Ubuntu apt depolarının hiçbirinde bulamadığım için ek mağazadan veya Ubuntu yazılım merkezinden aldınız mı?
mchid

2
mchid Ben OP bağlantısını değil, yorumunuzu adres değildi: "Ubuntu apt depolarının hiçbirinde bulamıyorum " Screencloud .debpaketinden kurulabilir ama PPA eklemeniz gerekir.
WinEunuuchs2Unix

1
@mchid komut değiştirildi biliyorduk screencloud.shiçin screencloudve dışarı taşındı şüpheli /opt. Cevabım bu kısmı nasıl gösteriyordu typeve whichbulmak olmaz screencloudama locateolur.
WinEunuuchs2Unix

1
@ WinEunuuchs2Unix Doğru. screencloud.shaslında hala var ama dosya bir komut dosyası ve değil screencloudgerçeğinden farklı nasıl emin değilim. Bu uygulamaya gerçekten aşina değilim. Altında a , a ve aynı zamanda bir takip numarası gibi bir numara var. .shscreencloud/usr/bin/screencloudscreencloud.shscreencloud-gimp
mchid

Yanıtlar:


16

Yürütülebilir bir dosyanın yolunu bulma

En iyi yol

  • type executable

Nasıl daha iyi olduğu hakkında daha fazla bilgi edinmek için bu soruya göz atın type. (Teşekkürler, yorumlar!)

Diğer yollar

  • whereis executable
  • which executable

Bu komutlar yalnızca PATH değişkeninde ( echo $PATH) arama yapar , bu nedenle bazı durumlarda geçerli değildir (yerleşik işlevler, takma adlar veya bash işlevleri ve daha fazlası).


3
inanılmaz derecede bu henüz ask ubuntu ile ilgili bir soru değildi. iyi soru @Ced!
tatsu

Gerçekten buna inanamıyorum!
Biggybi

1
Kabuk yerleşik typeolduğu için tercih edilen başka bir sorudan öğrendim whichve bir komutun takma ad olup olmadığını belirleyebilirim. Bu benim için de yeni bir şeydi!
1919'da

1
Nedentype tercih edildiğinin (uzun) bir açıklaması için buraya bakın : Neden "hangisini" kullanmıyorsunuz? O zaman ne kullanılır?
terdon

1
mchid cevaptaki tüm noktaları uygular. whichKabuk komut dosyalarının belirli bağlamında gerçekten yararlı olduğuna dikkat çeken "Kullanım Durumları" bölümünü içerir . Ancak bu bağlamın dışında typeneredeyse her zaman daha iyi bir seçimdir.
terdon

1

Yolun içinde veya dışında komut konumunu bulma

unameSistem bilgilerini listeleyen bir programın konumunu bulmak istediğinizi varsayalım . En üst düzey komutun hangi dizinde saklandığını bilmek istiyorsanız birkaç seçeneğiniz vardır:

$ which uname
/bin/uname

$ type -a uname
uname is /bin/uname

$ command -v uname
/bin/uname

$ locate uname
/bin/uname
    (... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz

Avantajları bulun

Son seçenek locate, unameyalnızca komut isteminden çalıştırılan programı içeren tüm dosyaları döndürür .

Bunun avantajı, arama locateyolunuzda olmayan komutları bulmasıdır. type -a(basit yerine tercih edilir type) ve whichyalnızca arama yolunuzdaki komutları bulur. Arama yolunuzu görmek için kullanın echo $PATH.

Örneğin screencloud nasıl başlatılır? :

Deneyin...

/opt/screencloud/screencloud.sh

locate screencloudKomut onu bulacaksınız ama which screencloudve type -a screencloudolmayacak çünkü:

  • Tam ad screencloud.shve yalnızca locatekomut kısmi eşleşmede arama yapar.
  • /opt/screencloudmuhtemelen arama yolunda değil. whichve typeyalnızca arama yolundaki yürütülebilir dosyaları arayın.

Not: Bu daha eski bir cevaptır. Modern ScreenCloud ile çağrılır screencloud.

Locanın findkomuta göre avantajı , yüzlerce hatta binlerce kat daha hızlı olabilmesidir. Ayrıca, findbaşlangıçtan itibaren çalıştırmayacağınız /birçok izin hatası verir locate.

Dezavantajları bulun

Programı bugün yeni yüklediyseniz, sudo updatedblocate'in veritabanını güncellemek için kullanmanız gerekecektir .


1

Tüm $PATHdizinlerinizi listelemek için aşağıdaki komutu kullanın :

echo $PATH | sed 's/:/\n/g'

İçin tam yolu bulmak üzere aşağıdaki komutu kullanın screencloud:

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

Eğer kullanılırsa apt, apt-getpaketini yüklemeyi veya Ubuntu Yazılım Merkezi, tam yolu bulmak için aşağıdaki komutu kullanabilirsiniz:

dpkg -L screencloud | grep bin

Eğer kullanılan varsayarak bu depoyu , bulmak mümkün olmalıdır screencloud yer /usr/bin/.

Tam yol:

/usr/bin/screencloud

veya

/usr/bin/screencloud-*

Ancak, sorunuzda verdiğiniz bağlantıya göre snapcraft deposunu kullandıysanız , yol aşağıdaki dizinin altında olacaktır:

/snap/bin

Daha fazla bilgi

Ayrıca, Ubuntu'nun büyük / küçük harfe duyarlı olduğunu unutmayın, bu nedenle tüm küçük harfleri büyük harf kullanmadan kullanmalısınız.


Bu çok detaylı cevap için teşekkür ederim, bir oylama kazandınız :)
Ced

1
Etkili bir şekilde altındaydı /snap/bin!
Ced
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.