Komutlar nereden geliyor?
Bash'deki komutlar aşağıdaki kategorilerden herhangi birinden gelir:
Bash'in kendisi (yerleşiklere bakın)
Bash, dizileri bildirmek, bir dosyadan satırları okumak gibi yerleşik özelliklerine ve bash'a yerleşik diğer özelliklere erişime izin vermek için kendi komut setiyle birlikte gelir. Bu kategorideki komutları, bash yerleşik komutlarını veya kısaca yerleşikleri çağırırız.
Ortamınızdaki yürütülebilir dosyalar (harici komutlara bakın)
Varsayılan olarak, bash varsayılan olarak belirli değişkenleri devralır. Bu, bash'ta harici komutlar olarak başvurulan yürütülebilir dosyalar için konumlar da dahil olmak üzere PATH değişkeni durumunda gözlemlenir. Yani, eğer kıvrılmak komut yolunuzdaysa, etkileşimli modda olduğu gibi bir bash betiği içinden yürütülebilir. Bu kategorideki komutları, harici komutları veya kısaca komutları diyoruz.
Kullanıcı tanımlı fonksiyon (fonksiyonlara bakın)
Bash, harici komutları ve yerleşikleri çalıştırmadan önce bir işlevin tanımlanıp tanımlanmadığını kontrol eder. Eğer öyleyse, işlev bir komut olarak yürütülür. Olmazsa, komutlar için öncelik sırasına göre ilerler. Bir betiğin dışında tanımlanan işlevi yürütmek için -x özniteliği ile bildirilmelidirler; aksi takdirde, kullanılarak dahil edilebilirler. Emretmek. Bu kategorideki komutlara kullanıcı tanımlı işlevler veya kısaca işlevler diyoruz.
komutlar nelerdir
Komut, kabuk ortamında bir programın tek bir giriş noktası olarak ele alınacak herhangi bir kelimedir. Komutun yürütülmesi durumunda, komutun kendisi ve isteğe bağlı bağımsız değişkenler, ${0}, ${1}, ${2}, ... konum parametreleri olarak iletilir. Sıfırıncı konum parametresi (${0}) komutun kendisidir ve bağlamda değişmez. Diğer bir deyişle, ${1}, ${2}, … işlevlerindeki bağlama bağlı olarak değişebilen konumsal parametrelerin aksine, ${0} işlev çağrıları arasında değişmez.
Komutların kapsamı, bildirimin konumuna ve genel, bash için yerleşik veya bash programınıza yerel olarak atanan niteliklere bağlı olarak belirlenir.
İşte bilinmesi gereken komut türlerinin bir listesi.
Yerleşik komutlar
Bunlar, '.' ':' '[' ']' gibi karakterler ve beyan in bash gibi ayrılmış sözcükler de dahil olmak üzere, bash evreninin birinci sınıf vatandaşlarıdır. Bash yerleşik komutlar listesinde yer alan bu komutların, bash betiğinizde kullanılabilecek duruma gelmesine güvenirsiniz.
Bash yorumlayıcınızın tanımına ve sürüm numarasına bağlı olarak bazı komutlar kullanılamayabilir.
Harici komutlar
Harici komutlar, curl gibi bir bash betiğinin dışından erişilebilen yürütülebilir dosyalardır. Fonksiyonların aksine, harici komutlar değişken olarak saklanmaz.
Bir komut türünün önceliği ne kadar düşükse, komut o kadar geç yorumlanabilir. Harici komutlar, bash'ta en düşük öncelik sırasına sahiptir. Bu, harici bir komut çalıştırmadan önce, yorumlayıcı bash, işlevleri, ardından yerleşikleri arar ve son olarak harici olarak bir komutun olup olmadığını görmeye çalışır. Değilse, aşağıdaki hatayı görmelisiniz.
bash: bilinmeyen komut:emretmekbulunamadıBir bash betiğinde, curl bash örneklerinde daha önce gördüğümüz gibi aynı adı paylaşıyorsanız, işlevler harici komut davranışını geçersiz kılabilir. Bir işlevi kullanan özel bir harici komut örneği aşağıdadır.
kıvrılmak() {emretmek ${FUNCNAME}...
}
Bu, işlevlerin harici komutlardan ve hatta bash yerleşiklerinden daha yüksek önceliğe sahip olması nedeniyle işe yarar. Sınırlama, bir işlev adında izin verilen karakterlerdir.
Yukarıdaki örneğin, aşağıdaki gibi bir takma ad kullanılarak gerçekleştirilebileceğini unutmayın.
takma ad kıvrılmak= '{
kıvırmak...
}
'
Takma adlar söz konusu olduğunda, komut türü yürütmedeki bağlama bağlı olarak farklılık gösterebilirken, işlev yöntemini kullanan özel harici komutlar söz konusu olduğunda giriş noktası her zaman bir işlevdir.
Fonksiyonlar
Fonksiyonlar bash'ta kuraldır. Yerleşiklere ve harici komutlara bakmadan önce bash, bir işlevin aday işlev adıyla tanımlanıp tanımlanmadığını, bir satırda ilk sözcüğün mü yoksa ; komut satırının sonunu belirten karakter. Tek istisna, ${FUNCNAME} gibi tamamı büyük harflerle yazılmış bash değişkenleridir.
takma ad() { FUNCNAME=asdf;dışarı attı $ {@ ,,};}takma ad kıvrılmak='TEST CURL ALIAS' #?
Basit komutlar
Bash kılavuz sayfalarında basit komutlar, isteğe bağlı argümanlar tarafından takip edilen bir kelime olarak tanımlanır. Bağlamda, basit bir komut yerleşik, harici komut veya işlev olabilir.
Bir bash betiği içinden komutlar nasıl yürütülür
Artık ne tür komutların mevcut olduğunu bildiğimize göre, bunları komut dosyalarınızda nasıl kullanacağınızı genişletebiliriz. İlk olarak, komut önceliğinin bash'ta nasıl çalıştığını bilmemiz gerekecek.
Bir bash betiğinde önceliği kontrol etmenin bazı yolları.
Bash karar versin
komut_adıÇoğunlukla, özellikle başlangıçta, hangi komutun kullanılacağına bash'in karar vermesine izin verdik. Ancak, niyetinizin bash tarafından doğru şekilde yorumlanmayabileceği durumlar vardır. İşlev adları ve harici komutlar veya yerleşikler çakıştığında durum böyledir.
Harici bir komut yürütün
emretmekkomut_adıEtkileşimli modda kullanılabilen harici bir komut_adı komutu olduğunu ve bunu bir bash betiğinde kullanmak istediğinizi varsayalım. Bash'a komut yerleşikini kullanarak komut_adı'nın harici bir komut olduğunu açıkça söyleyebiliriz.
Harici komut örnekleri
Aşağıdakilerin kurulu olduğu varsayılarak harici komut örnekleri:
dosyagit
balık
Örnek: Dosya türünü ve bilgilerini alın
{ # dosya türünü ve bilgilerini aldosya ${dosya} # (1,2)
}
# (1) komut, dosya
# (2) infile={Dosya yolu}
Örnek: Git'te sahne değiştirildi ve yeni dosyalar
{ # git'teki aşama dosyalarıgit ekle.# (1)
}
# (1) komut, git
Örnek: Figlet kullanarak ascii sanatı oluşturun
{ # ascii sanatı yaratbalık${mesaj} # (1,2)
}
# (1) komut, figlet
# (2) mesaj={Ascii art olarak görüntülenecek mesaj}
Yerleşik bir komut yürütün
yerleşikkomut_adıKomut_adı'nın, bash'ta yerleşik olarak tanımlanan komutlardan biri olduğunu varsayalım. Bash'a command_name yerleşik olarak çalıştırmak istediğimizi bildirmek için yerleşik yerleşik kullanıyoruz.
Yerleşik komut örnekleri
Örnek: Kaç yerleşik?
yerleşik{,}{,,}{,,,} # kaç tane yerleşik var?Örnek: Hayalet beyan
{bildirmek() { dışarı attıayy!;}
bildirmek-xfbildirmek #?
}
Çözüm
Bir bash kabuk betiği içinden bir komutu yürütmek oldukça kolaydır. Üç ana komut türü vardır. Bash'de basit komutların nasıl yorumlandığını bilmek, çalışma zamanında ne tür bir komutun yürütüleceği üzerinde gelişmiş kontrole yol açabilir.