11.890 pregleda

Hack the shell treći dio

27

Dosad smo naučili što je to shell i kako on radi, strukturu Unix direktorija te se upoznali s terminal emulatorima i ukratko prošetali kroz povijest i razvoj. Također, upoznali smo Bash te koristili naredbe za manipulaciju direktorijima, datotekama i tekstom. U novom nastavku našeg druženja, upoznat ćemo se sa zamjenskim znakovima, I/O preusmjerenjima te malo dublje zaviriti u ljusku.

cli-fear_shot

Pobjedite strah od Terminala

 

 

Zamjenski znakovi

Prije nego pređemo na ostale naredbe, želim spomenuti nešto što ih čini toliko moćnima – zamjenski znakovi. Kako ljuska koristi datotečna imena, pruža i znakove koji pomažu specificirati cijele grupe. Ti znakovi se nazivaju zamjenski znakovi (wildcards u engleskoj literaturi). Zamjenski znakovi omogućuju odabir datoteka po određenom kriteriju. U nastavku ćemo vidjeti važnije zamjenski znakove.

 

Zamjenski znak                         Značenje

*                                                 Odgovara svim kriterijima
?                                                 Odgovara jednom kriteriju
[characters]                         Odgovara svakom znaku iz seta znakova
[!characters]                       Odgovara svakom znaku koj ne pripata setu znakova

 

*Posix znakovi

[:alnum:]                             Alfanumerički znakovi
[:alpha:]                               Alfabetski znakovi
[:digit:]                                Numerički znakovi
[:upper:]                             Alfabetski znakovi s velikim slovima
[:lower:]                              Alfabetski znakovi s malim slovima

 

Zamjenske znakove možete koristiti s bilo kojom naredbom koja prihvaća argumente u obliku datotečnih imena.

 

I/O preusmjeravanje

U ovome dijelu ćemo proučiti vrlo korisno svojstvo mnogih naredbi, a to je I/O preusmjeravanje. Kao što smo vidjeli, mnoge naredbe ispisuju svoj izlaz na ekran, no to ne mora nužno biti tako. Korištenje dodatnih znakova s tim naredbama, njihov izlaz možemo preusmjeriti u neki dokument i pohraniti, poslati nekom uređaju ili pak nekoj drugoj naredbi.

 

Standardan izlaz

Standardan izlaz možemo primijetiti ako pokrenemo samo naredbu ls ili cat.
Npr. ls će izlistati sve datoteke i direktorije u direktoriju u kojem se trenutno nalazimo.
No, to možemo preusmjeriti i u neki dokument, npr. home.txt.

ls > home.txt

U ovom slučaju pokrenuli smo naredbu ls koje se izvršila samo što njen ishod nismo vidjeli na zaslonu već je preusmjeren u datoteku home.txt koja se spremila u trenutni direktorij.
Dakle, za preusmjeravanje koristimo znak >. Sljedeći put kad pokrenemo istu naredbu, datoteka home.txt će biti prepisana, no ako želimo samo novi ishod nadodati u dokument to radimo s duplim znakom >.

ls >> home.txt

Standardan unos

Također, mnoge naredbe mogu i primiti ulaz. To se naziva standardnim unosom. Nativno se unos odvija putem tipkovnice, no ako nešto često izvršavate, to možete pohraniti u tekstualnu datoteku te iz nje unijeti u naredbu. Za to se koristi znak <.

sort < dokument.txt

U ovom primjeru smo koristili naredbu sort da bi sortirali elemente u našoj datoteci. Rezultat se ispisao na ekranu. No, ranije smo naučili da možemo izlaz naredbi pohraniti u dokument, pa zašto ne bismo ove dvije naredbe spojili?

sort < dokument.txt  > sortirani_dokument.txt

Kao što vidimo, ova linija ima kombiniran ulaz i izlaz. Prvo čita našu datoteku u kojoj tražim da sortira elemente te sortirane elemente sprema u novi dokument.

Spajanje

Jedna od korisnijih stvari I/O preusmjerenja je spajanje naredbi (pipe u eng. literaturi).
Spajanjem naredbi nadovezujemo jednu na drugu te zajedno funkcioniraju kao jedna naredba.

ls -l | less

U ovom primjeru izlaz naredbe

ls -l

je pohranjen u naredbu less korištenjem | znaka . On se obično nalazi na tipki W, a dobije se pritiskom tipke AltGr i W.
Ovom metodom možete postići da svaka naredba ima scrolling izlaz.

Evo i nekoliko zgodnih primjera spajanja naredbi:

Naredba

ls -lt | head

Što radi

Pokazuje 10 najnovijih dokumenata u direktoriju

Naredba

du | sort -nr

Što radi

Ispisuje sve direktorije te koliko mjesta zauzimaju

Naredba

find . -type f -print | wc -l

Što radi

Ispisuje broj svih datoteka u direktoriju i svim njegovim poddirektorijima

 

Filteri

