Páginas

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




Irudiak: . bmp --> .jpg

GNU munduan, irudiak formatu ezberdinetan adierazteko tresna multzo bat badago NetPBM paketean , zein helbide honetan aurki daitezkeen. Hemendik tarball jaitsi eta instalatzeko aginduak leku horretan bertan daude . Paketea instalatu ondoren gure helburua honako hau izango da: script bat sortzea irudiei formatuak aldatzeko.

#!/bin/bash
# scriptaren izena bmpTojpg
echo Idatzi bihurtu nahi duzun irudiaren izena
sarrera_irudia=${1:?'Leheengo argumentua ez didazu eman'}
tarteko_irudia=${sarrera_irudia%.bmp} .ppm
irteera_irudia=${2.?-${tarteko_irudia%.ppm} .jpg}
# NetPBM paketetik bmptoppm eta ppmtojpeg komandoak erabiliko dira
bmptoppm $sarrera_irudia > $tarteko_irudia
ppmtojpeg $tarteko_irudia > $irteera_irudia

Gorde textu-fitxategi hori bmpTojpg izenarekin , exekutatzeko baimenak eman eta egikaritu konprobatzeko.


Script horretan kateen eragileak erabili dira , ondorengo post honetan edo beste honetan azalten den moduan

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



Bash Funtzioak


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/18

SAMBA -II-

SAMBA programari esker, sare batean Windows eta Linux sistemen artean zenbait errekurtso parteka daitezke. SAMBA-k smbd eta nmbd bi daemon horiek erabiltzen ditu. smbd daemon-ak 139 portua entzuten ditu bezeroen eskaerak, inprimaketa eta fitxategien partekatze zerbitzuak emateko, haatik nmbd besteak zerbitzariaren aldetik funtzionatzen du, 137 portuan entzutez.
SAMBA martxan jartzeko / geldarazteko
/etc/init.d/ smb script daukagu , start | stop | restart argumentuak emanez. Adibidea sudo /etc/init.d/smbd restart berabiatzeko smbf.conf fitxategia aldatu ondoren .
Beste alde batetik,
smbstatus komandoarekin Samba erabiltzen ari diren bezeroak zeintzuk diren berria daukagu.
Erabilera:
  1. Windowsetik erabiltzeko erraza da esportatutakoa publikoa denean. "Sare guneetara" jotzen dugu, bertan "sare osoa" ikertu eta hor agertuko zaigu smbf.conf fitxategian egindako aldaketaren arabera konpartitutako katalogoak edo inprimagailuak
  2. Linux-etik Bi kasu aipatu behar dira:
  • Linux eta Windows makina berean daudenean: kasu horretan ez dugu SAMBA erabili behar, zuzenean munta daiztezke Windows partizioak fstab fitxategian fat32 edo ntfs motakoak izanik
  • sare bereko makina ezbedinetan daudenean samba protokoloa erabili behar da : zerbitzarian samba paketea , eta bezeroan smbfs paketeak instalututa ondoren.Komando lerroan smbclient komandoak erabiliz Windowseko baliabideak eskura ditzakegu. Komandoaren sintaxia hau da: smbclient [baliabidea] [password] [aukerak]. Adibidea smbclient //192.168.168.72/printer -U erabiltzailea . Era gardenean egiteko smbmount komandoarekin lortzen da. adibidea:
smbmount //zerbitzaria/katlogoa /puntu/muntaketa -o username=erabiltzailea
Ikusten denez mount komandoaren sintaxiaren antzekoa du smbmount komandoak. Aurreko adibidean /puntu/muntaketa-n partetekatutako baliabideak ikusiko dira Linux makinan.Era automatikoa egitearren fstab fitxategian ,ohiko moduan, ikusi nahi dieren fitxategiak puntu batean muntatzen dira non fitxategi mota smbfs zehaztuko den


Sare Lokaleko Zerbitzua: SAMBA-I-

