Pwogramasyon nan bach - pati 1

Pandan ke nou jeneralman itilize li pou administratif oswa operasyon jesyon dosye, konsole de Linux fin fonctionnalités li yo pi lwen pase objektif sa a, sa ki pèmèt nou pwogram Scripts Gid sa a pa fèt pou yon referans konplè sou pwogram Bash, men pito yon entwodiksyon nan kòmandman debaz yo ak estrikti yo, ki pral pèmèt nou elaji pouvwa sistèm GNU / Linux nou an.

Ki sa ki se yon "Script"?

Fondamantalman nou di ke li se yon dosye ki gen kòd ekri nan yon lang pwogram sèten ke sistèm nan itilize pou yon sèten travay. Li pa bezwen gen yon opinyon ekstèn oswa koòdone grafik, men li bezwen lakòz yon pwodiksyon nan done trete (menm si itilizatè a pa wè li).

Lang lan itilize pa Bash defini nan entèprèt pwòp li yo ak konbine sentaks nan kokiy lòt, tankou Korn Shell la (ksh) oswa C Shell la (csh). Anpil nan kòmandman yo ke yo anjeneral yo itilize nan konsole a kapab tou itilize nan Scripts, eksepte sa yo ki estrikteman fè pati yon distribisyon patikilye.

Estrikti yon Script

Pou kòmanse nou dwe gen yon editè tèks ak dezi nan pwogram. Dosye yo ke nou sove ak yon ekstansyon .sh ka egzekite (oswa entèprete) pa konsole a, osi lontan ke premye liy lan se sa ki annapre yo:

#! / bin / bash

Sa a di sistèm lan yo sèvi ak konsole a nan kouri dosye a. Anplis de sa, karaktè # a pèmèt ou ekri kòmantè. Pou kreye egzanp ki pi senp la nou ajoute yon lòt liy, yo wè nan imaj sa a:

Kòmandman eko a montre yon mesaj sou ekran an, nan ka sa a tipik "Hello world!" Si nou sove li epi egzekite li ak konsole a nou pral wè rezilta a.

Kòmand debaz yo

Kòmandman sa yo komen ak trè itil pou nenpòt ki kalite pwogram. Nou klarifye ke gen anpil plis, men pou kounye a nou pral kouvri sa ki annapre yo.

Aliases: pèmèt yon fisèl nan mo yo dwe ranplase pa yon sèl ki pi kout, sa ki pèmèt rediksyon kòd.

#kreye yon alyas yo rele pou chak ak adrès #Downloads alyas katab pou chak = '/ lakay / itilizatè / Downloads' # Chak fwa nou vle sèvi ak li nou jis bezwen rele # nouvo mo a pou chak #Pou detwi alyas sa a, nou itilize unalias unalias pou chak

kraze: pèmèt ou imedyatman sòti yon pou, pandan y ap, jiskaske oswa chwazi riban (nou pral etidye pasan an detay pita)

#Kreye yon bouk ki pral asiyen nimewo yo soti nan 1 a 5 # pou chak "vire nan bouk la" pou vann san preskripsyon nan 1 2 3 4 5 fè #Nou enprime valè aktyèl la nan varyab # kontè a, ki se analize pa karaktè $ eko a " $ vann san preskripsyon "#Si valè a vann san preskripsyon ki egal a 3 si [$ vann san preskripsyon -ek 3] Lè sa a, # Kase a sòti bouk la pou kraze fi fè

kontinye - Menm jan ak kraze, eksepte ke li inyore bouk aktyèl la epi li ale nan yon sèl kap vini an.

#Kreye yon bouk ki pral asiyen nimewo yo soti nan 1 a 5 # pou chak "vire nan bouk la" pou kontwa nan 1 2 3 4 5 fè # Si valè a kontwa ki egal a 3 si [$ kontè -ek 3] Lè sa a, # Kontinye anpeche rès sik aktyèl la soti nan yo te analize pa sote nan pwochen tou an, se sa ki, # valè a 3 pa pral enprime. kontinye fi eko "$ vann san preskripsyon" fè

