Páginas

Mostrando entradas con la etiqueta programazioa. Mostrar todas las entradas
Mostrando entradas con la etiqueta programazioa. Mostrar todas las entradas

2010/06/09

ARAZOAK FIREFOX nabigatzailearekin

FireFox nabigatzailea ireki nahi nuenean , hasi zen egikaritzen baina tartetxo bat igaro eta gero ez zen ezer ez agertzen. Arazo hori ekiditeko, home -karpetan ezkutatua den .mozilla fitxategiari izena aldatu eta martxan geratu da FireFox famatua

Dena dela , Chromium instalatu nuen badaezpada!

2008/04/02

Komandoen ordezkapena

Erabili ahal dugu komando baten emaitza aldagai baten balioa balitz bezala. Ikusi zenbait adibide:
  • nireDir=$(ls $HOME) ; nireDir aldagaia definitzen da eta ls $HOME komandoaren emaitza baliotzat esleituko zaio. Konprobatzeko egikaritu jarraian hurrengo hau : echo $nireDir
  • ls -al $(type -path bash) ; $(type -path bash) komandoaren emaitza ls komandoari pasatzen zaio
  • Azter dezagun hurrengo script hau:
#!/bin/bash
# data zehatz batean - $1 - uneko katalogan aldatu diren fitxategien izenak
# ematen digu script honek. Scriptaren izena datafitxategiak.sh
function dataBatenFitxategiak{
ls -lad * | grep "$1" | cut -c54-
}
ls -lad $(dataBatenFitxategiak "$1")
# scriptaren amaiera ; gorde goiko izenarekin

Egikaritzeko , idatzi datafitxategiak.sh "12 Jan" , horrekin Urtarrilak, 12 aldatu diren fitxategien izenak ( bakarrik; cut -c54- komandoa exekutatzen delako ) agertuko zaizkigu




Karaktere kateen eragileak -II-

