Programming sa bash - bahagi 1

Habang sa pangkalahatan ay ginagamit namin ito para sa mga pagpapatakbo o pamamahala ng file na pagpapatakbo, ang consola de Linux pinahaba ang pag-andar nito na lampas sa layuning iyon, na pinapayagan kaming mag-program script Ang gabay na ito ay hindi inilaan upang maging isang kumpletong sanggunian sa programa ng Bash, ngunit sa halip ay isang panimula sa mga pangunahing utos at istraktura, na magbibigay-daan sa amin upang mapalawak ang lakas ng aming system ng GNU / Linux.

Ano ang isang "Script"?

Karaniwang sinasabi namin na ito ay isang file na naglalaman ng code na nakasulat sa isang tiyak na wika ng programa na ginagamit ng system para sa isang tiyak na gawain. Hindi ito kailangang magkaroon ng isang panlabas na input o interface ng grapiko, ngunit kailangan itong maging sanhi upang ma-output ang naprosesong data (kahit na hindi ito makita ng gumagamit).

Ang wikang ginamit ng Bash ay tinukoy ng sarili nitong interpreter at pinagsasama ang syntax ng iba pang mga Shell, tulad ng Korn Shell (ksh) o ang C Shell (csh). Marami sa mga utos na karaniwang ginagamit sa console ay maaari ding gamitin sa mga script, maliban sa mga mahigpit na nauugnay sa isang partikular na pamamahagi.

Istraktura ng isang Script

Upang magsimula dapat kaming magkaroon ng isang text editor at pagnanais na mag-program. Ang mga file na nai-save namin gamit ang isang .sh extension ay maaaring maipatupad (o mabibigyang kahulugan) ng console, hangga't ang unang linya ay ang sumusunod:

#! / bin / bash

Sinasabi nito sa system na gamitin ang console upang patakbuhin ang file. Bilang karagdagan, pinapayagan ka ng # na character na magsulat ng mga komento. Upang likhain ang pinakasimpleng halimbawa ay nagdagdag kami ng isa pang linya, na nakikita sa sumusunod na imahe:

Nagpapakita ang utos ng echo ng isang mensahe sa screen, sa kasong ito ang tipikal na "Kamusta mundo!" Kung i-save namin ito at isagawa ito sa console makikita namin ang resulta.

Mga Pangunahing Utos

Ang mga sumusunod na utos ay karaniwan at kapaki-pakinabang para sa anumang uri ng programa. Nilinaw namin na maraming iba pa, ngunit sa ngayon ay sasaklawin namin ang mga sumusunod.

Mga alias: pinapayagan ang isang string ng mga salita na mapalitan ng isang mas maikli, pinapayagan ang pagbawas ng code.

# Lumikha ng isang alias na tinawag bawat may address ng folder na #Downloads alias per = '/ home / user / Mga Pag-download' # Sa tuwing nais naming gamitin ito kailangan lang naming tawagan ang # bagong salita bawat # Upang sirain ang alias na iyon, gumagamit kami ng unalias unalias per

break: pinapayagan kang agad na lumabas ng isang para, habang, hanggang o pumili ng loop (pag-aaralan namin ang mga loop nang detalyado sa paglaon)

# Lumikha ng isang loop na magtatalaga ng mga numero mula 1 hanggang 5 # para sa bawat "turn of the loop" para sa counter sa 1 2 3 4 5 gawin ang # Kami ay naglilimbag ng kasalukuyang halaga ng variable #counter, na sinuri ng character na $ echo " $ counter ”#Kung ang halaga ng counter ay katumbas ng 3 kung [$ counter –eq 3] pagkatapos #The break exits the loop for break fi tapos

magpatuloy - Katulad ng break, maliban na hindi nito pinapansin ang kasalukuyang loop at pupunta sa susunod.

# Lumikha ng isang loop na magtatalaga ng mga numero mula 1 hanggang 5 # para sa bawat "turn of the loop" para sa counter sa 1 2 3 4 5 gawin #Kung ang halaga ng counter ay katumbas ng 3 kung [$ counter –eq 3] pagkatapos ay #Continue pinipigilan ang natitirang kasalukuyang cycle mula sa pag-aralan sa pamamagitan ng paglukso sa susunod na pag-ikot, iyon ay, ang # halaga 3 ay hindi mai-print. ipagpatuloy ang pag-echo ng "$ counter" tapos na