deklare: deklare varyab ak asiyen yo valè, jis tankou konpoze (yo travay menm jan an). Nou ka konbine li ak kèk opsyon: -mwen deklare nonm antye relatif; -r pou li sèlman varyab, ki gen valè pa ka chanje; –A pou ranje oswa "ranje"; -f pou fonksyon; -x pou varyab ki ka "ekspòte" deyò anviwònman an nan script nan tèt li.

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

èd: montre èd pou yon lòd espesifik.

travay: montre pwosesis yo kouri.

# Avèk –c nou montre non kòmandman yo, avèk –p # pid (id pwosesis) nan chak pwosesis. travay-CP

kite: evalye yon ekspresyon aritmetik

kite a = 11 kite a = a + 5 #Finalman nou enprime valè yon ki se 16 eko "11 + 5 = $ a"

lokal: kreye varyab lokal, ki ta dwe itilize de preferans nan fonksyon nan script la tèt li pou fè pou evite erè. Ou ka itilize fonksyon yo menm jan ak lòd la deklare.

lokal v1 = "Sa a se yon varyab lokal"

D ': pèmèt D' soti nan yon kal nèt; Itil pou ka kote nou travay avèk plis pase yon fenèt Shell, nan ki lòd la sòti pral sèlman pèmèt yon fenèt fini nan yon moman.

printf: pèmèt ou enprime done ak fòma li. Li gen anpil opsyon, kidonk nou pral mansyone kèk.

#% f enprime kòm yon nimewo k ap flote, n pou nouvo # liy printf "% fn" 5 5.000000 # & d pèmèt yo pase nimewo desimal kòm agiman printf "Gen% d lòd ki valè nan% d dola. n" 20 500 Gen 20 lòd ki vo 500 Dola.

li: li yon liy soti nan opinyon estanda (modil yo itilize nan chaje done nan klavye a pou egzanp). Nou ka pase opsyon tankou: -t bay yon limit tan lekti; -a pou chak mo asiyen nan yon pozisyon nan etalaj la aname; -d yo sèvi ak yon delimiter ki pral ekri nan fen liy lan; nan mitan lòt moun.

eko "Ekri non ou ak laprès ENTER" #Li non varyab li non eko "Non ou se $ non"

kalite: dekri yon lòd ak konpòtman li yo. Li kapab itil pou chèche konnen definisyon done pou chak lòd.

tape –a '[' #type di nou ke [se yon Shell builtin lòd [se yon Shell builtin # -a pèmèt jwenn repèrtwar yo ki gen # yon ègzèkutabl ak non an antre. [se / usr / bin / [

ulimit: limite aksè ak itilizasyon sèten resous sistèm nan pwosesis, ideyal pou pwogram ki pèmèt chanjman administratif oswa ki vize a diferan kalite itilizatè yo. Lè w ap mete yon limit nou ekri yon nimewo ki reprezante kilobytes yo nan limit la.

#Nou wè limit nou yo kounye a ulimit - yon # -f pèmèt itilizatè limite pa kapab # kreye dosye ki pi gwo pase 512000 Kb (500 #Mb) ulimit -f 512000 # -v limite memwa vityèl nan pwosesis la. ulimit –v 512000

rete tann: rete tann pou yon sèten pwosesis oswa travay yo dwe te pote soti nan kontinye.

# Script la ap tann pou pwosesis la nan PID # 2585 yo dwe te pote soti

tann 2585

Lòt kòmandman itil ke nou ka ajoute nan Scripts yo reprezante pa senbòl.

!!: kouri dènye lòd la ankò

! wer: egzekite dènye lòd ki te kòmanse avèk ekspresyon "wer" la.

'==', '! =', '>', '<', '> =', ak '<=': operatè relasyon yo.