Kategorija programa koji se mogu koristiti sa spajanjem zovu se filteri.
Filteri uzimaju podatke preko standardnog unosa, obave svoj zadatak te rezultat prikažu u obliku standardnog izlaza. Zamišljeni su i dizajnirani kako bi omogućili procesuiranje informacija na vrlo napredan način. Evo i nekoliko programa koji se ponašaju kao filteri:

Program

sort

Što radi?

Sortira elemente

Program

uniq

Što radi?

U sortiranim dokumentima miče duplikate linija

Program

grep

Što radi?

Pregledava svaku liniju iz standardnog ulaza te na izlaz stavlja samo liniju koja sadrži određeni pojam

Program

fmt

Što radi?

Čita tekst u standardnom ulazu te na izlaz stavlja formatiran tekst

Program

pr

Što radi?

Priprema dokument za printanje. Uzima tekst te ga lomi na stranice i poglavlja pritom označavajući zaglavlje i podnožje te ga obrađenog sprema za printanje

Program

head

Što radi?

Čita prvih nekoliko linija teksta. Korisno za čitanje zaglavlja dokumenata.

Program

tail

Što radi?

Čita zadnjih nekoliko linija datoteke. Vrlo korisno za pregled zadnjih unosa u log datoteci

Program

tr

Što radi?

Prevodi znakovlje. Može se koristiti za prevođenje velikih slova u mala

Program

sed

Što radi?

Stream editor. Može raditi kompliciranije zadatke u odnosu na tr

Program

awk

Što radi?

Cijeli programski jezik za izradu filtera. Vrlo moćan i koristan u administriranju sustava

 

 

Hvala na pažnji, toliko za danas.

U sljedećem dijelu ćemo se upoznati s dozvolama i korisničkim grupama kao i s kontrolom zadataka.

VN:F [1.9.22_1171]
Rating: 5.0/5 (21 votes cast)
Hack the shell treći dio, 5.0 out of 5 based on 21 ratings