ideklara: idineklara ang mga variable at nagtatalaga sa kanila ng mga halaga, tulad ng mga typet (gumagana ang mga ito sa parehong paraan). Maaari naming pagsamahin ito sa ilang mga pagpipilian: -deklara ng mga integer; - para sa mga variable na nabasa lamang, na ang halaga ay hindi mababago; –A para sa mga arrays o “arrays”; -f para sa mga pagpapaandar; -x para sa mga variable na maaaring "nai-export" sa labas ng kapaligiran ng script mismo.

ideklara –i num = 12 ideklara –x pi = 3.14

tulong: nagpapakita ng tulong para sa isang tukoy na utos.

mga trabaho: ipinapakita ang mga tumatakbo na proseso.

#With –c ipinapakita namin ang pangalan ng mga utos, kasama ang –p # ang pid (process id) ng bawat proseso. mga trabaho -cp

hayaan: suriin ang isang expression ng arithmetic

hayaan ang isang = 11 hayaan ang isang = a + 5 # Panghuli ay nai-print namin ang halaga ng isang na kung saan ay 16 echo "11 + 5 = $ a"

lokal: lumikha ng mga lokal na variable, na dapat gamitin nang mas mabuti sa mga pagpapaandar ng script mismo upang maiwasan ang mga pagkakamali. Maaari mong gamitin ang parehong mga pagpapaandar tulad ng idineklarang utos.

local v1 = "Ito ay isang lokal na variable"

pag-logout: pinapayagan ang pag-log out ng isang Shell ng ganap; kapaki-pakinabang para sa mga kaso kung saan nagtatrabaho kami ng higit sa isang window ng shell, kung saan papahintulutan lamang ng exit command ang isang window na mawakasan nang sabay-sabay.

printf: pinapayagan kang mag-print ng data at mai-format ito. Maraming pagpipilian ito, kaya't babanggitin namin ang ilan.

Ang pag-print ng #% f bilang isang lumulutang na numero, n para sa bagong # line printf "% fn" 5 5.000000 # & d ay nagbibigay-daan upang ipasa ang mga decimal number bilang mga argumento printf "Mayroong% d ang mga order na nagkakahalaga ng% d dollars.n" 20 500 Mayroong 20 mga order na nagkakahalaga ng 500 Mga Dolyar

basahin: basahin ang isang linya mula sa karaniwang input (module na ginamit sa paglo-load ng data sa pamamagitan ng halimbawa ng keyboard). Maaari kaming pumasa sa mga pagpipilian tulad ng: -t upang magbigay ng oras ng limitasyon sa pagbabasa; -kaya't ang bawat salita ay itinalaga sa isang posisyon sa aname array; -d upang magamit ang isang delimiter na isusulat sa dulo ng linya; Bukod sa iba pa.

echo "Ipasok ang iyong pangalan at pindutin ang ENTER" #Read the variable name read name echo "Ang iyong pangalan ay $ name"

uri: naglalarawan ng isang utos at pag-uugali nito. Maaari itong maging kapaki-pakinabang upang malaman ang mga kahulugan ng data para sa bawat utos.

type –a '[' #type ay nagsasabi sa atin na [ay isang built-in na command ng Shell [ay isang Shell builtin # -a ay nagbibigay-daan upang makita ang mga direktoryo na naglalaman ng # isang maipapatupad na may nakasulat na pangalan. [ay / usr / bin / [

ulimit: nililimitahan ang pag-access at paggamit ng ilang mga mapagkukunan ng system sa mga proseso, perpekto para sa mga program na pinapayagan ang mga pagbabago sa pangangasiwa o na naglalayon sa iba't ibang uri ng mga gumagamit. Kapag nagtatakda ng isang limitasyon nagsusulat kami ng isang numero na kumakatawan sa mga kilobytes ng limitasyon.

# Nakita namin ang aming kasalukuyang mga limitasyon ulimit –a # -f ay nagbibigay-daan upang limitahan ang mga gumagamit sa hindi magagawang # lumikha ng mga file na mas malaki sa 512000 Kb (500 #Mb) ulimit –f 512000 # -v nililimitahan ang virtual memory ng proseso. ulimit –v 512000

maghintay: maghintay para sa isang tiyak na proseso o trabaho na naisasagawa upang magpatuloy.

