Linux skipanalínan

From Fab Lab Wiki - by NMÍ Kvikan
Revision as of 18:04, 1 April 2009 by Spm (Talk | contribs)

Jump to: navigation, search

Grafísk notandaviðmót eru mjög þægileg, en þau geta ekki gert öll möguleg verk. Ímyndaðu þér, til dæmis, að þú þurfir að búa til skýrslu yfir hvaða skrár eru á harða diskinum þínum, í röð frá þeirri stærstu að þeirri minnstu. Hvernig færirðu að? Eflaust mætti gera einhverja flókna leit, en það yrði sennilega smellt hellingsoft.

Áður en að músin var fundin upp notaði fólk skipannalínu, þar sem hver skipun hafði ákveðna merkingu. Í þá daga var hægt að leysa þetta vandamál með:

du -s * | sort -nr > $HOME/space_report.txt

Í dag eru allt of fáir sem vita hvað þetta þýðir, en þetta er í raun einfaldara en nokkur samsetning af “benda og smella”.

Börn sem nota bækur skoða myndirnar og benda á þær. Þegar að fólk eldist lærir það að lesa og skrifa. Nú er komið tími til að læra að lesa og skrifa í tölvuheiminum. Skipanalínan er grunnurinn að tölvulæsi!

Hvað er skel?

Skel er forrit sem tekur við innslætti frá þér, túlkar innsláttinn, og notar þær til að láta stýrikerfið framkvæma aðgerðir. Í gamla daga var skelin eina notandaviðmótið sem fólk hafði, en í dag höfum við grafísk notandaviðmót (Graphical User Interface – GUI) svo sem GNOME, KDE, Windows og Aqua, og skipanalínur (Command Line Interface – CLI) svo sem Bash, TCSH og zsh.

Á flestum Linux tölvum er Bash sjálfgefna skelin, en nafnið er skammstöfun: Bourne Again SHell, en hún er endurbætt útgáfa af skelinni 'sh' sem Steven Bourne skrifaði á sínum tíma. (Nafnið er orðaleikur – rétt eins og í góðum skáldskap máttu búast við að það séu margir orðaleikir í skipannalínunni).

Hvað er xterm, gnome-terminal, konsole, o.s.frv.?

Eftir að grafísk notandaviðmót komu fram hvarf gamli svarti skjárinn með blikkandi kassa, og skipanalínan varð óaðgengileg. Mörg forrit herma eftir þessari gömlu hegðun, og þeir eru kallaðir terminal emulators eða skjáhermar. Xterm, gnome-terminal, rxvt og konsole eru vinsælir skjáhermar.

Gnome-Terminal skjáhermirinn.

Hvernig gangsetur maður skjáhermi?

Flest gluggaumhverfi bjóða upp á einhvern sjálfgefinn skjáhermi. Í GNOME heitir hann 'gnome-terminal', og finnst í Applications → Accessories → Terminal. Sértu að nota annað gluggaumhverfi skaltu leita á skynsamlegum stöðum.

Prufukeyrum lyklaborðið

Ef þú keyrir upp skelina þá geturðu prófað að skrifa einhverjar skipannir. Fremst í hverri línu sést lítil blokk af texta sem heitir prompt. Hún getur litið misjafnlega út, en algengt form er:

spm@cauchy:~$ 

Þessi lína segir þér fernt:

  1. Skelin er tilbúin til að taka við skipunum. (Ef þessi lína er ekki þarna er eitthvað að).
  2. Segir þér hver þú ert (í þessu tilfelli 'spm', því það er notandanafnið mitt)
  3. Segir þér á hvaða tölvu þú ert (í þessu tilfelli 'cauchy', sem er nafnið á tölvunni sem ég er að nota)
  4. Segir þér hvar þú ert í tölvunni (í þessu tilfelli '~', sem er skammstöfun á nafni heimamöppunnar þinnar)

Ef þú skrifar skipun núna kemur hún á eftir dollaramerkinu. Prófaðu að bulla eitthvað:

spm@cauchy:~$ asdfasdfasfd

Þegar þú ýtir á enter, ef að þessi skipun var ekki rétt kemur villa:

bash: asdfasdfasfd: command not found

Hér er 'bash' að kvarta. Forrit segja oft til nafns áður en þau kvarta, til þess að það fari ekki á milli mála hver er að kvarta.