Sare lokalean aritzeko Linux-ex, bi zerbitzu eskaintzen digu : inprimaketa eta Windows-eko fitxategiak; hau da sare batean Windows eta Linux sistemak elkarbizitzen badira errekurtsoak parteka daitezke, smb eta nmbd daemonetan oinarritzen den SAMBA programa erabiliz. Programa horren helburua errekurtsok konpartitzea da: beraz, Linux-eko CDROM, inprimagailua edota sistema fitxategia Windows-eko makina batetik erabili ahal dira ; eta alderantziz Linux sistema batetik Windows zerbitzariak atzitu ditzakegu.
UBUNTUn samba paketea instalatu behar dugu esportazioak egiteko, hau da zerbitzarian, eta bezeroetan smbfs paketea, muntaketak egiteko . Gerta liteke makina bezero eta zerbitzaria izatea, kasu horretan bi pakete instalatzeko beharra dago.
Windowseko erabiltzaileek , Linux zerbitzariko errekurtsoak erabili ahal izateko kontu bat eduki behar dute, beraz sortuko diogu, bai Webmin interfza grafikoa erabiliz edo komando lerrotik . Kontua sortu baino lehen , beste zerbaiterako ez bada, komenigarria izango litazateke kontsola "ezkutaturik" edukitzea, modu horretan ez luke sisteman sartu izango . Hori lortzeko , kontua sortzean /bin/false eskaitzen zaio. Hori guztia egiteko:
sudo useradd -c Windows-erako erabiltzailea -s /bin/false erabiltzaile_izena
sudo passwd erabiltzaile_izena
( bitan errepikatu pasahitza)
Horrekin erabiltzailea sortu dugu Windws-eko makina batetik Linux ordenagailu baten esportatuko errekurtsoak erabili ahal izateko.
Bezeroaren aldetik, zenbait aldaketa aldaketa egin behar dira Linux makina sarean ikusgarri izan dadin . Hori , /etc/samba/smbf.conf fitxategia editatuz lortzen da. Fitxategi hori blokeka antolatuta dago , hona hemen esanguratsoenak:
  • [global] --> alderdi orokorrak
  • [homes] --> berez, samba programak /home karpeta eskuragarri jartzen du
  • [cdrom]--> berezitasu batzuk daude:
    • path = ...puntu muntaketa...
    • read only = yes ..edo no
    • public = yes ...
Demagun katalogo bat esportatu nahi dugula: aipatutako sekzioen antzeko bat gehitu beharko genioke smbf.conf fitxategiari. Adibidea : /usr/var katalogoa ikusgarri utzi nahi dugu
[fitxategiak]
path = /usr/var
read only = yes
create mode = 0750

[fitxategiak] : adierazten dugu sekzio berria hasten dela. "fitxategiak" erabiltzileek partekatutako katalogoa ikusiko duten izena izango da, hau da : sarean exploratzean fitxategiak hitza ikusten dutenean /usr/var katalogoko fitxategiak izango dira . Ez da esan behar izena beste bat izan daitekeela, [Linux_var] esaterako.


2008/03/13

NFS zerbitzua

NFS (Network File System) zerbitzuak makina baten partizioa beste makina batean muntazteko balio du , partizio lokala balitz bezala, hau da zerbitzu horren bitartez sarean zehar, zentzu zabalean, fitxategiak partekatu ahal ditugu. Sare zerbitzua da, TCP/IP protokoloa jarraituz. NFS zerbituak funtzionatu ahal izateko portmap zerbitzua instalaturik izan behar dugu aurretiaz. Zerbitzu hori jakiteko martxan dagoen , exekutatu ahal dugu hurrengo komando hau:
ps aux | grep portmap
Ateratzen den mezuan , ikusi beharko genuke portmat egikaritzen dagoen ala ez. Zerbitzu hori- portmap delakoa - RPC urruneko zerbitzariarekin konexioak egiteaz arduratzen da. Ubuntun nfs zerbitzaria instalatzeko nfs-kernel-server paketa eskuratu behar da, edo zuzenean
sudo apt-get install nfs-kernel-server
Instalazioa egin ondoren , portmat-aren zenbat instanzi exekutatzean dauden jakiteko :
rpcinfo -p
horren emaitza protokoloa, bertsioa, portua,.. balioen zerrenda izango da. Zerrenda horretan NFS zerbitzua agertu beharko zaigu, beste batzuen artean.
Konfigurazioa bi fitxategitan oinarritzen da:
  • zerbitzarian: /etc/exports
  • bezeroan : /etc/fstab
