Genelde yönetim veya dosya yönetimi işlemleri için kullansak da, konfor de Linux işlevselliğini bu amacın çok ötesine genişleterek, scriptler Bu kılavuz, Bash programlamasına tam bir referans olmayı amaçlamaz, daha çok GNU / Linux sistemimizin gücünü genişletmemize izin verecek temel komutlara ve yapılara bir giriş niteliğindedir. |
"Senaryo" nedir?
Temel olarak, sistemin belirli bir görev için kullandığı belirli bir programlama dilinde yazılmış kodu içeren bir dosya olduğunu söylüyoruz. Harici bir girişe veya grafik arayüze sahip olması gerekmez, ancak işlenmiş verilerin çıktısına neden olması gerekir (kullanıcı görmese bile).
Bash tarafından kullanılan dil, kendi yorumlayıcısı tarafından tanımlanır ve Korn Kabuğu (ksh) veya C Kabuğu (csh) gibi diğer Kabukların sözdizimini birleştirir. Genellikle konsolda kullanılan komutların çoğu, belirli bir dağıtımla kesinlikle ilgili olanlar dışında, komut dosyalarında da kullanılabilir.
Bir Komut Dosyasının Yapısı
Başlamak için bir metin düzenleyicimiz ve programlama arzumuz olmalı. .Sh uzantısıyla kaydettiğimiz dosyalar, ilk satır aşağıdaki gibi olduğu sürece konsol tarafından çalıştırılabilir (veya yorumlanabilir):
#! / Bin / bash
Bu, sisteme dosyayı çalıştırmak için konsolu kullanmasını söyler. Ek olarak, # karakteri yorum yazmanıza izin verir. En basit örneği oluşturmak için, aşağıdaki resimde görülen bir satır daha ekliyoruz:
Echo komutu, ekranda bir mesaj görüntüler, bu durumda tipik "Merhaba dünya!" Kaydedip konsol ile yürütürsek sonucu göreceğiz.
Temel Komutlar
Aşağıdaki komutlar yaygındır ve her tür program için çok kullanışlıdır. Çok daha fazlası olduğunu açıklığa kavuşturuyoruz, ancak şimdilik aşağıdakileri ele alacağız.
Takma adlar: Bir sözcük dizisinin daha kısa bir sözcükle değiştirilmesine izin vererek kod azaltmaya olanak tanır.
#Downloads klasör takma adı başına = '/ home / user / Downloads' adresine sahip per olarak adlandırılan bir takma ad oluşturun # Onu kullanmak istediğimiz her seferde # her # için yeni kelimeyi çağırmalıyız Bu takma adı yok etmek için, unalias unalias kullanıyoruz
break: for, while, until veya seçme döngüsünden hemen çıkmanıza olanak tanır (döngüleri daha sonra ayrıntılı olarak inceleyeceğiz)
# 1'den 5'e kadar sayıları atayacak bir döngü oluşturun # 1 2 3 4 5'teki sayaç için her "döngünün dönüşü" için # sayıcı değişkeninin geçerli değerini yazdırıyoruz, $ echo karakteri ile analiz ediliyor " $ counter ”# Eğer sayaç değeri 3'e eşitse [$ counter –eq 3] ise # Break, biten mola için döngüden çıkar
devam - Break'e benzer, tek farkı mevcut döngüyü yok sayması ve bir sonrakine gitmesidir.
# 1'den 5'e kadar sayıları atayacak bir döngü oluşturun # 1 2 3 4 5'teki sayaç için her "döngünün dönüşü" için # Sayaç değeri 3'e eşitse [$ counter –eq 3] ise #Continue bir sonraki tura atlayarak mevcut döngünün geri kalanının analiz edilmesini engeller, yani # değer 3 yazdırılmaz. devam fi echo "$ counter" bitti
beyan: değişkenleri bildirir ve onlara değerler atar, tıpkı dizgi gibi (aynı şekilde çalışırlar). Bunu bazı seçeneklerle birleştirebiliriz: -i tamsayılar bildirmek; -r değeri değiştirilemeyen salt okunur değişkenler için; Matrisler veya “diziler” için –A; -f işlevler için; -x, betiğin kendi ortamı dışında "dışa aktarılabilen" değişkenler için.
beyan –i num = 12 beyan –x pi = 3.14
yardım: belirli bir komut için yardımı gösterir.
işler: çalışan işlemleri gösterir.
# İle –c komutların adını, –p # ile her işlemin pid (işlem kimliği) ile gösteririz. işler -cp
let: aritmetik bir ifadeyi değerlendirmek
let a = 11 let a = a + 5 #Son olarak 16 echo "11 + 5 = $ a" olan a'nın değerini yazdıralım
yerel: hataları önlemek için tercihen komut dosyasının kendi işlevlerinde kullanılması gereken yerel değişkenler oluşturun. Declare komutuyla aynı işlevleri kullanabilirsiniz.
local v1 = "Bu yerel bir değişkendir"
logout: bir Kabuktan tamamen çıkış yapılmasına izin verir; Çıkış komutunun bir seferde yalnızca bir pencerenin sonlandırılmasına izin verdiği birden fazla kabuk penceresiyle çalıştığımız durumlarda kullanışlıdır.
printf: verileri yazdırmanıza ve biçimlendirmenize olanak verir. Birçok seçeneği var, bu yüzden birkaçından bahsedeceğiz.
#% f kayan sayı olarak yazdırır, n yeni # satır için printf "% fn" 5 5.000000 # & d ondalık sayıların bağımsız değişken olarak geçirilmesine izin verir printf "% d dolar değerinde% d sipariş var.n" 20 500 20 değerinde 500 sipariş var Dolar.
okuma: standart girişten bir satır okur (örneğin klavyeden veri yüklemede kullanılan modül). Aşağıdaki gibi seçenekleri geçebiliriz: -t bir okuma sınırı süresi vermek için; -a böylece her kelime aname dizisindeki bir konuma atanır; -d satırın sonuna yazılacak bir sınırlayıcı kullanmak; diğerleri arasında.
echo "Adınızı girin ve ENTER'a basın" # Değişken adını okuyun adı oku echo "Adınız $ ad"
type: bir komutu ve davranışını açıklar. Her komut için veri tanımlarını bulmak faydalı olabilir.
tür –a '[' #type bize [bir Kabuk yerleşik komutudur [bir Kabuk yerleşiktir # -a, girilen adla çalıştırılabilir # bir çalıştırılabilir dosya içeren dizinleri bulmaya izin verir. [/ usr / bin / [
ulimit: belirli sistem kaynaklarının işlemlere erişimini ve kullanımını sınırlar, yönetimsel değişikliklere izin veren veya farklı kullanıcı türlerini hedefleyen programlar için idealdir. Bir limit belirlerken, limitin kilobaytını temsil eden bir sayı yazarız.
# Mevcut limitlerimizi görüyoruz. ulimit –v 512000
bekleyin: devam etmek için belirli bir işlemin veya işin yapılmasını bekleyin.
# Komut dosyası, pid # 2585 işleminin gerçekleştirilmesini bekler
2585 bekle
Komut dosyalarına ekleyebileceğimiz diğer yararlı komutlar sembollerle temsil edilir.
!!: son komutu tekrar çalıştır
! wer: "wer" ifadesiyle başlayan son komutu yürütür.
'==', '! =', '>', '<', '> =' ve '<=': ilişkisel operatörler.
|: OR operatörü genellikle iki normal ifadeyi birleştirmek için kullanılır.
: ifadeleri biçimlendirmenize izin veren escape komutu. Örneğin: sesli uyarı için a, yeni satır için n, geri alma için b vb.
10 yorum, sizinkini bırakın
Harika! Her neyse, 2 yorum: Ubuntu etiketi, genel bir şeyi genelleştirdiği için yarı fazladır. Ve bu eğitimler ilerlemeye devam ederse, birbirleriyle bağlantılı olmaları iyi olur….
Onun dışında bu hareket ilginç!
İyi katkı! Harika!
Sadece konuya daha fazla girmek isteyenler için eksik referanslar. Ülkemizde bulmak o kadar kolay olmasa da bazı iyi olanlar
- Linux Komutları, Editörleri ve Kabuk Programlaması için pratik bir Kılavuz, Mark Sobell (Bölüm 8)
- Pro Bash Programlama, Chris FA Johnson (bu, başka referanslara veya biraz daha fazla bilgiye sahip olanlar için olsa da).
İyi makale
İyi randevu! Teşekkür ederim!
: @ "Farklı oturum aç" işlevi önceki yorumumu sildi, bu yüzden daha ayrıntılı olarak özetleyeceğim:
işler -cp
bash: işler: -c: geçersiz seçenek
işler: kullanım: işler [-lnprs] [jobspec…] veya işler -x komutu [değiştirgeler]
-eq -gt -lt ondalık nokta değişkenlerini kabul etmiyor, forum ve forum arasında bc'nin iyi bir müttefik olduğunu keşfettim:
eğer [`echo 9.999> 10 | bc` -eq 1]; sonra
echo "9.999, 10'dan büyük, işlemcinizin hala çalıştığından emin olun"
başka
echo «9.999 10'dan büyük değil, her şey normal çalışıyor
fi
Bu gönderi, bash komut dosyası yazmanın tüm genellerini çok iyi özetliyor:
http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html
Bu sitede bash özellikleriyle ilgili birçok soru ve cevap bulacaksınız:
http://unix.stackexchange.com/questions/tagged/bash
İşte gerçekten harika bazı senaryolar ve hey, bunları başkalarının senaryolarını okuyarak öğrenebilirsiniz:
http://snipplr.com/search.php?q=bash&btnsearch=go
Bash dışında söylediklerinde haklısın. Gördüğüm her sistemin / bin / bash içinde bash var.
Ancak python, perl, ruby vb. İçin bunu kullanmakta sorun yok. Yaparım
Tesadüfen, üniversitede bash komut dosyası kullanıyoruz, bu nedenle veriler 10, çok iyi!
İndirmek için bir pdf sürümü iyi olurdu !! 😀
Çok güzel bir site. Sonunda yararlı bir şey buldum. Teşekkür ederim.