Ef þú villt nota skipun sem þú hafðir notað áður þá þarftu ekki að skrifa hana upp á nýtt - það er nóg að ýta á upp örina. Ef þú ýtir á hana oftar þá ferðu lengra og lengra aftur í tímann. Það eru til ótal leiðir til að vinna ennþá hraðar með skipanalínuna, en þær lærirðu síðar.

Ertu nokkuð rót?

Áður en að lengra er haldið er rétt að athuga hvort þú sért nokkuð rót. Í öllun UNIX kerfum er til ofurnotandi sem getur gert allt, þar með talið að skrifa yfir harða diskinn, ofhita örgjörvann og gera tölvuna ónothæfa. Sá notandi heitir root, þannig að ef að notandanafnið þitt er root fremst í skipannalínunni ættirðu að íhuga að gerast óbreyttur notandi. Það er öruggara, og það er mjög sjaldan sem þú hefur raunverulega ástæðu til að vera rótin.

Ekki láta það rugla þig að það er talað um tvennt sem rótina. Annars vegar er það notandinn 'root' og hinsvegar er það neðsta mappan í skráarkerfinu, '/'. Það ætti oftast að vera augljóst út frá samhengi um hvort er átt.

Stundum þarftu að vera rótarnotandinn. Í þeim tilfellum er oft best að nota sudo skipunina, en nánar verður fjallað um hana síðar.

Ratvísi

Nú færðu að læra nokkrar skipannir: pwd (print working directory - skrifa út hvar þú ert í skráarkerfinu), cd (change directory - breyta hvar þú ert í skráarkerfinu) og ls (list files and directories - sýna lista af skrám).

Ef þú hefur ekki notað skipanalínu áður þá þarftu að einbeita þér vel að þessum part, því það tekur smá tíma að átta sig á hugtökunum.

Skráarkerfið

Skráarkerfið í Linux er svolítið öðruvísi en fólk sem er vant Windows þarf að venjast, en að mörgu leyti er það einfaldara. Í Windows ertu með fyrirbæri sem heitir My Computer og þar inní ertu með öll drifin sem eru í vélinni, og þau heita nöfnum eins og 'C:' og 'D:', og undir drifunum ertu með möppur og skrár. Í Linux þá skipta drifin engu máli fyrir skráarkerfið. Skráarkerfið í Linux hefu bara eina rót, sem er '/'. Undir henni koma nokkrar möppur, og svo aðrar möppur og skrár undir þeim.

Linux filesystem.png

Það eru nokkrar staðlaðar möppur í rótinni, og þær geturðu fundið á öllum Linux tölvum, og meiraðsegja flest UNIX-leg kerfi eru með sama fyrirkomulagið á þessu.

Möppurnar í rótinni eru (í engri sérstakri röð):

  • root - heimamappa root notandans.
  • usr - inniheldur allt sem snýr að notandaumhverfinu.
  • etc - inniheldur allar stillingaskrár kerfisins.
  • dev - inniheldur öll tækin sem eru í vélinni.
  • var - inniheldur keyrsluskýrslur, gagnagrunna og vefsvæði.
  • home - inniheldur heimamöppur óbreyttra notanda.
  • bin - inniheldur forrit sem kerfið þarf til að geta keyrt.
  • lib - inniheldur aðgerðasöfn sem kerfið þarf til að geta keyrt.
  • tmp - inniheldur tímabundnar skrár
  • sys - inniheldur upplýsingar um ástand kerfisins
  • boot - inniheldur það sem kerfið þarf til að fara í gang.

Einhverjar aðrar skrár og möppur gætu verið hér, en það er misjafnt eftir kerfum.

Þetta kann að virðast loðið, en þetta verður allt skýrara þegar þú venst þankaganginum.

Slóðir

Slóðir eru textastrengir sem lýsa einhverri staðsetningu í skráarkerfinu á ótvíræðan hátt. Þær geta verið af tvennum toga, absolute eða relative (hér eru varla til nein góð íslensk nöfn, en segja mætti alstætt og afstætt...). Slóðir nota / (fram-skástrik) til að gefa til kynna skiptingar milli mappa.

Absolute slóðir vísa í staðsetningu með hliðsjón af rót skráarkerfisins. Fyrir vikið byrja slíkar slóðir alltaf á /.

Relative slóðir vísa í staðsetningu með hliðsjón af einhverjum öðrum stað í skrárkerfinu, yfirleitt þeim sem þú ert á. Þær byrja því aldrei á /.