Irakurle adituak ikusten duenez, exports fitxategian partekatu nahi dugun katalogoa adierazteaz gain, norekin eta zein baimenekin esaten da. Demagun zerbitzariaren /tmp katalogoa sareko konputagailuetatik atzigarria izatea nahi dugula. Hori balitz, /etc/exports fitxategiari hurrengo lerro hau gehitu beharko genioke:
/tmp 192.168.4.0/24 (rw)
hau da, /tmp katalogoa atzitu ahal da , 192.168.4.0 sareko konputagailuetatik , irakurtzeko-r- eta idazteko -w- baimenak izanik.( Jakina, adibide bat da, beraz gure sarera egokitzeko beharra daukagu). Kasu horretan, sare osorako exportatu dugu, baina makina zehatz bati ( IP bati, finean) egin dezakegu , adibidez:
/tmp 192.168.4.34 (rw)
/tmp 192.168.4.34 (rw) 192.168.4.10(ro)
azken kasu hauetan , 192.168.4.34 Ip duen makinak atzitu ahal du, bigarren kasuan bi makinentzako
Labur bilduz, konpartitu nahi ditugun
zerbitzariaren fitxategiak /etc/exports fitxategian expreseki adierazi behar ditugu, norekin eta zein modutan ( read, write) aipatuz.
Bezeroaren albotik, /etc/fstab fitxategia aldatu behar dugu lerro bat gehituz.Gogora dezagun , fitxategi horretan muntaketu puntuak adierazten direla, hori izanda karpeta bat sortu behar dugu urruneko katalogoa finkatzeko . Demagun gure karpeta pertsonalean urruneko katalogoa "agertzea" nahi dugula:
sudo mkdir /home/jon/urruneko_tmp

hau da , /jon karpetan urruneko_tmp izeneko karpeta bat sortu dugu. Orain /etc/fstab fitxategia ireki eta lerro hau gehitu:( zerbitzariaren IP 192.168.4.1 baldin bada)
192.168.4.1:/tmp /home/jon/urruneko_tmp nfs,timeo=20,intr
Azken aldaketa horrek eraginik ahal izateko , exekutatu sudo mount -a ; muntaketa egitean akatsik ez badago gure urruenko_tmp katalogoan zerbitzariaren /tmp katalogoko fitxategiak begibistan egon beharko lirateke.
Gehitu diogun lerroaren sintaxia,hau da:
zerbitzaria:partekatu_katalogoa muntaketa_puntua aukerak
Aukerak hauek dira:
  • nfs : fitxategi sistema
  • rw : irakurri/idatzi baimenak
  • time0=x : x zenbat denbora zehar (segundu hammarretan), saiatuko den urruneko muntaketa egiten errore-mezua eman aurretik
  • noauto: erabiltzaile arruntek ezin dute muntaketa egin, administrailearen lana baita
  • ....



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/03/01

7z

Tresna asko dauzkagu fitxategiak trinkotzeko/ destrinkotzeko , 7z da horietariko bat.Inoiz ez duzu ikusi 7z luzapena duen fitxategiren bat?. Bada, huek dira fitxategi trinkotuta , zip, rar, arj,.. bezalakoak; onena dela esaten duenik badago , hori esatera nik ez nuke ausartuko, baina kontua da inoiz halako fitxatgiren bat destrinkotzeko beharra daukagula nonbait; beraz tresna hori instalatu behar dugu Ubuntun berez ez baitago.
Hona hemen instalatzeko urratsak. Terminaletik
sudo apt-get install p7zip-full