Patroi bilatzeko eragileak, hau da karaktere string batean "patroi" bat bilatu . Ikus dezagun hurrengo adibide hau: bidea = /usr/local/share/qemu/bios.core.bin. Kate horretan hurrengo eragileak aplikatzen zaizkie.
Eragilea------------------------------ Emaitza
${bidea##/*/}------------------------bios.core.bin
${bidea#/*/}--------------------------local/share/qemu/bios.core.bin
${bidea%.*} ---------------------------
/usr/local/share/qemu/bios.core
${bidea%%.*}
-------------------------/usr/local/share/qemu/bios
Ikusten denez, # eta % ikurrek , kateetan zenbait ariketa egiteko balio dute :
${aldagaia##patroi} --> aldagairen balioan adierazitako "patroia" , ezkerretik hasita , aurkitzen bada baliotik zatirik luzeena ezabatzen du eta geratzen dena ematen digu; horregatik
${bidea##/*/}-expresio horretan patroia /edozer / da eta /usr.............qemu/ zati hori kenduta bios.core.bin katea da emaitza
Bigarren kasuan,
${bidea#/*/}--, patroia bera da - /*/ - baina emaitza guztiz kontakoa da, esatebaterako, zatirik txikiena kendu eta geratzen dena izango da emaitza, hua da bakarrik /usr/ # eragileak .
Besteak, % eta %% , antzekoak dira baina eskumatik hasten da alderatzen patroia.

2008/03/24

Karaktere kateen eragileak-I.

Eragile horiek testu kateak kudeatzen laguntzen gaituzte , prozesu-errutinak kodifikatzeko beharra gabe; adibidez horien bitartez aldagai bat existitzen dela ziurta dezakegu, edo katearen zati bat hartu edo ezabatu patroi bat jarraituz, etabar
ADIBIDEAK
${aldag:-balio1} : aldag, baliogabea ez bada (existitzen bada) bere balioa itzultzen du, bestela balio1 ematen digu
${aldag:+balio1} : aldag, baliogabea ez bada (existitzen bada) balioa1 itzultzen du, bestela karaktere gabeko katea ematen digu, haua da: ""
${aldag:=balio1} : aldag, baliogabea ez bada (existitzen bada) bere balioa itzultzen du, bestela definitzen du aldag aldagaia eta balio1 esleizten zaio , balio1 itzultzeaz gain
${aldag:?mezua} : aldag existitzen bada eta ez da baliogabekoa bere balioa ematen digu, bestela aldag:mezua idazten du kontsolan eta scripta gelditzen du. Mezua ez badugu zehazten hurrengo hau izango da aterazten duena: parameter null or not set.
${aldag:desplaz:luzera} aldag aldagairen desplaz.karakterean hasten den eta luzera karaktere kopurua duen azpikatea ematen digu
Aplikazioak:
${egunak:--1} , horren emaitza -1 bada , esan nahi du egunak aldagaia ez dago definututa edota ez du baliorik esleitutua.
${egunak:-+1} , emaitza 1 bada, egunak aldagaiak badu balioren bat esleitutrik
${egunak:?'Kontuz: egunak aldagaiak balioa esleitu behar zaio!!'}, horren emaitza
egunak: Kontuz: egunak aldagaiak balioa esleitu behar zaio!! , bada hor geratzen da srcripta , lerro gehiago prozesatu gabe.
${helbidea:5:3} : demagun
helbidearen edukia Las mercedes,47-Getxo- string dela ; komandoaren emaitza izango litzateke mer
Pentsa ezazu ikasleen notekin fitxategia daukagula : notak.txt ; eta fitxategi horren egitura honako hau dela:
9,34 Koldo Rodriguez
4,56 Miren Pagazaurtundua
7,45 Miren Solaguren
.... ...................................
hau da ikasle bat lerro batean. n nota altuenak jakin nahi dugu( n ez bada zehazten , lehenengo 5 nota altuenak aterako dira).Horretarako hurrengo script hau presta dezakegu.

#!/bin/bash
# notaOnenak.sh scriptaren izena
# Bi parametro pasatu behar ditugu: noten fitxategia, eta n
# Hurrengo komandoarekin lor dezakegu eskatzen dena
sort -nr ${1:?' Noten fitxategia adierazi behar da!'} | head -${2:-5}
# hori da, baino ez
Egikaritzeko, notaOnenak.sh notak.txt 2 , lehenengo bi nota onenak jakiteko

2008/03/22

Aldagaiak Hedatu

Jakina da $aldagaia espresioak aldagaiaren edukia esan nahi duela , era batean esanda, $aldagaia idaztean aldagaiaren hedapena adierazi nahi dugu.
Esatebaterako, adina aldagairen balioa 12 bada $adina delakoak hedatzen du 12 baliora. Idazteko era hori beste baten laburpena da, batzutan ondo idazten ez badugu arazoak dakartzakigu.
Beraz, esan beharra dago $adina era ${adina} erari dagokiola. Noiz erabiltzen dira jakiteko , hona hemen adibide batzuk:
$ izena=Jon
$ deitura= Atxa
$ echo "${izena}_${deitura}
Azkeneko komandoaren emaitza honako hau izango zen: Jon_Atxa
Zer gertatuko litzateke hurrengo honekin?
$ echo "$izena_$deitura"
Emaitza Atxa izango litzateke, arrazoia hau da: Bash-ek $izena_ aldagaia bilatzen saiatuko da, existitzen ez denez ez du hedatuko eta $deitura aldagaiaren hedatzea egingo du.
Labur bliduz: nahasketak daudenean ${...} era erabili.
Beste egoera nahasgarria da posizio parametroak erabiltzen direnean, hau da $12 espresioa Bash-ek hurrengo hau egingo du: $1 aldagaia hedatu du eta jarraian 2 zenbakia idatziko du; ostera , ${12} 12.parametroaren balioara hedatuko du.

Bash Funtzioak

Funtzio bat komando multzo bat da, izen batez antzematen duena.Horrela esanda, sript baten antzekoa izango litzateke esan liteke, baina zenbait alde badaude; adibidez, script batean funtzioak exekuta daitezke script-ari dagokion tarte memorian aldagiak bailitzan.
Funtzio bat definitzeko bi era daude, biak baliokikeak direla.
function funtzio_izena{
...
bash komandoak
...
}

edo -----------------------------------------------------------

funtzio_izena(){
...
bash komandoak
...
}
Funtzioak definitzean inguru-aldagaiak bezala memorian biltzen dira, eta exekutatzeko funtzioaren izena komando lerroan idatzi baino ez da egin behar, dagozkion argumentuekin baldin baditu, jaikna.
Memorian zenbat funtzio dauzkagu jakiteko exekuta daiteke hurrengo komando hau declare -F. ( declare -f komandoak funtzioen inplementazioak ematen digu)
Bestalde, unset -f funtzio_izena egikarituz adierazitako funtzioa memoriatik ezabatzen da.
Gerta liteke izen bera duen script eta funtzioa existitzea ,zein izango zen lehenengoa exekutatzean arazoa sortuz.Bada, ez dago arazorik : kasu hauetan funtzioak lehentasuna du .
Ikus dezagun adibide bat: testu editore bat erailiz , kopiatu hurrengo testu hau:
#!bin/bash
# scrpit-aren izena agurra.sh
clear
echo " eginAgurra() funtzioa erabiliz agurtzen zaitut"
eginAgurra(){
echo " Kaixo $1 laguna"
echo "-----------------------------------------------"
}
eginAgurra #lerro honetan funtzioa exekutatzen da!!!
echo "Agur!!!"

Gorde agurra.sh izenarekin , ta betiko moduan x-baimena jarri exekutatu ahal izateko.Konprobatzeko script-a egikaritu , hurrengo hau idatziz: agurra.sh Pablo



Komandoen historia

Bash-ek erabili diren azkeneko komandoak metatzen ditu .bash_history fitxategian ( fitxategi hori pertsonala da, beraz "home" pertsonalean nork berea gordetzen du) .Ireki eta edita dezakegu edo zuzenean ikusi bere edukia zien den hisotory komandoarekin . Komando horrek .bash_history fitxategiaren edukia pantailatzen du, orduan gezi teklekin gora eta behera komandoetatik mugi gaitzeke; batean kokaturik ENTER tekla sakatuz komandoa exekutatzen da.
Komandoak exekutatzeko ! tekla ere erabili ahal da:
  • !! azkeneko komandoa exekutatzen du
  • !n :n.garren komandoa exekutatzen du
  • !hitza : hitza hitzez hasten den azkeneko komandoa exekutatzen da
Bestalde komandoen historian bilatu ahal dugu : CTRL+R tekla konbinazioa sakatuz gonbiteak (reverse-i-search) era hartzen du eta historian atzerantzako bilaketa egin dezakegu:ENTER sakatuz topatutako komandoa egikaritzen da,ESC tekla sakatuz komandoa editatzera pasatzen gara, CTRL+G bilaketa amaitzen da.

Komando Lerroa

Kontsola eran ari garenean lerroan zehar mugitzeko zenbait tekla konbinazio dauzkagu; ohikoena da [CTRL+C] uneko komandoa geratzeko.Baina gehiago, egon badaude : jakiteko hurrengo komando hau stty -a egikarituz ( kontuz! komando hori term-i dagokio, ez Bash-i) begibistan izango ditugu:
  • CTRL+C : uneko komandoa geldiarazteko
  • CTRL + \ : aurrekoak komandoa behar den moduan gelditzen du, baina arazo batzuengatik CTRL+C konbinazioak ez badu komandoa mozten erabili ahal dugu CTRL+\ konbinazioak non programa edo komandoa gelditzen duen baliaideak ez askatu arren
  • CTRL +D sarrera fluxua mozteko ( eof : end of file)
  • CTRL+U : kurtsorea dagoen puntutik lerroaren hasierako zatia ezabatzen du
  • CTRL + W : uneko posiziotik hitzaren hasierara arte ezabatzen du ( werase: word erase)
  • ......


2008/03/05

Argmentuak pasatzen script bati

Komando-lerrotik script-ei pasatu ahal zaie, hurrengo adibidean azaltzen den moduan. Demagun bi zenbaki batu nahi ditugula; bi aukera ditugu:

  • definitu bi aldagai, zenbakiak jasotzeko , eta eragiketa egin:
#/bin/bash
# script-aren izena : batuketa.sh
zenbaki1=5
zenbaki2=3
batura=$zenbaki1+$zenbaki2
echo " Zenbakien batura $batura da"
#-------- amaiera------
Pentsa ezazu beste bi zenbaki batu nahi izanez gero , editatu beharko genuke eta balioak aldatu
  • eragiketa prestatu eta teminaletik zenbakiak eman.
#/bin/bash # script-aren izena : batuketa2.sh
batura=$1+$2
echo " Zenbakien batura $batura da"

Bigarren kasu honetan, balioak ez dira inon agertzen, beraz zein batura kalkulatzen da?. Hori jakiteko hobe da egikaritzea , horretarako hurrengo hau idatzi beharko genuke batuketa2.sh 7 8 , horrekin adierazten dugu $1 berdin 7 , eta $2 berdin 8 izango zirela; eta batuketa2.sh 20 67 idaztean $1 berdin 20 , eta $2 berdin 67 dira, hau da komando-lerrotik bi argumento pasatzen zaizkio batuketa.sh script-ari.
Bash-ek posiziozko arumentoak erabiltzen ditu, hau da, komando-lerroan agertzen den ordenean esleitzen zaizkie $1 , $2, ...$9 aldagaiei . Horretaz gain, $0 aldagaiak script-aren izena gordetzen du, eta $* edo $@ aldagaiek argumentoen zerrenda gordetzen dute.
Adibidea:
#/bin/bash
# script-aren izena proba.sh da
# scrip honetan $0, $1,.. erabiltzen dira
batura=$2+$3
echo "Kaixo $1, zure script-aren izena $0 da, pasatu didazu argumento hauek $@ "
echo " pasatutako zenbakien batura $batura da "
# ---------------- amaiera -------------------------
Exekutatzeko , proba.sh Koldo 12 97 , edo nahi den argumentuekin; beti $1 lehenengo parametroa izango da, $2 bigarrena eta $3 hirugarrena

2008/03/04

Teklatutik , aldagaiei balioak eman

Aldagaiak, definitu eta balioa esleitu egin dezakegu komando bakar batean. Adibidez adina=23 ; horrekin adina aldagaia definitzen da eta 23 balioa ematen zaio bidenabar.Baina gerta daiteke, aldagaiak edozein balioa hartzea geuk emanda, kasu horretan sarrera standarretik pasatzen zaio, interaktibitatea sortuz.Horretarako read komandoa erabiltzen da.
Egin proba hurrengo script-arekin:
#/bin/bash
echo " Idatzi zure izena :"

read zureIzena

echo "Idatzi zure adina :"

read adina

# pantaila ezabatzen dugu

clear

echo " Zu zara $zureIzena eta $adina urte dituzu"

echo " ezta?
"


Egikaratzen denean , Idatzi zure izena esaldia agertuko da pantailan ,eta hor geratzen da , teklatuan zerbait idatzi denaren zain; ENTER sakatu orduko , balioa zureIzena aldagaiak jasoko du; berdin adina aldagaiarekin

Bash Aldagaiak

Aldagaietan, balioak (zenbakiak, edto textua) bilzten dira, kalkuluak egiteko. Fisikoki, aldagaiak memoriako guneak dira , non balioak metatzen diren. Gune horiek izendatzen dira "izen" batez , eta izen horrekin identifakatzen dira , beraz aladagai informatikei buruz hitz egiten denean izena eta edukia bereiztu behar dira. Adibidea : herria1=Berango , eginez gero herria1 aldagaia definitutzen da, Berango balioarekin .Aldagaieren balioa errefrentziatu nahi bada $herria1 , idatzi behar dugu.
Idtaz dezagun programatxo bat. Ireki terminal bat , nahi duzun textu editorearekin ( gedit, adibidez)
laguna@LinuxUbuntu: gedit aldagaiak.sh
Agertzen den leihoan idatzi, hurrengo hau:
#/bin/bash #aaldagaien adibidea : hau komentarioa da
#-------------------------------------------
izena=Jon
abizena=Lopez
herria=Londres
echo " $Jon jaunak, $abizena du abizena , eta $herria -en bizi da "
#---- script-aren amaiera

Gorde, ezer barik. Betiko moduan, exekutatze baimenak ematen diogu:
laguna@LinuxUbuntu: sudo chmod a+x aldagaiak.sh
era horretan aldagaiak.sh fitxategia exekutagarri bihurtu dugu. ( ls -al komandoa egikarituz gero fitxategiak zerrendatuko dira, eta exekutagarriak direnak berde koloreaz bereziten dira)
Exekutatzeko, idatzi laguna@LinuxUbuntu : ./aldagaiak.sh , hurrengo emaitza hau pantailan izango dugu Jon jaunak Lopez du abizena, eta Londres -en bizi da

Oharra: laguna@LinuxUbuntu: dagoen prompt-a ( gonbitea) da

2008/02/21

Ingurune-aldagai bereziak

Ubuntun, beste Linux-eko distroekin bezala, erabiltzaile orok badu bere ingurune pertsonalizatua sisteman konekxioa egiten duenetan, adibidez HOME, PATH ,PS1, PWD,MAIL, DEFAULT_BROWSER,LANG, SHELL,... . Ordea, aldatu ezin diren aldagairik egon badaude. Ikusi ondorengo hauek:
  • $0 : aldagai horren balioa da programaren ( script) izena
  • $1,$2,...$9 : programari pasatzen zaizkion parametroak . Demagun, teklatutik hartutako bi zenbakiren batura kalkulatzeko script bat egiten dugula, izan bedi batuketa.sh programaren izena. Demagun exekutatzeko idazten dugula batuketa.sh 5 9 . Kasu horretan, $1 aldagaiak 5 balioko du, $2 aldagairen balioa 9 da, eta $0 aldagaiaren balioa batukaeta.sh
  • $* : pasatutako argumentoak , zerrenda batean jarrita . Aurreko adibidean $* alagaiaren balioa izango da 5 9 , hau da "bost" eta "bederatzi"
  • $# : argumentu kopurua . Aurreko adibidean 2 izango litzateke $#-ren balioa
  • $$ :uneko prozesuaren identifikatzailea, hau da PID

2008/02/10

Bash programazioa-III-

BASH -arekin hasten
Komandoak fitxategietan bildu ahal dira geroago denak batera exekutazteko. Komandoez osatutako fitxategiek script hartzen dute izen. Beraz, script bat sortzeko textu editorea ( vi, nano, gedit,...) baino ez dugu behar . Geroago horren inguruan oharrak emango dira, momentuz lehengo programatxoa egiteko segi hurrengo urrats hauek:

  • Ireki terminala
  • Exekutatu gedit kaixo.sh : honekin gedit editorea abiatu eta kaixo.sh fitxategia sortuko du.
  • Idatzi agertzen diren moduan hurrengo lerro hauek:( zenbakiak kenduta)
  1. #!/bin/bash
  2. # hau da nire lehenengo script-a
  3. echo Kaixo guztioi
  • Gorde fitxategia eta itxi gedit programa .
  • script-a egikaritzeko , idatzi bash kaixo.sh
Azalpenak:
  • script-a kaixo.sh izendatu dugu, hau da .sh luzapena jarri diogu; hori ez da beharrezkoa, Linux munduan fitxategiek ez dute luzapenik baino, argitasuna dela eta, komenigarria da eta horrela bereizten dira .
  • script-aren lerroei dagokienean: #! : horrekin bash shell non dagoen adierazten dugu ( horrek balio du beste interpretatzaileekin ere , hau da #!/usr/sbin/php adierazi balitz php scripta izango zela) ; # : horrekin lerro bakarreko komentarioak hasten dira ; echo : komando bat da, eta atzean datorrena bistarako du; komandoak lerro batean idazten dira ( \ "slash" horrekin komandoa bi , (edo gehiago) lerrotan idatz daiteke ); lerro batean komando bat baino gehiago idatz daitezke , horretarako "," (koma) erabiltzen da komandoak bereizteko
  • Egikaritzeko bash hello.sh idazten dugu; horrekin zer adierazten da? bash programari deia egiten diogu hello.sh script-a exekuta dezan; beste era batean esanda, bash exekutatzen dugu hello.sh argumentua pasatuz
  • Zer pasatuko litzateke komando lerroan hello.sh idatzi bagenu? . Erantzuna--> bash:hello.sh : komadoa not found izango zela , hau da bash shell-ak ez du hello.sh komandoa aurkitu, edo beste era batez esanda hello.sh ez da exekutagarria; ordea, dena dela exekutatzen badugu ls -al , ez digu akatsik emango hello.sh fitxategia hor baitago.Zergatik lehenengo erantzuna? Exekutagarriak diren "fitxategiak" dituzten katalogoak , PATH inguru alagaiak kontrolatzen du. Ondorioa: gure script-ak zuzenean egikarigarraik izateko nahi badugu PATH aldagain egindako script-eko karpetaren bideak egon behar du
  • Egin dezagun beste proba bat. Idatzi ./hello.sh . Gogora ezazu . dela uneko katalogoaren izena, beraz ./hello.sh , fitxategia ,zehatz mehatz, non dagoen eesaten diogu bash-i . Horren emaitza izango zen : bash: ./hello.sh: Permission denied .Orain ez digu esaten ez dela fitxategia aurkitzen ( guk espreseki adierazten baitiogu), baizik eta exekutatzeko baimenik ez daukagula.
  • Beraz, aurrekoa kontuan harturik script-a exekutagarri bihurtu behar dugu. Nola? , baimenak aldatuz. Gogora ezazu fitxategiek baimen bereziak dituztela .Era ezberdinetan alda daitezke baimenak. Ikus ditzagun : sudo chmod 750 kaixo.sh edo sudo chmod u=rwx,g=rw kaixo.sh. ( aldatzeko root izan behar dugu, horregatik sudo hori )
  • Baimenak aldatu ondoren , gure lehenengo script-a egikaritu ahal dugu idazten ./kaixo.sh
  • bash shell-ak bilatu behar dituen fitxategiak inguru-aldagai batean jasotzen dira.PATH da aldagai hori ( letra larriaz!!!!) . Ordenagailuan daukagun aldagai horren balioa jakiteko idatzi komando-lerroan echo $PATH .Zuk aldatu ez baduzu, ohikoena da /bin : /usr/bin izatea, hau da komandoak /bin karpetan edo /usr/bin beste horretan aurkituko dira. Horregatik, komando-lerroan kaixo.sh idazti dugunean ez duela fitxategia aurkitzen erantzun digu. Baina PATH -aren balioa alda dezakegu, horretarako idatzi PATH=$PATH:. ; hau da balio berria izango da: zaharrena -$PATH- , gehi laneko katalogoa , puntuz (.) adierazten dena, horretan script-a gordeta baitago. Kontuz, berdin ikurraren (=) aurrean eta atzean ez dagoela hutsunik egon behar; bestalde : ( bi puntu) PATH balioak bereizteko erabiltzen dira.
  • PATH ez badugu aldatu nahi , script-a /bin edo /usr/bin karpetatik batean gorde, hori arrikutsua bada ere. Hobe izango litzateke gure script-etarako katalogo bat /usr/bin katalogoan sortzea, ondoren gehitu PATH aldagaian!!!.
  • Gertatzen dena da, PATH aldagaiaren balio berria desagertuko dela ordenagailu amatatu ondoren; behin betikoan jartzeko ikasiko dugu beste momentu batean


2008/02/04

Bash programazioa II

ESPRESIO ERREGULARRAK
Hain ezaguna den *.txt adierazpena espresio erregularratzat jotzen dugu, hau da * karaktereak esanahia berezia du esaldi hauetan.
Adibidez, exekutatzen badugu
  • ls -l *.txt txt hizkiekin bukatzen diren fitxategiak zerrendatuko dira
  • ls -l fi*t fi hizkiekin hasi eta t-rekin bukatzen diren fitxategiak aterako dira
* karaktere horretaz gain , badaude beste espresio erregular batzuk. Hona hemen sarri erabiltzen diren zenbait.
? edozein karaktere ordezkatzen du . et?e izan daiteke etxe, etze,etse. Adibidea
  • ls -al urtea200? : urtea200a ,urtea2003 urtea200d urtea200x ,...izango da emaizta, baina ez urtea20010,...
Parentesiak [] karaktere multzo bat ordezkatzen du. Ikus dezagun adibide batekin, e[t,n]e honekin bi hitz ordezkatzen ditugu : ene , ete . ASCII karaktere multzo bat adieraz daiteke: [a-z] edozein letra ordezkatzen du; are gehiago [a-zA-Z] letra xeheak eta larriak ordezkatzeko; edo [a-zA-Z0-9] etab.
Adibidea:
  • ls -al ariketa[0-9] : ariketa0, ariketa1, ariketa2,...ariketa9 bistarauko dira, existituz gero
Hau da, [..] barruan dauden karaktereetaik BAT bakarrik hartu
Kontuan izan komandoek , ls, cp,... etab, ez dituztela espresio erregularrak ikusten, baizik eta euren emaitza. Ikus dezagun hurrengo adibidea:
  • cp fitxategi[0-4] /Home/jon
Lehenengo, espresio erregularra garatuko zen : fitxategi0 fitxategi1 fitxategi2 fitxategi3 fitxategi4 .Oduan, multzo honetako bat edo geihago existituz gero kopiatko dira adierazitako katalogora, baina bat ere ez balego emaizta ( errore mezua) izango litzateke eta honako zerbait ikusiko genuke
cp: fitxategi[0-4] : No such file or direktory.
hau da, hartzen du fitxategi[0-4] fitxategiaren izena eta, jakina ez dago laneko katalogoan.

! karaketerak "EZ HARTZEKO" balio du. Ikus dezagun adibidea:
  • ls -al [!0-9]fitxategiak
digitoz hasten ez diren fitxategiak zerrendatzeko
Informazioa geihago , hemen

Bash programazioa I

SARRERA

Shell programa bat da, eta teklatuan sartzen diren karaktereak atzematea ditu, Windows-en monduan command.com programak egin zuen antzera. Karektereek Sistema Eragileak (SE) ulertzen dituen aginduak osatzen badituzte , agindu horiek fitxategi batean jaso ahal dira gero egikaritzeko.Fitxategi horiek script-tzat ezagunak dira. Garai batean hori zen SE-ra aginduak pasatzeko bide bakarra, egun GUI ( Graphical User Interfaces) , hau da era grafikoak, badauzkagu gauza bera egiteko.

Linux sistemak shell batzuk ditu : bash, tcsh, zsh,... Programa hauekin script-ak sortzen dira ; hurrengo adibideetarako Bourne Again Steve Bournek -bash- Shell erabiliko dugu.

Esan den moduan, ariketak kontsolan ( CLI : Comman Line Interfaces ) probatuko ditugu .Labur bilduz, script bat egiteko behar duguna da: textu editore bat, eta shell bat. Editorea Linux-ek duen vi, nano, gedit, ..., eta shell-erako bash delakoa.

Hasteko , begiratuko dugu erabiltzen dugun shell zein den; horretarako ireki terminal bat eta idatzi:

echo $SHELL.

Emaitza /bin/bash izango da; hau da bash programa /bin karpeta dagoena. Bertsio batzuk daude, jakiteko zein dira daukaguna, idatzi

echo $BASH_VERSION

Gure makinan erabili ahal diren beste shell-ak zeintzuk diren ; egikaritu

cat /etc/shells

(Ez baduzu bash erabiltzen, lehentsia egiteko idatzi chsh -s /bin/bash , hau da ChangeShell (chsh ) bash-era) .

Honaino ailegaturik, alde batetik ,esan dezakegu prest garela script-ak egiteko, bestetik erabili ditugun aginduetan hitzak era ezberdinetan idatzita daudela; adibidean echo $BASH , echo agindu bat da, eta $BASH ingure-aldagaia , era horretan adierazten dira : aginduak letra xehez ,aldagaik larriaz

Script-lengoaia hauek exekutatzeko ez dira konpilatu behar, interpretatzeko modukoak direlako, hau da, aginduak banan-banan probatu ahal ditugu eta aldaketaren bat eginez gero zuzenean ere konproba daitezke.Dena dela, goi mailako lengoia batek dituen agindu egiturak ditu bash programak: aldagaiak, balditzazko egiturak, errepikakorrak etab.