Slackware Logo
Slackware Logo

Lugons

Info

Prevodioci

Greške

 
 LUGONS Slackbook prevod

8.2 Komandna linija

8.2.1 Izvršavanje programa

Teško da je moguće nešto uraditi, a da se ne pokreću programi; možda ćete moći nešto da pritisnete svojim računarom ili da držite vrata otvorenim, a neki će praviti najdivniji brujeći zvuk kada su uključeni, ali to je otprilike sve. Mada ja mislim da ćemo se složiti kako njegova uloga kao brujećeg držača za vrata nije to što je dovelo lične računare do popularnosti u kojoj sad uživaju.

Pa, sećate se kako je skoro sve u Linux-u fajl? Pa, to važi i za programe. Svaka komanda koju izvršavate (koja nije ugrađena u školjku) negde počiva kao fajl. Pokrećete program tako što jednostavno naznačite punu putanju do njega.

Na primer, sećate se su komande iz prethodne sekcije? Pa, ona je u stvari u /bin direktorijumu: /bin/su će je lepo pokrenuti.

Pa zašto onda kucanje samo su radi? Posle svega, niste rekli da je u /bin. Mogao je lako biti i u /usr/local/share, zar ne? Kako je to on znao? Odgovor na to leži u PATH varijabli okruženja; većina školjki imaju ili PATH ili nešto veoma slično varijabli PATH. U osnovi ona sadrži listu direktorijuma u koje se traže programi koje pokušavate da izvršite. Pa kada ste pokrenuli su, vaša školjka je protrčala kroz svoju listu direktorijuma, tražeći prvi izvršni fajl sa imenom su kojeg može da izvrši. Ovo se dešava uvek kada pokrenete program, a da niste naznačili punu putanju do njega; ako dobijete ““Command not found”” grešku, to samo znači da program kojeg ste pokušali da pokrenete nije u vašoj PATH varijabli (path na engleskom znači staza). (Naravno, ovo bi bilo tačno ukoliko program uopšte ne postoji...). Razmotrićemo varijable okruženja detaljnije u Section 8.3.1.

Takođe se setite kako je “.” prečica za trenutni direktorijum, pa ukoliko se desi da ste u /bin, ./su će raditi isto kao i eksplicitna puna putanja.

8.2.2 Zamene slova

Skoro svaka školjka prepoznaje neke znakove kao zamene ili skraćenice koje znače: ovde ide bilo šta. Takvi znaci se zgodno zovu džokeri, ili na engleskom wildcards; najčešći su * i ?. Po konvenciji, ?obično znači bilo koji jedan znak. Na primer, pretpostavimo da ste u direktorijumu sa tri fajla: ex1.txt, ex2.txt i ex3.txt. Želite da kopirate sve ove fajlove (koristeći cp komandu koju smo opisali u Section 10.5.1) u neki drugi direktorijum, recimo /tmp. Pa, kucanje cp ex1.txt ex2.txt ex3.txt /tmp je totalno puno posla. Mnogo je lakše ukucati cp ex?.txt /tmp; znak ? će se poklopiti sa svakim od znakova “1”, “2” i “3”, i svaki od njih će biti redom zamenjen.

Šta kažete? To je još uvek previše posla? U pravu ste. Naporno je; imamo zakone o radu koji nas štite od takvih stvari. Srećom, takođe imamo i *. Kao što sam već pomenuo * će se poklopiti sa “bilo kojim brojem znakova”, ukljućujuči i nijedan. Pa ako su ova tri fajla jedina u direkotorijumu, mogli bismo jednostanvo reći cp * /tmp i obuhvatiti ih sve u jednom zamašaju. Pretpostavimo, ipak, da postoji i fajl sa imenom ex.txt i neki sa imenom hejaz.txt. Želimo da iskopiramo ex.txt, ali ne i hejaz.txt; cp ex* /tmp će uraditi to za nas.

cp ex?.txt /tmp, će, naravno, obuhvatiti samo naša tri početna fjla; ne postoji znaku u ex.txt kojeg će zameniti ?, pa će on biti izostavljen.

Još jedan čest džoker je par uglastih zagrada [ ]. Bilo koji znak unutar zagrada će biti zamenjen na mestu [ ] kako bi se našli fajlovi koji se poklapaju. Zvuči zbunjujuće? Nije jako teško. Pretpostavimo za primer, imamo direktorijum koji sadrži sledećih 8 fajlova: a1, a2, a3, a4, aA, aB, aCi aD . Želimo da nađemo samo fajlove koji se završavaju sa brojem; [ ] će uraditi ovo za nas.

% ls a[1-4]
a1 a2 a3 a4

Ali šta ako želimo samo a1, a2 i a4? U prethodnom primeru smo koristili - da znači sve vrednosti između 1 i 4. Možemo, takođe, odvojiti pojedine znakove sa zarezima.

% ls a[1,2,4]
a1 a2 a4

Znam šta sada mislite, “A šta je sa slovima?” Linux razlikuje velika i mala slova, što znači da su a i A različita slova koja su povezana samo u vašoj glavi. Velika slova uvek idu ispred malih, pa A i B dolaze pre a i b. Nastavljajući sa našim prethodnim primerom, ukoliko želimo fajlove a1 i A1, možemo ih brzo pronaći pomoću [ ].

% ls [A,a]1
A1 a1

Primetite da bismo dobili pogrešne rezultate ukoliko bismo upotrebili crticu umesto zareza.

% ls [A-a]1
A1 B1 C1 D1 a1

Takođe možete kombinovati crticu i zarez.

% ls [A,a-d]
A1 a1 b1 c1 d1

8.2.3 Redirekcija ulaza/izlaza i cevovodi

(Sada sledi nešto cool.)

% ps > blargh

Znate šta je to? To sam ja kako izvršavam ps kako bih video koji se procesi izvršavaju; ps je opisana u Section 11.3. Taj deo nije cool, cool deo je > blargh, koji znači, grubo rečeno, uzmi izlaz iz ps i upiši ga u fajl sa imenom blargh. Ali sačekajte, postaje još više cool.

% ps | less

Ova linija uzima izlaz iz ps i sprovodi ga kroz less, pa tako mogu pomerati kako mi se hoće.

% ps >> blargh

Ovaj treći je načešće korišćen preusmerivač; on radi istu stvar kao i “>”, osim što će “>>” dodati izlaz iz ps u fajl blargh, ukoliko takav fajl već postoji. Ako ne, isto kao i sa “>”, on će biti napravljen. (“>” će uništiti trenutni sadržaj fajla blargh.)

Takođe postoji i “<” operator, koji znači uzmi vaš unos iz sledećeg, ali ni blizu korišćen kao ostali.

% fromdos < dosfile.txt > unixfile.txt

Preusmeravanje postaje stvarno zabavno jednom kada se počnete s njime igrati:

% ps | tac >> blargh

To će pokrenuti ps, obrnuti linije koje on napiše i dodati ih u fajl blargh. Možete naređati koliko god hoćete ovih; samo budite oprezni i pamtite da se izvršavaju s leva na desno.

Pogledajte man stranicu za bash(1) za detaljnije informacije o preusmeravanju.