Páginas

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