#Ang script ay naghihintay para sa proseso ng pid # 2585 upang maisagawa

maghintay ka 2585

Ang iba pang mga kapaki-pakinabang na utos na maaari naming idagdag sa mga script ay kinakatawan ng mga simbolo.

!!: patakbuhin muli ang huling utos

! wer: isinasagawa ang huling utos na nagsimula sa ekspresyong "wer".

'==', '! =', '>', '<', '> =', at '<=': mga kaugnay na operator.

|: Ang operator O karaniwang ginagamit upang sumali sa dalawang regular na expression.

: makatakas na utos na nagbibigay-daan sa iyo upang mai-format ang mga expression. Halimbawa: a para sa isang alerto sa tunog, n para sa newline, b para sa backspace, atbp.

Salamat Juan Carlos Ortiz!

Ang nilalaman ng artikulo ay sumusunod sa aming mga prinsipyo ng etika ng editoryal. Upang mag-ulat ng isang pag-click sa error dito.

10 na puna, iwan mo na ang iyo

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Katamtaman Mahirap dijo

    Malaki! Gayunpaman, 2 mga puna: Ang tag ng Ubuntu ay kalahati ng marami, dahil binubuo nito ang isang bagay na pangkalahatan. At kung ang mga tutorial na ito ay patuloy na sumusulong, mabuti kung ang mga ito ay naka-link sa bawat isa ....
    Maliban dito, kawili-wili ang paglipat na ito!

  2.   Gumamit tayo ng Linux dijo

    Magandang kontribusyon! Malaki!

  3.   Giovanni escobar sosa dijo

    Ang mga nawawalang sanggunian lamang para sa mga nais masulit ang bagay. Ang ilang mga mabubuti bagaman hindi gaanong madaling hanapin sa ating mga bansa
    - Isang praktikal na Patnubay sa Mga Utos, Editor, at Shell Programming ng Linux, Mark Sobell (Kabanata 8)
    - Pro Bash Programming, Chris FA Johnson (bagaman ito ay para sa mga may iba pang mga sanggunian o kaunting kaalaman).

    Magandang artikulo.

  4.   Gumamit tayo ng Linux dijo

    Magandang date! Salamat!

  5.   Patricio Dorantes Jamarne dijo

    : @ Ang pag-andar na "mag-log in bilang" ay tinanggal ang aking nakaraang puna, kaya't ibubuod ko pa ito lalo:
    mga trabaho -cp
    bash: mga trabaho: -c: hindi wastong pagpipilian
    mga trabaho: paggamit: mga trabaho [-lnprs] [jobspec…] o mga trabaho -x utos [args]

    -eq -gt -lt huwag tanggapin ang mga variable na decimal point, sa pagitan ng forum at forum natuklasan ko na ang bc ay isang mabuting kakampi:
    kung [`echo 9.999> 10 | bc` -eq 1]; tapos
    echo "9.999 ay mas malaki sa 10, tiyaking gumagana pa rin ang iyong processor"
    iba
    ang echo «9.999 ay hindi hihigit sa 10, normal na gumana ang lahat
    fi

  6.   HindiFromBrooklyn dijo

    Ang post na ito ay mahusay na nagbubuod ng lahat ng mga pangkalahatan ng bash scripting:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Sa site na ito ay mahahanap mo ang maraming mga katanungan at sagot tungkol sa bash peculiarities:
    http://unix.stackexchange.com/questions/tagged/bash

    Narito ang ilang mga talagang cool na script, at hey, matututunan mo ang mga ito sa pamamagitan ng pagbabasa ng mga script ng ibang tao:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   HindiFromBrooklyn dijo

    Tama ka sa sinabi mo, maliban sa bash. Ang bawat system na nakita ko ay may bash in / bin / bash.

    Ngunit para sa sawa, perl, ruby, atbp, mainam na gamitin iyon. Oo

  8.   Guille dijo

    Nagkataon, sa kolehiyo gumagamit kami ng bash scripting kaya't ang data ay 10, napakahusay!

  9.   alex vi dijo

    isang bersyon ng pdf upang mai-download ay magiging mabuti !! 😀

  10.   Marco Antonio De Fuentes dijo

    Napakagandang site. Sa wakas ay nakakita ako ng isang bagay na kapaki-pakinabang. Salamat.