Munurinn á þessu tvennu er lítill - það er alltaf hægt að nota hvort tveggja til að vísa á staðsetningar. Hinsvegar er absolute slóðin ögn nákvæmari þar sem henni er alveg sama hvar í skráarkerfinu þú ert þegar þú notar slóðina. Kosturinn við relative slóðir er að þær eru oft styttri.

pwd

pwd skipunina notarðu til að komast að því hvar þú ert. Þú getur keyrt þessa skipun hvenær sem er til að fá til baka upplýsingar um hvar í skráarkerfinu þú ert. Þetta er gagnlegt þar sem að skipannalínan getur ekki sýnt þér mynd af því hvar þú ert.

cd

cd skipunina notarðu til að breyta um staðsetningu. Þú getur gefið ýmist absolute eða relative slóð sem viðfang, og getur notað styttingar. Nokkur dæmi eru:

$ cd /
  • Fara í rót skráarkerfisins
$ cd ~
  • Fara í þína heimamöppu
$ cd /home/
  • Fara í rót heimasvæða
$ cd ..
  • Fara niður um eina möppu
$ cd fiskur
  • Fara í möppu sem heitir fiskur sem er í möppunni sem þú ert í

Hér setti ég $ fremst í línuna til að tákna promptið, frekar en að skrifa út allt spm@cauchy:~ $. Þú átt þó ekki að skrifa $ táknið!

ls

ls skipunina notarðu til að skoða hvaða skrár eru í möppunni þar sem þú ert. Þú getur keyrt þessa skipun hvenær sem er til að fá til baka upplýsingar um hvaða skrár er að finna. Með því að gefa slóð sem viðfang má skoða hvaða skrár eru í einhverri annarri möppu en þeirri sem þú ert í.

Viðföng og hjálp

Viðföng eru nánari leiðbeiningar til skipannir um hvernig þær eiga að hegða sér. Flest forrit taka við einhverjum viðföngum, en hver þau eru er mjög misjafnt eftir eðli forritsins og tilgangs þess. Flest forrit hafa þó nokkur stöðluð viðföng sem geta hjálpað þér að komast að því hvernig þú gerir það sem þú villt gera.

  • --help eða -h er viðfang sem mörg forrit hafa til að gefa upp hjálp. Prófaðu til dæmis að slá inn ls --help.
  • --version eða -v er viðfang sem mörg forrit hafa til að gefa upp útgáfunúmer forritsins. Prófaðu til dæmis að slá inn ls --version.

Ekki láta þér bregða þótt þetta standist ekki alltaf. Sum forrit hafa ekki þessa möguleika, og sum forrit túlka viðföng allt öðruvísi. Þetta lærist allt.

Oftast nær þegar þú þarft að leita þér hjálpar þá dugar innbyggða hjálp forritsins, en sum forrit hafa nægilega marga möguleika til að þau verðskuldi sína eigin blaðsíðu í handbókinni.

Handbókin (the manual) er innbyggða hjálparkerfið í Linux og öðrum UNIX kerfum. Þar hafa mjög mörg forrit hjálparsíður um sig. Ef þig vantar einhverntíman hjálp um eitthvað forrit, skrifaðu hreinlega man skipunina og settu nafn forritsins sem viðfang. Til dæmis, ef þig vantar að vita nánar um ls, prófaðu þá:

$ man ls

Þá kemur upp handbókarsíða sem þú getur flakkað um með upp/niður örvunum. Notaðu q takkann á lyklaborðinu til að hætta. Viljirðu leita að einhverju orði, gerðu / og skrifaðu svo inn leitarorðið og ýttu á enter. Þá lýsast upp öll orðin sem passa, en þú getur flakkað milli þeirra með n og p tökkunum.

Færa, endurnefna, eyða...

rm

Að eyða skrá er gert með rm skipuninni.

touch

Þú getur búið til tóma skrá með touch skipuninni.

mv

Þú færir skrá með mv skipuninni. Það að endurnefna skrár er líka gert með mv - það er engin "rename" skipun!

ln

Þú getur búið til tengla í skrár með ln skipuninni. Tvennskonar tenglar eru til í Linux: harðir tenglar og mjúkir tenglar.

Harðir tenglar