Beste modu batean jaitsi tarball , ondoren
$ tar -xvjf p7zip_4.57_src_all.tar.bz2
$ cd p7zip_4.57
$ make all3
# make install

Testu eran funtzionatzen du, beraz zenbait aukera jakin behar ditugu.Duen sintaxia jakiteko terminaletik , sartu 7z komandoa , eta begibistan izango dituzu. Garrantzitsuenak dira :
e erauzteko
a trinkotzeko

Adibideak
:
  1. Demagun fitxategi.7z destrinkotu behar dugula , hurrengo komandoa sartu behar da komando-lerrotik 7z e fitxategi.7z
  2. Demagun fitxategi1.txt , itxategi2.txt , itxategi3.txt trinkotu nahi ditugula; erabili hurrengo komandoa 7za a fitx.7z fitxategi1.txt fitxategi2.txt fitxategi3.txt
  3. Demagun ariketak izeneko katalogoa konprimitu nahi dugula , erabili 7za a ariketa.7z ariketak

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/19

grep Komandoa

grep ( Global Regular Expression Print ) komandoarekin bilaketak egin daitezke fitxategietan. Komandoak egiten duena zera da : emandako fitxategian bilatuko du adierazitako hitzak, espresio erregularrak edota patroiak aurkitzen diren. Fitxategia ez bada aipatzen sarrera standarretik ( stdout) hartuko du. Emaitza pantailan , berbideratzen ez badugu, agertuko da.
Zenbait aukera jar daitezke; ohikoenak honako hauek dira:
-c (count ) aurkitutako lerroen zenbakiak baino ez du erakusten
- i (ignore) berdin da letra larriaz zein xeheez bidalketarako.

Proba bat egiteko sortuko dugu hurrengo fitxategia
cat lagunak.txt
Koldo Salaberria 974563465 koldo@sare.net

Marta Gonzalez 973648912 martin@yahoo.es

Sabin Intxarte 679874623 sbit@yahoo.com
Miren Gonzalez 890565456 mg@opnetra.net
Ana gonzalez 6780907897 angaz@osasuna.net
[CTL+D]

Era horretan lagunak.txt fitxategia egin dugu,
cat komandoaz baliatuz.
Ondorengo proba hauek egin ditzagun:
grep Gonzalez lagunak.txt
horren emaitza , fitxategiaren 2. eta 3. lerroak da ;
grep -i Gonzalez lagunak.txt
oraingo kasuan 2,4,5 lerroak dira bilatutakoak;
grep -n '^[A-N]' lagunak.txt
azkeneko kasuan, espresio erregularra erabiltzen da , n aukeraz gain. '^[A- H]' espresioak honako hau adierazi nahi du:
  • ^ lerroaren hasiera
  • [A-H] A,B,....H letra multzoa
modu horretan, A, B ... edo H hizkiekin hasten diren lerroak izango da komando horren emaitza.

grep -n '^M' lagunak.txt
M-z hasten diren lerroak

Aplikazioak: grep komandoaren funtzionamendua ikusi ondoren nork bere atekina atera dezake, adibidez

ls -al | grep *.sh
espresio horretan ez diogu grep komandoari sarrera adierazten , beraz pantailatik hartuko du, ls komandoaren emaizta izanik hain zuzen ere. Emaitza hau izango da: gauden katalogoko sh-arekin bukatzen diren fitxategiak

2008/02/17

GONBITEA pertsonalizatu