|: Operatè a OSWA jeneralman itilize yo rantre nan de ekspresyon regilye.

: lòd chape ki pèmèt ou fòma ekspresyon. Pa egzanp: a pou yon alèt son, n pou newline, b pou backspace, elatriye.

Mèsi Juan Carlos Ortiz!

Kontni an nan atik la respekte prensip nou yo nan etik editoryal. Pou rapòte yon erè klike sou isit la.

10 kòmantè, kite ou

Kite kòmantè ou

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make ak *

*

*

  1. Responsab pou done yo: Miguel Ángel Gatón
  2. Objektif done yo: Kontwòl SPAM, jesyon kòmantè.
  3. Lejitimasyon: konsantman ou
  4. Kominikasyon nan done yo: done yo pa pral kominike bay twazyèm pati eksepte pa obligasyon legal.
  5. Done depo: baz done anime pa rezo Occentus (Inyon Ewopeyen)
  6. Dwa: Nenpòt ki lè ou ka limite, refè ak efase enfòmasyon ou yo.

  1.   Mwayen Difisil diro

    Gran! De tout fason 2 kòmantè: tag Ubuntu a mwatye twòp, menm jan li jeneralize yon bagay ki jenerik. Men, si tutoryèl sa yo kontinye avanse, li ta bon si yo lye youn ak lòt ....
    Lòt pase sa, mouvman sa a enteresan!

  2.   Ann itilize Linux diro

    Bon kontribisyon! Gran!

  3.   Giovanni escobar sosa diro

    Se sèlman referans ki manke pou moun ki vle jwenn plis nan pwoblèm lan. Gen kèk bon menm si yo pa tèlman fasil jwenn nan peyi nou yo
    - Yon Gid pratik Linux Kòmandman, Editè, ak Shell Programming, Mark Sobell (Chapit 8)
    - Pwogramasyon bach Pro, Chris FA Johnson (byenke sa a se pou moun ki gen lòt referans oswa yon ti kras plis konesans).

    Bon atik.

  4.   Ann itilize Linux diro

    Bon dat! Mèsi!

  5.   Patricio Dorantes Jamarne diro

    : @ Fonksyon "ouvri sesyon an kòm" efase kòmantè mwen te fè anvan an, kidonk mwen pral rezime li pi lwen:
    travay-CP
    bach: travay: -c: opsyon valab
    travay: l ': travay [-lnprs] [jobspec ...] oswa travay -x lòd [arg]

    -eq -gt -lt pa aksepte varyab pwen desimal, ant fowòm ak fowòm mwen te dekouvri ke bc se yon bon alye:
    si [`eko 9.999> 10 | bc` -ek 1]; lè sa a
    eko "9.999 gen plis pouvwa pase 10, asire w ke processeur ou toujou ap travay"
    Lòt Bagay
    eko «9.999 pa pi gran pase 10, tout bagay mache nòmalman
    fi

  6.   NotFromBrooklyn diro

    Pòs sa a rezime trè byen tout jeneralite yo nan script bach:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Sou sit sa a ou pral jwenn anpil kesyon ak repons sou sengularite frape:
    http://unix.stackexchange.com/questions/tagged/bash

    Men kèk Scripts reyèlman fre, ak hey, ou ka aprann yo lè ou li Scripts lòt moun nan:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   NotFromBrooklyn diro

    Ou gen rezon ak sa ou di, eksepte pou bach. Chak sistèm mwen te wè gen bash nan / bin / bash.

    Men, pou piton, pèrl, Ruby, elatriye, li nan amann yo sèvi ak sa. Mwen fè

  8.   Guille diro

    Azar, nan kolèj nou ap itilize script bash pou done yo se 10, trè bon!

  9.   alèks vi diro

    yon vèsyon pdf pou telechaje ta bon !! 😀

  10.   Marco Antonio De Fuentes diro

    Trè bon sit. Mwen finalman jwenn yon bagay ki itil. Mèsi.