27 komentara

  1. lol napisao:

    Hack the shell FTW 😀

  2. duuude napisao:

    Konačno!

  3. b4sh napisao:

    Lutherus uvjek dobro dode ! Svaka cast ;))

  4. max360se napisao:

    To se cekalo 🙂

    Svaka cast!

  5. Petar Kružić napisao:

    Tko zna zna, to majstore!

  6. amon napisao:

    Uzalud trud. Terminal je ionako arhaičan komad softwera i pitanje je vremena kad će se ugasiti. Ionako sve ide na grafičke aplikacije i dodir pa je vrijeme da se i Linux modernizira. Sa ovakvim stvarima i stavovima i radi ovakvih pojedinaca Linux korisnici dolaze na loš glas. -1.

    • Branko napisao:

      Ja ne mogu vjerovati da sam ovo pročitao!
      Ne dao Bog da se Linux ikada toliko modernizira da izgubi Terminal! A svi koji ga znaju koristiti, znaju i koliko je Terminal moćan alat.
      Nadam se da ovo razmišljanje ne dijele ostali korisnici Linuxa koji navraćaju ovdje i da je ovo gore samo trolanje.

      • amon napisao:

        Ma kakvo trolanje? Ozbiljno, što će netkome tko nije programer terminal? Samo zbunjuje ljude. Ubuntu imam od 2006 i terminal uopće nepalim.

        • Branko napisao:

          Pa eto, neki od nas još uvijek volimo neke poslove odrađivati u Terminalu. A nismo programeri.
          Neke stvari se brže i lakše odrade u Terminalu.

          • amon napisao:

            Svaka čast onda, al kažem da za nas obične korisnike je ovo nepotrebno. Treba nam sustav koj radi na principu pali i vozi a ne nešto gdje se treba igrati i poslagavati i zato je Ubuntu uspješan.

            • Branko napisao:

              Moj Manjaro je više pali i vozi od Ubuntua. Npr. dolazi sa svim potrebnim kodecima, Flashom, Javom i nije potrebno nikakvo daljnje podešavanje da bi sve radilo. 😉
              No, puno mi je lakše kod updatea ukucati pacman -Syu i stisnuti enter, nego mišem nabadati po izborniku, otvarati Pamac, kliknuti na update, upisati root password i obaviti update. Za to uvijek imam jedan Terminal u koje sam ulogiran kao root i u kojem obavljam administraciju sustava.
              To je samo jedan od primjera.
              Terminal ima svoje mjesto i mnogi ljudi ga koriste i vole. Nije niti približno arhaičan i neke stvari ćeš prije napraviti u CLI-u, nego u GUI-u.
              Naravno, dobro je da sve možete obaviti u GUI-u, ali poznavanje Terminala neće biti na odmet, a ako ga stvarno naučiš koristiti može ti biti od velike pomoći ako nešto zapne.

            • sade napisao:

              Njemu je ubuntu bez mp-3, dvd itd podrske pali i vozi……..Zato i imas na stotine clanaka “prvih 1000 stvari za napravit nakon instalacije ubuntu.a” zato sto je pali i vozi jel?
              Kaj se tice terminala, terminal imas i u mac-os i u windowsima, nisam siguran da ti amone uopce shvacas kaj je terminal. A izjavit da je nesto lakse primjerice instalirat putem software centra ili synaptica nego terminala je presmijesno….(uz duzno postovanje synapticu kao odlicnom alatu)

              • amon napisao:

                Pa Ubuntu te i pita dal želiš softwer treće strane prilikom instalacije kao i update. Barem mene pita, možda nemamo isti Ubuntu. Mijenjati možeš svašta poslije instalacije no ekipa koja radi Ubuntu se stvarno potrudila i nema potrebe izmjenama.

                • Branko napisao:

                  Znam da te pita za softver treće strane. Manjaro, Sabayon i Mint npr. ne pitaju. 😉
                  Inače, što se tiče potrebe za izmjenama nakon istalacije Ubuntua, to je tvoj subjektivni dojam. Ja bi osobno puno toga izmjenio. Zato i koristim drugu distru.

      • Lutherus napisao:

        Nažalost ovo je uobičajeno razmišljanje novih korisnika i generacija koje dolaze.
        Žao mi je da se čovjeku ne sviđa al neću ga sad tući radi toga.

    • Z0K4 napisao:

      Istina… Zbog moje ljubavi prema terminalu sam na tako lošem glasu da cijeli grad bruji o meni (naravno, sve što se priča je prestrašno da podijelim to ovdje s vama).

      • filetovski napisao:

        Prešal sam s windowsa xp na Manjaro pred nekih mjesec-dva i ful sam zadovoljan kak sve fino radi. Terminal mi je nužnost za neke stvari, npr: pošto bavim fotografijom kao hobijem napravil sam si skripte za risajzanje i neke osnovne manipulacije fotkama (prek imagemagick-a može se stvar stjunirat do bolesnih razmjera) – pustiš skriptu na hordi fotki, a ti fino odeš na kolače ili si paralelno pustiš neki hd pornić za to vreme :D. Može se to automatizirat i prek fotošopa/lajtruma/gimpa, ali traje duže i troši više memorije, a ima manje naprednih opcija za te neke osnovne često korištene stvari…

      • Lutherus napisao:

        Pusti sela do priča. Ionak nije njihovo mišljenje važno. Usotalom mi smo hackeri a hackeri imaju terminal sa zelenim slovima i crnom pozadinom.

        • Z0K4 napisao:

          Hehehe… zelena slova i crna pozadina. Ah te predrasude… Što je najgore, danas se i riječ “hacker” često poistovjećuje sa riječju “cracker” (a imaju dva potpuno suprotna značenja).
          Lutherus i ostali obožavatelji terminala, izgleda da nam ne preostaje ništa drugo nego otići u mirovinu budući da koristimo koncept softwarea iz prošlog tisućljeća…
          Gdje bi internet danas bio kad ne bi bilo terminala, kad administratori ne bi mogli automatizirati većinu administrativnih poslova?
          Ja recimo koristim cron + par shell skripti za automatizaciju updatea, backup podataka…
          A što se tiče gašenja terminala: buhuhuhahahaha!

    • drone napisao:

      amone, ti naravno imaš pravo na mišljenje. Nemoj se ljutiti, ali ovo što si napisao je neznanje. Windowsi i OS X imaju terminal kao što je iznad već rečeno i nije bez razloga tamo. Terminal je potreban. To što ga netko ne koristi jer ne zna za prednosti koje pruža, ne znači da je terminal zastario jer to s tim nema nikakve veze. Terminal je moćan alat. Mnoge se stvari ne mogu automatizirati do te mjere u GUI alatima kako se to može odraditi pomoću terminala. Također je ponekad neusporedivo lakše i brže otipkati nešto nego klikati mišem.
      Naravno, postoje stvari za koje je GUI bolji, a postoje i stvari koje je u terminalu nemoguće obaviti. Treba se naučiti raditi u OS-u, upoznati njegove mogućnosti da bi se moglo o nečemu argumentirano govoriti. Terminal se neće ugasiti, bez brige.

    • Lutherus napisao:

      Kaže tko? Aliens?

  7. rudar napisao:

    Čestitam autoru na vrlo korisnom članku, kao i na prethodnim nastavcima, i nadam se da će ih biti još. Zamolio bih za jedan savjet: zanima me postoji li naredba kojom bi se moglo pretraživati tekstove u .doc formatu po njihovu sadržaju, a ne samo po naslovu. Instalirao sam program Recoll, ali on pretražuje tekstove po sadržaju samo ako je u pitanju PDF, dok kod tekstova u formatu .doc daje samo naslove, što mi nije dovoljno. Pokušao sam naći rješenje u knijzi W.E. Shotts, The Linux Command Line, ali nisam se snašao (vidio sam grep, ali ne postižem što bih htio). Molim za savjet.

Ostavi komentar

© 2017 Linux Za Sve. | Impressum | Sadržaj je licenciran pod CC-SA-3.0 ako nije drugačije naznačeno.
Proudly designed by Theme Junkie.