Her Linux tabanlı dağıtımda bulunan standart komutlar hangileridir?


39

Her Linux sisteminde standart komutların hangileri olduğunu bilmek istiyorum.

Örneğin, bir debian / ubuntu / redhat / suse / arch / slackware vb. Alırsanız, aşağıdaki gibi komutları her zaman bulacaksınız:

cd, mkdir, ls, echo, grep, sed, awk, ping vb.

Bahsedilen komutlardan bazılarının kabuk yerleşik olduğunu biliyorum, ancak diğerleri değil ama hala her zaman oradalar (şu ana kadarki bilgilerime ve tecrübeme dayanarak).

Öte yandan, gawk, parted, traceroute ve diğer oldukça ünlü komutlar gibi komutlar farklı Linux dağıtımlarında varsayılan olarak yüklenmez.

Farklı web aramaları yaptım ancak buna doğrudan bir cevap bulamadım.

Amaç bir kabuk betiği oluşturmak istediğimden ve betiğin içinde kullanılan komutların sistemde mevcut olup olmadığına dair bazı kontroller yapması gerekir. Değilse, kullanıcıdan gerekli ikili dosyaları kurmasını ister.


5
Sadece bir ipucu: " Kodda kullanılan komutların sistemde mevcut olup olmadığını bazı akıl sağlığı kontrolleri yapmalı " Autoconf'a çok benziyor .
sr_

Kesinlikle otomatik yapılandırma için bir durum ... ya da belki daha bilimsel kuzeni, söz teorisi .
Joker

@Wildcard, ilk kurulumdan sonra bile sürekli akıl sağlığı kontrolleri ve sistemin kendini iyileştirmesini istemediğiniz sürece, herhangi bir konfigürasyon yönetim sisteminin böyle bir durum için üstesinden geleceğine inanıyorum.
Vangelis Tasoulas

@VangelisTasoulas, sanmıyorum. Ev bilgisayarı gibi tek kullanıcılı bir kurulumda neden onu komut etmeniz gerekiyor? Konfigürasyon yönetimi overkill olacaktır - fakat komut dosyası ile el yazısıyla kontrol edilir. Tutarlılık sağlamak istediğiniz birden fazla kutucuğunuzun olduğu bir senaryoda, komut dosyası oluşturma işlemi fazla yüklenmez - ancak yapılandırma yönetimi de olmaz. Yoksa sadece ürününüzün paket kurulumu sırasında sağlık kontrollerini yapmak isteyen bir yazılım geliştiricisi misiniz? Bu, senaryonuza bağlıdır, evet, ancak yapılandırmanızı yönetmek istiyorsanız, bir yapılandırma yönetimi aracı gereğinden fazla değildir. ;)
Wildcard

1
@Wildcard, Bu soruyu yazdığımda ikincisini düşünüyordum: Yazılımın düzgün çalışmasını sağlamak için kurulum sırasında tek bir makinede temizlik kontrollerini çalıştırmak istiyorum. Elbette, birden fazla sunucuyu yönetmek ve dağıtılmış dağıtımları vb. İşlemek istiyorsanız, konfigürasyon yönetiminin uzun vadede devam etmenin bir yolu olduğunu kabul ediyorum.
Vangelis Tasoulas,

Yanıtlar:


41

Ne yazık ki, mevcut olan hiçbir şeyin garantisi yoktur.

Ancak, çoğu sistemde GNU coreutils olacaktır . Bu yalnız başına yaklaşık 105 komut sağlar. Bunun yerine BusyBox kullanabilecek yerleşik bir sistem olmadığı sürece bunlara güvenebilirsiniz .

Ayrıca itimat muhtemelen olabilir bash , cron , GNU findutils , GNU grep , gzip , iproute2 , olarak iputils , insan-db , modül-araçları init , net-araçları , passwd ( passwd veya gölge ), PROCPS , katran ve util- linux .

Bazı programların dağıtımlar arasında bazı farklılıkları olabileceğini unutmayın. Örneğin gawk veya mawk/usr/bin/awk olabilir . POSIX modunda kısa çizgi veya bash olabilir . Bazı eski sistemlerde, BIND sürümüyle aynı sözdizimine sahip değildir , bu nedenle dig kullanmak daha iyi olabilir ./bin/sh/usr/bin/host