Kontsola birtuala edo terminala irekitzen dugunean , lerro hasiera PS1 aldagaiak ezartzen du. Adibidez, nire kasuan honako gonbite (prompt ) daukat laguna@LinuxUBUNTU:~$ ; hori da PS1 ingurune aldagaiaren balioa . Nork berea dauka, beste batek makina berberean konexioa egiten badu, daukana aterako zaio. Aldagaiaren balioa alda dezakegu ; ikus ditzagun adibide batzuk.
Oharra: esleipena eta exportazioa aldi berean egin daitezke , ondorengo era honetan export aldagaia=balioa . Balioa edozein "informazio" izan daiteke, esaldi bat, beste aldagai baten balioa, etabar
  • export PS1="ongi etorria > " , gonbitea ongi etorria > izango da
  • export PS1="\u@\H > " , hasieraren antzeko gonbitea izango litzateke. Espresio horretan u letrak (user) erabiltzailearen izena adierazten du; gero @ karaltera dator, eta hurrengoa H ( host) makinaren izena da, eta bukatzeko > karakterea. Gonbitea, laguna@LinuxUBUNTU > izango da.
  • export PS1="\d:\u:\w:>" , \d data adierazteko, ondoren : bi puntu, \u erabiltzailearen izena , ondoren : bi puntu; \w uneko katalogoen bidea , eta amaitzeko :> . Emaizta , honako hau da ig. ots 17:laguna:~:>
  • Koloreak ere erabili daiteke, adibidea : export PS1="\e[32;40m\w> " , kasu horretan \w uneko katalogoa (textua) berdez --32-- eta fondoa beltzez-- 40 - agertuko dira gonbitean
Koloreak aukeratzeko ikusi beheko iruditik aukera daitezke

lehenengo planoaren kolorea jartzeko 30- 37 bitarteko zenbakiak erabili, eta atzeko planorako 40-tik 47-ra



Gonbitean, aukera gehiago daude; hona hemen batzuk:
  • \s Shell-aren izena
  • \t denbora 24 orduko formatuan
  • \T denbora 12 orduko formatuan
  • \@ denbora 12 orduko am/pm formatuan
  • \v bash-aren bertsioa
Sakontzeko ikusi hau

INGURUNE ALDAGAIAK

Linux sisteman, erabiltzaile-anitzekoa izanik, erabiltzaile orok badu ingurune pertsonalizatua konexioa egiten duenetik . Ingurune hori ingurune-aldagaiek kontrolatzen dute; asko dira baina ikus ditzagun batzuk.
Oharra: aldagaien izena letra larriaz adierazi ohi ditugu, eta datuen balioa eskuratzeko $ ikurra aurrejarri behar diegu
  • USER : erabiltzailearen izena da bere balioa. Konprobatzeko echo $USER terminalean idatzi
  • HOME : erabiltzailearen erro-katalogoa.
  • PWD : (Print Work Directory) uneko katalogoa
  • PATH : komandoak edo fitxategi exekutagarriak dituzten katalogoen bidea. echo $PATH eginez aterako da bere balioa. Ohar zaitez katalogoak bereizteko : ( bi puntu) erabiltzen direla
  • PS1 : horrek prompt-a ( gonbitea) zelan dago osatuta ematen digu.
  • BASH : interpretatzailearen bidea
  • EDITOR : berez jarritako textu-editorearen bidea.
  • ...
  • ..
Testuinguru-aldagai guztien balioa ikusteko erabil ezazu set komandoa . Asko direnez, pipe egitea komeni da : set | more , horrela pantailaz pantaila ikus daiteke set komadoaren irteera. env komandarekin emaitza bera lor daiteke.
Gainerako aldagaiekin bezala , berriak sor ditzakegu, edota daudenei balioa aldatu. Balioa esleitzeko , era arrunta erabiltzen da, adibidez : PATH=$PATH:/usr/local/nire_script ; hau da aldagai_izena=balio_berria.
Aurrekoarekin, balio berriak esleitzen dira, baina ez dute eraginik sortuko diren prozesuetan . Eragingarriak izateko , balio berriak kontuan hartzearen esaterako, export komandoa erabili behar da. Demagun : PATH aldagaiari esleitu diogun balio berriak eragingo die une horretatik aurrera egikaritzen diren prozesuei , hanako hau egin beharko genuke export PATH.


motd Fitxategia

FITXATEGI SISTEMA -motd
Kontsola birtuala irekitzen den bakoitzean, sistemak ongietorri-mezua ematen digu. Mezu hori /etc/motd textu fitxategian dago, beraz alda dezakegu gue gustukoaren arabera. Horretarako daukagun testu editore kutunena abiarazi eta editatu motd ( message of the day) fitxategia.
Jatorrizko mezuak honako textu hau dauka:

Linux LinuxUBUNTU 2.6.20-16-generic #2 SMP Tue Dec 18 05:45:12 UTC 2007 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


2008/02/11

cat Komandoa

Textu fitxategiak kateatu ahal dira cat komandoaren bidez. Komando horren sintaxia honako hau da: cat [aukerak] [fitxategia(k)]. Aukerarik ohikoenak dira -n ( lerroak zenbatzeko ) edo -b (zuritan ez dauden lerroak bakarrik zenbatzeko). Fitxategia(k) ez badira adierazten cat komandoak sarrera kontsolatik hartzen du. Berez, komando horren sarrera eta irteera teklatua eta pantaila dira , hurrenez hurren
Ikus ditzagun adibide batzuk:
  • cat /home/jon/azterketa.txt : Kasu honetan cat komandoaren sarrera azterketa.txt fitxategia da , eta irteera standarrean, kontsola alegia, azterketa.txt fitxategiaren edukiera aterako da.
  • cat : Orain , sarrrera eta irteera standarrak dira , beraz teklatuan lerroa idazten dugun bakoitzean errepikatuko da pantailan ENTER sakatu orduko . Prozedura horretatik ateratzeko CTRL + C
  • cat > /home/jon/oharra.txt : Orain, sarrera standarra daukagu, hau da teklatuan idazten duguna cat komandoak "hartzen" du, oharra.txt fitxategira lerroak berbidaltzen, hau da oharra.txt fitxategia sortzen . Amaiera adierazteko CTRL+D sakatu.
  • cat < /home/jon/oharra.txt : Orain sarrera standarra ez da teklatua , guk beste bat <>
  • cat < /home/jon/oharra.txt > /home/jon/oharraKopia.txt : kasu horretan cat-aren sarrera ( < ) oharra.txt fitxategia da , eta irteera ( > ) oharraKopia.txt fitxategia da. Hori da fitxategi baten kopia egiteko metodo bat
  • cat >>/home/jon/oharra.txt : komando horrek teklatutik oharra.txt fitxategiari lerroak gehitu ahalbidetzen du, Ateratzeko , edo fitxategiaren amaiera adierazteko CTRL +D .

Berbideratzeak

Komandoek ,ekintza burutu eta gero , zenbait mezu eman ohi digute, bai ekintza ondo burutu zen bai akatsaren bat aurkitu bazen. Adibidea: ls -al komandoaren emaitza da fitxategien zerrenda , akatsik ez badago. Ohar zaitez, guk ez diogo shell-i esaten emaitza nora bidali behar duen, hori berez jarrita dago. ls komandoaren irteera standarra kontsola da, eta akatsaren bat badago stderr kontsolora , hau da , "2" zenbaki erakuzlea duen "fitxategira". Irteera horiek alda ditzakegu > ikurra ( sinboloa) erabiliz
ls -al > /home/jon/zerrenda.2008 2 > /tmp/akatsak/zerrenda.err
Horrekin zer adierazi nahi dugu: ls komandoaren irteera berbidaltzen dugu zerrenda.2008 fitxategira, eta akatsak badaude zerrenda.err fitxategian jasoko dira. Beraz > ikurra, irteera standarrak berbidaltzeko erabili ohi da.Ikur horri zenbait aldaketak egin diezaiokegu, jarraian adiereazten den legez:





























ikurra Zertarako
>
irteera standarra fitxategi batera ( edo dispositibora) berbidaltzeko.Fitxategia ez bada existitzen sortuko du, eta berridatziko du baldin eta existitzen bada
>>
Aurrekoaren antzekoa da, baina kasu honetan emaitza fitxategiko edukierari gehituko zaio
2> akats- irteera( stderr) berbidaltzen du fitxategi batera
2>>aurrekoaren antzekoa , baina informazioa fitxategiaren edukiari gehtzen zaio
2>&1stderr, hau da akats-irteera , irteera standarrera ( kontsola) berbidaltzen du
2>&stderr fitxategi batera berbidaltzen du