Harðir tenglar eru í rauninni afrit af skránni sem taka ekki meira diskpláss. Þú getur verið með hundruðir harðra tengla í sömu skrá og skráin mun bara taka það pláss sem fyrsta eintakið tók (plús eitthvað smá reyndar upp á að geyma tenglana sjálfa!). Það sem meira er, þú getur eytt upprunalegu skránni og alla hörðu tenglana, en skráin eyðist bara þegar síðasti harði tengillinn er eyddur.

Þetta er vegna þess að skrár eins og þú sérð þær í skráarkerfinu eru harðir tenglar.

Harðir tenglar eru búnir til með:

$ ln tengill skrá

Mjúkir tenglar

Mjúkir tenglar eru mun líkari þeirri hegðun sem þú hefur vanist úr Windows með shortcut. Svona tenglar eru ýmist kallaðir soft link eða symbolic link á Ensku.

Þeir eru búnir til með:

$ ln -s tengill skrá

stat

stat skipunina geturðu notað til að fá upplýsingar um skrá, til dæmis hve stór hún er, hvers eðlis, og svo framvegis. Þessa skipun þarftu sennilega ekki að nota mjög oft, en það að skilja hvað hún segir getur hjálpað þér að skilja hvernig skráarkerfið virkar.

Dæmi um þetta er þegar ég keyri:

$ stat video.avi
  File: `video.avi'
  Size: 9757264   	Blocks: 19096      IO Block: 4096   regular file
Device: 805h/2053d	Inode: 4366368     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/     spm)   Gid: ( 1000/     spm)
Access: 2009-03-25 13:44:59.000000000 +0000
Modify: 2009-03-25 13:44:55.000000000 +0000
Change: 2009-03-25 13:44:55.000000000 +0000

Svarið sem ég fæ er í mörgum reitum:

Size er stærð skrárinnar í bætum. Blocks segir hve stór skráin er í blokkum, en IO Block segir hvað hver blokk er stór í bætum. Á eftir því stendur hvaða tegund af skrá er um að ræða, en það getur verið regular file (venjuleg skrá), directory (mappa), symbolic link (mjúkur tengill), block device (tæki sem talar á bætum), char device (tæki sem talar í stöfum) og nokkur fleiri.

Device segir á hvaða raunverulega tæki skráin er, Inode segir hvar í því tæki skráin er, Links segir hversu margir harðir tenglar eru í skránna.

Access línan segir hvaða réttindi eru á skránna (réttindi verða útskýrð síðar), en eftir því kemur Uid sem er eigandi skráarinnar og Gid sem hvaða hópur á skránna.

Loks koma þrjár línur sem lýsa því hvenær skráin var síðast opnuð (Access), tengillinn breyttur (Modify) og innihald skráarinnar breytt (Change).

Nokkur algeng forrit og grunnheimspeki UNIX

Nú þegar þú kannt orðið að flakka um skráarkerfið er um að gera að læra að gera eitthvað sniðugt. Eitt af því sem er gott að læra er að í UNIX kerfum svo sem Linux er ein undirliggjandi heimspeki:

ALLT er skrá.

Þetta á við um allt. Jafnvel harði diskurinn er skrá í skráarkerfinu. Þetta er svolítið furðulegt þegar að hugsað er til þess að í Windows umhverfinu eru skrár fyrirbæri sem liggja á harða disknum, en í UNIX kerfum ertu annars vegar með sýndarskráarkerfi (VFS - Virtual File System) og hinsvegar með raunveruleg skráarkerfi á hörðum diskum. Til dæmis eru allar skrárnar undir /dev bara til í minni tölvunnar. Þar finnurðu ýmsar furðulegar skrár:

  • /dev/sda er harði diskurinn í minni tölvu.
  • /dev/audio er hljóðkortið.
  • /dev/random er skrá sem inniheldur endalaust mikið af handahófskenndum tölum.
  • /dev/mem er vinnsluminni vélarinnar.

Afleiðingin af þessu er ekki augljós í fyrstu, en hún á eftir að verða það meira og meira eftir því sem þú lærir meira á kerfið. Byrjum á nokkrum dæmum og lærum á ný forrit í leiðinni.

Að drepa forrit

Stundum lendirðu í því að forrit gera ekki það sem þú átt von á. Þá eru til nokkrar leiðir til að drepa þau, sem eiga við í mismunandi tilfellum.

  • Ctrl+c: Ef forrit í skipannalínu er að bíða eftir einhverju sem mun aldrei gerast geturðu ýtt á þessa tvo takka saman til að hætta.
  • Ctrl+d: Ef forrit er að taka við stöfum eða inntaki og stafirnir eru búnir eða inntaki lokið geturðu gert þetta til að segja því að svo sé.
  • kill og killall skipannirnar geturðu notað til að drepa forrit sem eru frosin, og raunar margt fleira. Fjallað verður meira um það síðar.

cat

cat forritið er notað til að skoða hvað er í skrám. Þegar þú gefur cat nafn á skrá sem viðfang mun það demba öllu innihaldi skráarinnar út á skjáinn.

Prófaðu að skoða ástand örgjörvans og minnisins:

$ cat /proc/cpuinfo
$ cat /proc/meminfo

more

Stundum villtu ekki fá alla skránna í einu, heldur villtu geta farið í gegnum hana smám saman. more skipunin leyfir þér að skoða skránna eitt skjáfylli í einu. Þú færð næsta skjáfylli með því að ýta á bilstöngina. Þegar að skráin er búin hættir forritið sjálfvirkt, en þú getur alltaf hætt með því að ýta á 'q'. Ef að skráin tekur minna en eitt skjáfylli hegðar more sér eins og cat.

Prófaðu að skoða ástand örgjörvans með more:

$ more /proc/cpuinfo

less

More er samt ekki mjög gott forrit ef þig vantar að flakka fram og til baka í skrám. less gefur þér kost á að fara fram og til baka með örvatökkunum í viðbót við að nota bilstöngina.

Þú tekur kannski eftir því að man forritið sem var minnst á áðan er í rauninni að nota less til að birta síðurnar sínar. Þetta er einn af kjarnaeiginleikum UNIX kerfa: í stað þess að finna upp hjólið aftur og aftur geturðu staflað forritum ofan á hvert annað til að ná árangri. Meira um það í kaflanum um pípur.

Pípur

Einn af kraftmeiri eiginleikum UNIX kerfa er að geta hlekkjað saman skrár og forrit í langar keðjur með svokölluðum pípum. Með smávegis pípulagningum geturðu látið forrit vinna saman að því að gera kraftmikla hluti. Til dæmis er man skipunin á ákveðinn hátt að strengja saman forritin groff og less, sem sparar mikla vinnu.

Þrjár tegundir af pípum eru til í skelinni:

  • Pípur milli forrita. Slíkar pípur taka úttak úr einu forriti og setja það sem inntak í annað. Þær pípur eru táknaðar með | tákni - hreinlega pípu.
  • Pípa úr forriti í skrá. Slík pípa tekur úttak úr forriti og setur það í skrá. Þær eru táknaðar með >.
  • Pípa úr skrá í forrit. Hún tekur innihald skráar og setur sem inntak í forrit. Táknað með <.

Einfallt dæmi um pípu milli forrita er svona:

$ ls /dev | less

Þessi skipun tekur úttakið úr skipuninni ls /dev og sendir það í less. Þetta getur verið kostur þegar þú ert að leita eftir tilteknum skrám í einhverri möppu þar sem eru mjög margar skrár (eins og tilfellið er með /dev) og villt geta rúllað í gegnum listann.

Kannski þú viljir frekar búa til textaskrá með þessum lista:

$ ls /dev > listi.txt

Nú er til skrá sem heitir listi.txt sem þú getur skoðað sérstaklega eða sent einhverjum eða gert í rauninni hvað sem er við.

Ef þig langaði til að bæta við meira aftast í þessari skrá geturðu notað tvöfallda ör:

$ ls /etc >> listi.txt

Önnur leið til að skoða þessa skrá væri að pípa henni yfir í less:

$ less < listi.txt

Þetta er að sjálfsögðu jafngilt því að skrifa:

$ less listi.txt

Í þessu tiltekna tilfelli, en það er ekki alltaf svo! Önnur leið til að gera það sama er:

$ cat listi.txt | less

En pípur fara fyrst að skipta máli þegar þú ferð að gera eitthvað flóknara við þær.

sort

Segjum sem svo að þú viljir taka þennan lista og raða honum í öfuga stafrófsröð áður en þú skrifar hann út á skjáinn. sort forritið getur framkvæmt ýmisskonar raðannir á gögnum sem eru í mörgum línum.

Skipanirnar þrjár hérna eru ein leið til að búa til öfugan lista yfir skrám í /dev og birta hann:

$ ls /dev > listi.txt
$ sort -r listi.txt
$ less listi.txt

Hér er leið til að gera þetta í einni bunu án þess að búa til neinar auka skrár.

$ ls /dev | sort -r | less

Mundu eftir --help ef þig langar til að gera meira með sort.

grep

grep er öflugt forrit til að finna strengi inní skrám. Segjum sem svo að við viljum finna öll tilfelli af orðinu tty í skránni listi.txt.

$ grep "tty" listi.txt

Kannski viljum við sjá allar línur sem innihalda ekki orðið usb:

$ grep -v "usb" listi.txt

Og svo auðvitað getum við pípað:

$ ls /dev | grep -v "usb"

Grep er með öflugari forritum sem þú færð á skipannalínunni. Endilega kynntu þér það mjög vel.

awk

awk er gamalt forrit sem hefur þann tilgang að auðvelda flókna textavinnslu. Strangt til tekið er Awk forritunarmál, en mjög algengt er að fólk noti það beint úr skipannalínunni. Dæmi um verkefni sem Awk getur leyst eru:

  • Að taka saman sjálfvirkar skýrslur úr textaskrám
  • Viðbótarvirkni við textaritla
  • Að breyta skrám úr einu sniði í annað
  • Að búa til og viðhalda litlum gagnagrunnum
  • Að framkvæma stærðfræðilega úrvinnslu á skrám sem hafa töluleg gögn.

Vinnsludæmi með gagnagrunn

Ímyndaðu þér að þú hafir textaskrá sem heitir "ihlutir.txt" þar sem hver lína er ein færsla á forminu:

fjöldi  vörunúmer         vörutegund      aflþol  nákvæmni pakkning  einingaverð  heildarverð

Og gögnin okkar eru:

1000 311-0.0ERCT-ND       RES 0.0 OHM     1/4W    5%   1206 SMD     0.01653  16.53
100  PRL1632.100FCT-ND    RES .100 OHM    1W      1%   1206 SMD     0.36140  36.14
1000 311-1.00FRCT-ND      RES 1.00 OHM    1/4W    1%   1206 SMD     0.01856  18.56
1000 311-4.99FCT-ND       RES 4.99 OHM    1/4W    1%   1206 SMD     0.01856  18.56
1000 311-10.0FCT-ND       RES 10.0 OHM    1/4W    1%   1206 SMD     0.01856  18.56
1000 311-49.9FRCT-ND      RES 49.9 OHM    1/4W    1%   1206 SMD     0.01856  18.56
1000 311-100FRCT-ND       RES 100 OHM     1/4W    1%   1206 SMD     0.01856  18.56
500  311-1212-1-ND        CAP 1PF         50V     NP0  1206 SMD     0.04200  21.00
500  311-1150-1-ND        CAP 10PF        50V     NP0  1206 SMD     0.03612  18.06
500  311-1161-1-ND        CAP 100PF       50V     NP0  1206 SMD     0.04200  21.00
500  311-1144-1-ND        CAP 1000PF      1KV     X7R  1206 SMD     0.15300  76.50
500  311-1174-1-ND        CAP 10000PF     50V     X7R  1206 SMD     0.03360  16.80
500  399-4674-1-ND        CAP 0.1UF       250V    X7R  1206 SMD     0.13126  65.63
250  PCC2234CT-ND         CAP 1.0UF       50V     F    1206 SMD     0.15180  37.95
1000 311-499FRCT-ND       RES 499 OHM     1/4W    1%   1206 SMD     0.01856  18.56
1000 311-1.00KFRCT-ND     RES 1.00K OHM   1/4W    1%   1206 SMD     0.01856  18.56
1000 311-4.99KFRCT-ND     RES 4.99K OHM   1/4W    1%   1206 SMD     0.01856  18.56
1000 311-10.0KFRCT-ND     RES 10.0K OHM   1/4W    1%   1206 SMD     0.01737  17.37
1000 311-49.9KFRCT-ND     RES 49.9K OHM   1/4W    1%   1206 SMD     0.01856  18.56
1000 311-100KFRCT-ND      RES 100K OHM    1/4W    1%   1206 SMD     0.01856  18.56
1000 311-499KFRCT-ND      RES 499K OHM    1/4W    1%   1206 SMD     0.01856  18.56
1000 311-1.00MFRCT-ND     RES 1.00M OHM   1/4W    1%   1206 SMD     0.01856  18.56
1000 311-4.99MFRCT-ND     RES 4.99M OHM   1/4W    1%   1206 SMD     0.01856  18.56
1000 311-10.0MFRCT-ND     RES 10.0M OHM   1/4W    1%   1206 SMD     0.01856  18.56

Segjum sem svo að við viljum plokka út línurnar þar sem eru viðnám (RES) og leggja saman heildarverðin.

$ awk '/RES/ { verd += $11 } END {print "Heildarverð: $" verd}' ihlutir.txt

Þá mun niðurstaðan vera:

Heildarverð: $329.88

Til að skilja hvað er í gangi hérna, þá skoðum við hvern part af skipuninni fyrir sig:

$ awk skipun skrá

Skráin er það gagnasett sem á að vinna með, en einnig má pípa gögnunum inn í forritið, til dæmis:

$ cat skrá | awk skipun

Skipunin er í nokkrum þáttum:

$ awk '/RES/ { verd += $11 } END {print "Heildarverð: $" verd}' ihlutir.txt

Þessi fyrsti partur er leitarskipunin. Hér er verið að segja að það eigi eingöngu að framkvæma vinnslu á línum sem samsvara þessu mynstri. Mynstrið er regluleg segð.

$ awk '/RES/ { verd += $11 } END {print "Heildarverð: $" verd}' ihlutir.txt

Hér er verið að segja hvað á að framkvæma í hverri línu. Slaufusvigarnir eru nauðsynlegir, en hér erum við að segja að það eigi að leggja gildið í dálk 11 (táknað $11) við breytu sem við köllum verd.

$ awk '/RES/ { verd += $11 } END {print "Heildarverð: $" verd}' ihlutir.txt

END táknið segir að það sem eftir fylgir eigi að gera þegar skráin er komin á enda.

$ awk '/RES/ { verd += $11 } END {print "Heildarverð: $" verd}' ihlutir.txt

Og hér segjum við að það eigi að skrifa út strenginn Heildarverð: $, og svo gildið úr verd breytunni.

Nánar um Awk

Awk er, eins og þú sérð, frekar öflugt forrit, en það er ekki ætlunin að kenna mjög nákvæmlega á það hér. Viljirðu vita meira eru til margar góðar handbækur, svo sem An Awk Primer.

sed

sed er stytting á stream editor, en það er forrit sem leyfir þér að gera breytingar á texta sem fer í gegnum forritið. Forritið er mjög gjarnan notað í samvinnu við awk, en annmarkar beggja forrita leysast upp í samtvinnun þeirra.

Ef við tökum dæmið hér að ofan og viljum til dæmis skipta út orðinu RES í gagnagrunninum fyrir orðinu Resistor í úttakinu, þá er nóg að pípa úttakinu úr awk í gegnum sed:

$ awk ... | sed 's:RES:Resistor:'

Sed býr yfir mörgum fleiri eiginleikum sem er hægt að kynna sér í Sed handbókinni.

wc

wc er skammstöfun á word count, en það er tilgangur forritsins. Ef þú keyrir forritið á skrá mun það skila þér upplýsingum um hversu margir stafir, hversu mörg orð, og hversu margar línur eru í skránni. Ef þú keyrir það á margar skrár mun það skila þér niðurstöður fyrir hverja skrá fyrir sig, og svo samantekt í restina.

Dæmi:

$ wc *.txt

Viljirðu bara sjá fjölda stafa, bættu við -c. Fyrir fjölda orða, -w, og fyrir fjölda lína, -l.

$ wc -l ritgerd.txt

Perl

Netkerfi

Nú þegar þú hefur fengið smá smjörþef af því hvað skipanalínan getur gert er komið tími til að sökkva sér í alvöru mál. Netkerfi eru mjög mikilvæg í dag og möguleikar Linux á að vinna með netkerfið í gegnum skipanalínuna eru mjög mörg og öflug. Hér verður minnst á helstu stillingar- og greiningartól, auk þess sem skoðað verður aðeins hvernig Linux eldveggurinn virkar, þó svo að það sé langt utan við tilgang þessarar handbókar að fara djúpt ofan í það.

Netstillingar

IP

Route

DNS

Proxy gáttir

Greiningartól

ping

traceroute / tracepath

Eldveggur

iptables

Ýtarefni