Bazı standartlar arıyorsanız, Linux Standard Base, yaygın olarak bulunan bazı programları tanımlar , ancak tüm dağıtımlar standarda uygun olduğunu iddia etmez ve bazıları yalnızca isteğe bağlı bir LSB uyumluluk paketi kurarsanız bunu yapar. Buna örnek olarak, gördüğüm bazı sistemlerlsb_release varsayılan kurulumda gelmiyor .

Bunun yanında POSIX tarafından standart hale getirilmiş komutların listesi de yardımcı olabilir.

Sorununuza bir başka yaklaşım, betiğinizi her dağıtımın paketleme araçlarını (örn. Red Hat için RPM, Debian için DEB, vb.) Kullanarak paketlemeniz ve ihtiyaç duyduğunuz diğer programlara veya paketlere bağımlılık göstermenizdir. Bu biraz iş, ancak kullanıcıların yalnızca neyin eksik olduğunu değil, hangi paketleri kurmaları gerektiğini söyleyen bir dostça hata mesajı görecekleri anlamına geliyor.

Daha fazla bilgi:


Paket-and-eklenti bağımlılıkları büyük -Fikir, aşağı Autoconf eline dalış yener:)
SR_

2
büyük cevap, her şeye katılıyorum. Ekstra bir uyarı adımı eklerdim: Kullanmakta olduğunuz komutun belirli sürümünün ekstra özel seçeneklerini göz önünde bulundurun ... Tüm sürümlerde çalışmayabilirler (bu çalıştığım bir projede oldu).
JoséNunoFerreira

Herhangi bir yerde bu komutların listesini içeren bir düz metin dosyası olduğunu sanmıyorum? pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html nispeten kolayca buna dönüştürülebilir, ancak hala bir sürü şey eksik.
Dylan Nicholson

7

Gömülü olmayan Linux sistemlerinde, genellikle çoğu GNU yardımcı programına güvenebilirsiniz:

artı util-linux suite ve procps suite . Not /bin/shdaha az sayıda çatal biri gibi özellikler her zaman darbe değil, bir kabuk olabilir kül .

Linux Standard Base tüm uyumlu sistemlerde beklenen özellikleri ile ortak araçları kümesi tanımlar. POSIX tarafından belirtilen yardımcı programların çoğunu da bekleyebilirsiniz . Dikkate değer bir istisna, paxçoğu dağıtımın varsayılan kurulumunun bir parçası olmayan.

Her şeyi basit tutmak istiyorsanız, bir lsb_releasepaketin yüklenmesini isteyin . Pek çok dağıtım, LSB'nin gerektirdiği tüm bağımlılıkları çeken böyle bir pakete sahiptir.

Gömülü bir sistemde, tüm bahisler kapalı. Gömülü Linux sistemleri genellikle BusyBox'u çalıştırır , ancak pek çok yardımcı program ve özellik isteğe bağlıdır, bu yüzden elde edeceğinizden çok az şey vardır.


6

Tüm Linux dağıtımları olmasa da en çok bir dizi komut vardır ve bu konuda Unix dağıtımları da sağlayacaktır. Bunlar POSIX standardı tarafından belirtilen zorunlu komutlardır .

Eğer alıntı komutların çoğu ( cd, mkdir, ls, echo, grep, sed, awk, vb) bunun bulunmaktadır. Bunun istisnası pingWhiteWinterWolf olarak doğru yorumda bulundu.


1
Aslında ping
POSIX'in bir

POSIX anasayfa onlar sarfediyoruz o devletler "kaynak kodu düzeyinde uygulama taşınabilirliği" yani. Anladığım kadarıyla sistem API'si, bir uygulamayı yapılandırmak, derlemek ve kurmak ve kaynak kodunu işlemek için kullanılabilecek sistem (kabuk dahil) davranışı ve komutları ile ilgileniyorlar.
WhiteWinterWolf

Onlar yardımcı programları ağ umurumda değil ( "Sistem konfigürasyonu ve kaynak kullanılabilirliği" gibi böylece her yerde komutları dışı kapsamı açık bir şekilde vardır) ping, ifconfig, telnetonlar sadece, vb bu standardın (ne de başka birinin AFAIK bir parçası değildir En iyi çaba temelinde "tarihsel uygulamalar" ile uyumluluğu hedefleyin ).
WhiteWinterWolf
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.