Adibideak:
  • komandoa > fitxategia : ls -al > ./probat.1
  • komandoa >> fitxategia: ls -al >> ./probat.1
  • komandoa 2> fitxategia : find /home/ez-da-existitzen-katalogoa -name kaixo > errorea
  • komandoa 2>&1 : find /home/ez-da-existitzen-katalogoa -name kaixo >&1

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

Sistema fitxategiarekin zerikusirik duten komandoak

Multzo honetan , dagoeneko ikusi ditugun find eta ls komandoak sartu ahal dira. Ikus ditzagun beste batzuk:
  • cd direktorioa : adierazitako direktoriora joateko (Change Direktory)


    • Adibidea : cd /etc/apt/

  • cp [aukerak] jatorria helburua : fitxategiak edta katalogak kopiatzeko jatorri-tik helburu-ra
    • Aukerak:
    • -R : era errekurtsiboan kopiatzeko, hau da azpikatalogoen katalogo/fitxategiak kopiatuko dira
    • -p helburuko fitxategiaren baimenak , hala nola fitxategien ezaugarriak , jarraitzen dute.
  • pwd : (present work direktory) aukera gabeko komandoa . Gauden katalogoa da bere emaitza
  • mv [aukerak] jatorria helburua : fitxategia(k) jatorritik helburura mugitzeko erabiltzen da. Beti kontuan izan fitxategiak direla , bai fitxategi arruntak ( dokumnetuak, irudiak,...) , bai direktorioak ( barruan ere azpikatalogoak existitu ahal dira). Komando horren emaitza jatorriko fitxategia mugitu ondoren zegoen katalogotik ezabatzea da. Fitxategiak berizendatzeko ere erabili ohi da.
Adibidea:
mv /home/jon/textuak/ariketa1.txt /home/jon/ariketa1.zuzenduta ,
ariketa1.txt izeneko fitxategiak ariketa.zuzenduta hartzen du izena, eta jon karpetara mugitu da
Aukerak:
    • -f : komandoak ezabatu baino lehenago "galdetzen digu" ,eskuarki; f aukerak dezeustatzen du aukera hori. Ez bagara oso ziur ez da komenigarria erabiltzea.
  • mkdir [aukerak] katalogoa: katakologoa izeneko direktorioa sortzen du
    • Aukerak:
      • -m baimenak : baimenak adierazteko era
      • -p : aita-direktorioak sortzen ditu existitzen ez badira.
Adibideak:
  • mkdir lanak : gauden direktorioan lanak izeneko direktorioa sortzen du .
  • mkdir /home/dokumentoak/lanak : /home/dokumentoak katalogoan lanak izeneko direktorioa sortzen du. Demagun , aurreko komandoan dokumentoak katalogoa ez dela existitzen,orduan lanak katalogoa ez zen sortuko !!!.Halako kasuetan -p aukera erabili behar dugu derrigor; hua da , hurrengo honetan mkdir -p /home/dokumentoak/lanak "dokumentoak" izeneko karpeta ez bada existitzen; ezinezko izango zaio komandoari burutzea.Kasu horretan -p aukera erabiltzen da. mkdir -p /home/dokumentoak/lanak , honekin dokumentoak izeneko katalogoa ere sortuko litzateke
  • rm [aukerak] fixategia(k) : edozein motako fitxategiak ( arruntak, katalogoak, estekak) ezabatzen ditu
    • Aukerak:
      • -f : ezer ezean, ezabatu baino lehen gure onartzea eskatzen digu; -f aukerarekin lehenetsitako era galtzen da.
      • -r : katalogoak eta euren edukia ezabatu nahi baditugu -r aukera erabili behar da.
    • Adibideak:
      • rm * , uneko katalogoko fitxategiak ezabatuko dira, baimenak eskatuz
      • rm -rf ariketa* , ariketa hitzarekin hasten diren uneko katalogoko fitxategiak eta karpetak ezabatuko dira, baimenak eskatu arik.

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