Bash'de Programlama - Kısım 1

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.

Teşekkürler Juan Carlos Ortiz!

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Orta Zor dijo

    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ç!

  2.   Hadi Linux kullanalım dijo

    İyi katkı! Harika!

  3.   Giovanni escobar sosa dijo

    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

  4.   Hadi Linux kullanalım dijo

    İyi randevu! Teşekkür ederim!

  5.   Patricio Dorantes Jamarne dijo

    : @ "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

  6.   Brooklyn'den değil dijo

    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

  7.   Brooklyn'den değil dijo

    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

  8.   Guille dijo

    Tesadüfen, üniversitede bash komut dosyası kullanıyoruz, bu nedenle veriler 10, çok iyi!

  9.   alex'i gördüm dijo

    İndirmek için bir pdf sürümü iyi olurdu !! 😀

  10.   Marco Antonio De Fuentes dijo

    Çok güzel bir site. Sonunda yararlı bir şey buldum. Teşekkür ederim.