GNU Linux/Terminalas

Iš Wikibooks.
Peršokti į: navigacija, paiešką

Jei jau turite Linux, kad ir ką kai kurie sakytų su terminalu (kartais vadinama: konsolė) jums teks susidurti. Daug kam atrodo, kad terminalas tai pasenęs kompiuterių valdymo būdas, labai nepatogus ir labai negerai "nes reikia daug rašyti". Iš tiesų problema ta, kad dauguma net ir patyrusių kompiuterių naudotojų dabar jau "mąsto langais". Šiame skyriuje aš pasistengsiu parodyti, kaip reikia "mąstyti terminale" ir tik tai išmokus terminalas taps paprastas, patogus, mielas ir greitas. Toks kokio neatstos jokios, net moderniausios ir įmantriausios grafinės aplinkos.

Ši knyga turėtų sudominti ne tik tuos "wannabe hax0r", kurie prisižiūrėję filmų kaip dėdės geria kolą ir kažką ten įsikibę rašo į žaliai juodą ekraną patys mėgina tai pakartoti, bet ir kiekvieną Linux/BSD mėgėją.

Kaip ten patekti?[keisti]

Taigi jūs parsisiuntėte kažkokią Linux distribuciją (jei dar ne tai pats metas tai padaryti) instaliavote ją ir tikriausiai atsidūrėte "Gnome" ar "KDE" aplinkoje ir to terminalo nei kvapo.

Dabar aš paaiškinsiu kaip į jį patekti.

Viršuje ko gero senai pamiršti funkcijos klavišai yra: F1, F2, F3 ir t. t. Vienoje sistemoje paprastai yra 6 terminalai jiems išskirti funkcijos klavišai nuo F1 iki F6. Grafinei aplinkai yra skirtas funkcijos klavišas F7. Norint išvengti atsitiktinio paspaudimo jūs pirmiausiai turite laikyti nuspaudę alt+ctrl ir tik tada persijungti į reikiamą terminalą ar grafinę aplinką su funkcijos klavišu. Į kiekvieną terminalą pirmiausia reikia prisiregistruoti su savo vartotojo vardu ir slaptažodžiu.

Direktorijų medis ir kaip keliauti po jį[keisti]

DOS sistemose yra diskai, žymimi A:, B:, C: ir t. t., vėliau Windows sistemose sugalvotas "My Computer", siejantis visus šiuos diskus. DOS sistemose diskų niekas nesieja. Unix tipo sistemos (kaip ir Linux) tuo tarpu turi visai kitokį, gerokai sudėtingesnį ir labiau organizuotą direktorijų medį. Pasistengsiu trumpai ir konkrečiai apibūdinti jį:

  • / - root direktorija. Nuo jos viskas prasideda.
  • /boot - čia laikomas Linux branduolys ir Grub pradinio įkėliklio bylos.
  • /etc - čia laikomos nustatymų bylos programoms. Paprastai tai paprasčiausios tekstinės bylos.
  • /bin ir /usr/bin - čia laikomos visos programos
  • /usr - čia laikomos dokumentacijos, nesukompiliuoti programų kodai, man puslapiai ir kiti panašūs dalykai. /usr/X11 - laikoma grafinė aplinka.
  • /usr/local - čia keliauja visos programos, kurios instaliuojamos vėliau nei pati sistema.
  • /var - čia laikomos bylos, kurios keičiasi, kai sistema veikia. Iš įdomesnių /var/log direktorijoje laikomi "logai". T. y. įrašai apie visus svarbius sistemoje įvykusius dalykus.
  • /lib - čia laikomos bendros "bibliotekos" programoms.
  • /home - čia laikomi vartotojų asmeniniai duomenys. Tai vienintelė vieta, kur jie gali ką nors įrašyti ar trinti. Tai likusi sistema išlaikoma tvarkinga ir švari.
  • /root - čia yra naudotojo root asmeniniai duomenys.
  • /tmp - čia programos rašo savo laikinus duomenis.
  • /dev - čia yra laikomi visi įrenginiai. Unix sistema visus įrenginius laiko tokiais pat dalykais kaip ir bylos, bet visgi įrenginiai atskiriami į savo direktoriją nuo kitų bylų.
  • /proc - šitos direktorijos iš tikro niekur nėra. Tai tik branduolio sukurtas duomenų rinkinys. Kaip pavyzdžiui /proc/cpuinfo laikoma informacija apie CPU. Ji gali būti peržiūrėta su teksto redaktoriumi.
  • /mnt - čia laikomos tuščios direktorijos ant kurių prijungiami diskai su mount komanda.

Labai gerai jei nepasitenkinate tuo ką aš parašiau ir norite patys pasižvalgyti. Naudokite ls komandą jei norite peržiūrėti direktorijos turinį. Naudokite cd komandą jei norite pereiti į kitą direktoriją. Tarkim:

  • cd /var/log

Naudokite file komandą jei norite sužinoti kokio tipo yra kažkokia byla ir jei tai tekstas panaudokite less komandą tam, kad jį perskaitytumėte (q grįžta į terminalą iš less).

Pradinė informacija[keisti]

Dauguma čia dabar pateiktų ~20 dažniau naudojamų komandų su trumpu paaiškinimu ką jos daro. Bet terminalas tai nėra dešimčių komandų mokymasis mintinai su laiku jūs jas sužinosite. Dauguma komandų tai ne iš kažkur susapnuotas raidžių kratinys, o angliškas žodis ar jo santrumpa. Kaip "copy" (kopijuoti) tai komanda "cp", "move" (perkelti) tai komanda "mv", "remove" (trinti) tai komanda "rm". ir "make directories" (kurti direktorijas) tai komanda "mkdir". Pati svarbiausia naujokui komanda yra "man". Nes ji pateikia paaiškinimus apie kitas komandas. Naudojama taip: man ieškoma_komanda Tiek daugiau nei pakanka pradžiai.


"Wildcards"[keisti]

"Wildcards" tai simboliai kurie reiškia keletą kitų simbolių. Jie plačiai naudojami terminale ir be jų terminalas virstų tikra kankyne. o su jais su terminalu galima greit padaryti tai kas grafinėje aplinkoje būtų ilgas ir nuobodus darbas. Todėl net nesigilindami į jokias komandas imames jų.

Wildcards sąrašas:

  • Bet koks skaičius bet kokių simbolių: *
  • Bet koks vienas simbolis: ?
  • Bet koks simbolis iš duotų: [duoti simboliai]
  • Bet koks simbolis tik ne duotas: [!duoti simboliai]

Paprasti pavyzdžiai darbo su "wildcards":

  • Trinti viską: rm *
  • Trinti viską kas prasideda su a: rm a*
  • Trinti visus mp3: rm *.mp3
  • Trinti visus mp3 kurie prasideda su a: rm a*.mp3
  • Trinti visas bylas kurios prasideda su byla ir turi dar tris simbolius pabaigoje: rm byla???
  • Trinti viską kas prasideda su a arba b arba c: rm [abc]*
  • Trinti viską kas prasideda didžiąja raide: rm [A-Z]*
  • Trinti visus kas prasideda kaskas ir užsibaigia trimis skaičiais: rm kaskas[0-9][0-9][0-9]
  • Trinti viską kas neprasideda mažąja raide: rm [!a-z]*

Beabėjo juos galima naudoti su bet kokiomis komandomis ne tik su rm. Kaip tai svarbu pademonstruosiu praktiniais pavyzdžiais.

Tarkim reikia nueiti iš namų katalogo /home/vart į katalogą: /mnt/labai_ilgas_direktorijos_pavadinimas1. Žinodami kad cd keičia katalogą ir kad katalogas ".." yra lipimas katalogų medžiu aukštyn galbūt darytumėte taip (taip kaip ir darote grafinėje aplinkoje):

  • cd ..
  • cd ..
  • cd mnt
  • cd labai_ilgas_direktorijos_pavadinimas1

Beabėjo rezultatas pasiektas, bet buvo galima:

  • cd /mnt/labai_ilgas_direktorijos_pavadinimas1

Taip jau trumpiau. Arba jei žinome, kad, kataloge be mūsų baisiojo labai_ilgas_direktorijos_pavadinimas1 daugiau nėra direktorijų prasidedančių su l galima dar trumpiau:

  • cd /m*/l*/

O dabar grįžtame atgal. Tikriausiai jau kažką kuriate, bet namų katalogą žymi: ~. Todėl pakaks komandos:

  • cd ~

Sekantis pavyzdys su kuriuo teko susidurti kone kiekvienam. Tarkim mes sėkmingai įėjome į ntfs particiją ir tada prisiminėme, kad musų muzika yra kaškur į "Program Files" sukišta. Taigi skeliame komandą:

  • cd Program Files

Ir čia laukia nusivylimas netikėtas. Išvedama klaida:

  • -bash: cd: Program: No such file or directory (t.y. tokios direktorijos ar bylos kaip Program nėra)

Nėra sunku suvokti, kad koją mums pakišo tas prakeitas tarpas. Standartinis išsisukimas yra panaudoti ignoravimo simbolį: \ ir įvesti:

  • cd Program\ Files

Tada tarpas bus interpretuotas kaip teksto dalis, o ne koncolės operatorius. Bet tai nėra gražu komanda labai ilga; dar paprasčiau tiesiog:

  • cd P*

Žinant, kad mūsų particijoje kitos direktorijos neprasideda su P, o jei ir yra kuri prasideda su P tai:

  • cd Pro*

Tuomet salyga ta, kad dagiau neturi būti direktorijų prasidedančių su Pro.

man komanda[keisti]

Pangarinėsime kaip jau minėjau labai svarbią pradedantiesiems man komandą, ir su man komandos pagalba aiškinsimės cp komandos ypatumus. Taigi įvedame:

  • man cp

Į ekraną išspauzdinamas cp komandos aprašymas. Norėdami judėti aukštyn-žemyn naudojame rodykles, paspaudus q išeinama atgal į terminalą. Aprašymo viršuje yra "NAME" skiltis. Joje trumpai apibūdinama komanda.

Toliau eina "SYNOPSIS" skiltis joje apibūdinama galima sintaksė. Tai painiausia dalis. Laimei nėra itin svarbi, o iš dalies suprantama intuityviai. Pamėginsiu paaiškinti, ką mes matome prie cp:

  • [OPTION] - rodo kur rašomi nustatymai, paprastai iš kart po komandos
  • [-T] - rodo nustatymą kuris įvedamas net jo neparašius.
  • Kiti žodiai naudojami objektams su kuriais dirbama pavadinti.

Sekanti svarbiausia "DESCRIPTION" skiltis. Joje aprašomi galimi nustatymai. Panagrinėsim kelis svarbesnius komandos cp nustatymus:

  • -i, --interactive Tai nustatymas nurodantis, kad jei kopijuojant randama jau esanti byla kuri buvo nurodyta kaip būsima kopija, tai tuomet turi būti išvedamas klausimas ar "užrašyti ant virsaus esamos bylos". Kaip matome yra du galimi nustatymo rašymo budai ilgas su dvien minusais ir žodžiu, ir trumpas su vienu minusu ir viena raide. Ilgas galbūt įsimintinesnis, bet trumpas neabejotinai patogesnis.
  • -R, -r, --recursive Tai nustatymas, nurodantis kopijuoti rekursyviai. Tai yra kopijuoti ir mūsų darbinėje direktorijoje esančias kitas direktorijas su viskuo kas jose yra.

Nustatymus vedant kelis iš karto nereik rašyti krūvos minusų galima -i ir -r sudėti į vieną: -ir. Bebėjo visų galimų nustatymų nereikia ir vargu ar įmanoma įsiminti: juk bet kada galime pasinaudoti man komanda ir vėl.

Toliau aprašoma "ATHOR", "REPORTING BUGS", "COPYRIGHT" iš kurių maža naudos. Pabaigoje "SEE ALSO" ten rasite kur galite rasti daugiau informacijos. Dažniausiai ten nurodomos kitos panašios komandos arba pasiūloma naudotis komanda info. Nebūtinai visos mano minėtos dalys turi būti, gali jų būti arba daugiau arba mažiau.


Įvesties/Išvesties peradresavimas[keisti]

Tai gali kartais būti labai naudinga. Takim jums mėginant paleisti Skype nieko nesigavo ir išmetė pusės puslapio ilgio klaidą. Jūs pasiklausėte forume ką daryti, bet ten paprašė, kaip ir reikėjo tikėtis, parašyti kokia tiksliai ta klaida. Gal ir pulsite ją nurašinėti, bet paprasčiau būtų:

  • skype > klaida

Taip viskas ką išspausdins skype bus įrašyta į klaida tekstinę bylą.

Imkimės paprastesnio ir lengviau atkartojamo pavyzdžio. komanda date parašo esamą datą į ekraną. Bet jei įvesim:

  • date > data_dabar

Tai byla jei tokia buvo "data_dabar" tai ji bus ištrinta ir vietoje jos bus parašyta byla su dabartine data. Jei mes ištrynimo nenorime tada rašome:

  • date >> data_dabar

Tokiu atveju, jei jau yra byla data_dabar tai data bus prirašyta bylos pabaigoje. Jei bylos data_dabar nėra abi komandos duos identišką rezultatą. Prieš mėgindami tai įsitikinkite, kad esate savo namų kataloge, jei ne pirmiau įveskite:

  • cd ~

Lygiai taip galima peradresuoti ir įvestį su "<", bet ne su visomis komandomis tai pavyksta.

Kitas svarbiausias dalykas šioje srityje yra "pipes". Su jais vienos komandos išvestis nukreipiama kaip kitos įvestis. Komanda "du" parodo kokios yra direktorijos ir kiek vietos jos užima. Jei sudėsim du su sort taip:

  • du | sort -nr

Mums parodys kokios yra direktorijos ir kiek vietos jos užima pradedant didžiausia ir baigiant mažiausia. Bet jei direktorijų labai daug jos netilps net į ekraną O jei dar pridėsim:

  • du | sort -nr | less

Įvyks tai kas anksčiau tik dar viskas bus nukreipiama į less ir tai mums leis peržiūrėti patogiau viską, kaip ir bet kokią kitą tekstinę bylą su less. Būtent "nupaipinimas" į less padeda peržiūrėti tai kas paprastai netilptų į ekraną ir dažnai būna labai naudinga. Tarkim iš esmės teisinga komanda:

  • ls -l /etc

Duos mažai naudos. Bent aš pas save matau tik nuo "s" raidės viską, o viršutinė dalis liko "nukirpta". Todel:

  • ls -l /etc | less

Jau naudingiau. Kaip visad iš less išeinama paspaudus "q". Jei nežinot, kad duoda -l prie ls pažiūrėkit:

  • man ls

Leidimai[keisti]

Unix tipo operacinės sistemos yra daugelio vartotojų operacinės sistemos. Todėl tam, kad nekiltų painiava. keikviena byla turi savo "šeimininką" ir teises ką su ja gali kas daryti. Bet kurioje direktorijoje surinkite:

  • ls -l

Ir pamatysite daug eilučių panašių į šią:

  • drw-rw-r-- 1 me gr 123456789 Sep 26 10:22 pavadinimas

Nesunku nuspėti, kad tas skaičius tai bylos dydis baitais, toliau sukūrimo data ir pavadinimas. Bet tai kas priekyje atrodo gal kėbliai. Tai "me" nurodo šeimininko vartotojo vardą, o "gr" nurodo šeimininkės grupės vardą. O "drwxr-xr-x" išsišifruoja taip:

  • d rodo kad tai direktorija, jei būtų - tai reikštų, kad tai byla
  • rw- rodo, kad direktoriją jos šeimininkas gali perskaityti, perrašyti ir vykdyti (santrumpa nuo: read, write, execute).
  • r-x rodo, kad šeimininko grupė gali direktoriją perskaityti ir vykdyti
  • r-x pabaigoje, rodo, kad visi kiti gali direktoriją perskaityti ir vykdyti

Toks raidžių ir minusų kratinys gali būti pakeistas dvejetainiais skaičiais raidę imant kaip 1 ir minusą kaip 0. Taigi:

  • rwxr-xr-x == 111 101 101

Ir dvejetainis skaičius gali būti pakeistas dešimtainiu. Toliau su komanda chmod keičiami leidimai taip:

  • chmod 600 pavadinimas

Gan painoka matematika čia, todėl paprasčiau tiesiog žinoti įdomiausias vertes:

  • 777 == rwxrwxrwx
  • 755 == rwxr-xr-x
  • 700 == rwx------
  • 666 == rw-rw-rw-
  • 644 == rw-r--r--
  • 600 == rw-------

Be to nesunku įžvelgti tam tikrus sutapimus, pvz.: kaip mažėjantis skaičius ar skaitmuo mažina teises. Tiesa gal nelabai aišku kas tas "vykdymas". Tai direktorijos "vykdymas" daugiausia suprantamas kaip leidimas atlikti komandą:

  • ls ta_direktorija

Bylos "vykdymas" suprantamas, kaip leidimas paleisti ją kaip programą. Unix neturi galūnių ir nėra griežtai atskirta kur programa, o kur tarkim muzika. Su tuo galima susidurti parsisiuntus Linux skirtą žaidimą ir mėginant jį paleisti, o paleidžiama taip:

  • ./pavadinimas

Tai leidimas "vykdyti" bylą suprantamas daugiausia kaip leidimas atlikti tokią komandą.

Bylos/direktorijos savininką root naudotojas gali keisti taip:

  • chown savininkas byla

Daugiau informacijos kaip visad:

  • man chown
  • man chmod

Naudingos programos veikiančios konsolėje[keisti]

Apie visas jas plačiau žiūrėkite:

  • man pavadinimas

Kai kurias gali tekti įdiegti.

  • nano - teksto redaktorius
  • wget - parsisiuntimo iš interneto programa. Su ja taip paprastai kaip:

Ir kartu taip galingai kaip:

    • echo 'wget url' | at 01:00 - pradėti parsisiųsti kažką 01:00.
  • links - interneto naršyklė
  • ircii-pana - IRC programa, kaip kad mIRC.
  • mpd ir mpc - mp3 grojimo demonas ir jo valdymo programa.
  • bc - gan galingas skaičiuotuvas
  • mplayer - muzikos ir filmų! grotuvas

Ir daug kitų.

Karštieji klavišai (hotkėjai)[keisti]

Gerus pagrindus jau turite, bet jei norite įvaldyti didžiausias konsolės galimybes tai turite visu pirma daugiau įgyti praktikos, o visų antra išmokti naudoti "hotkėjus". Hotkėjai neturi plačiai priimto lietuviško pavadinimo. Tai mygtukai ar jų kombinacijos padedančios žaibiškai atlikti įvairias funkcijas. Vienas pagrindinių iš jų tai rodyklės. Su pirmyn-atgal paslenkame kursorių, su aukštyn-žemyn peržiūrime komandų istoriją. Tai labai naudinga jei norime pakartoti panašią komandą. Pavyzdžiui jau minėta nelabai techniška serija:

  • cd ..
  • cd ..

Gali būti atlikta taip:

  • cd .. -> enter -> rodyklė aukštyn -> enter

Arba jei prisimename, kad neseniai prijungėme iso bylą su jau minėta gremėzdiška komanda ir dabar norime prijungti dar vieną tai:

  • rodyklė aukštyn tiek kartų kol pamatysime seniau vestą reikalingą komandą, tada rodyklė į kaire kol pasieksim pavadinimą, jį tada su backspace nutriname įrašome naują ir enter.

Ctrl+b daro tą patį ką ir rodyklė atgal, o ctrl+f tą patį kaip ir rodyklė pirmyn. Bet kartais tenka grįžti į pradžią pradžią tai tada:

  • ctrl+a

Kartais komanda pradeda veikti ir niekad nesibaigia tai čia reikia spausti:

  • ctrl+c

Ir komandos darbas bus nutrauktas.

  • ctrl+k ir alt+d - ištrina viską kas dešinėje
  • ctrl+l - išvalo visą ekraną
  • ctrl+r - po to vedant komandą ieško panašios jau vestos ir tai matoma ekrane. Kai norai ir tai kas matoma sutampa belieka spausti enter.
  • ctrl+u - ištrinti viską kas kursoriaus kairėje
  • ctrl+x keletą kartų - šokinėti su kursoriumi tarp esamos padėties ir pabaigos
  • ctrl+z - pervesti jau įvykdytą komandą į "stop" rėžimą. fg grąžina į normalų rėžimą. Kas atsitinka geriau matyti iš pavyzdžio:
    • top
    • ctrl+z
    • fg
  • alt+/ - mėginti užbaigti bylos/direktorijos pavadinimą, pavyksta jei nėra dviejų tinkamų. Tarkim jau esame /boot/grub

ir atidarinėjame menu.lst su nano, tai:

    • nano me -> alt+/ -> enter -> viskas. Tai dar naudingiau kai bylų vardai ilgi.

TAB klavišas - toks pat užbaiginėjimas tik užbaigia komandas. Jei nepavyksta tai rezultatas nieko, arba visų galimų komandų sąrašas. Norint sąrašo geriau paspausti TAB du kartus. Jei sąrašas ilgas paklaus ar tikrai norite jį žiūrėti. Pamėginkite nieko neparašę paspaudinėti TAB. Paskui parašykit vieną raidę ir paspaudinėkit.

  • alt+c - keičia iš didžiųjų į mažąsias po kursoriaus esančias raides. Naudinga kai per klaidą "caps lock" buvo perjungtas į nenorimą rėžimą.
  • alt+l - sumažina visas raides
  • alt+u - padidina visas raides
  • = ir paspaudyti TAB - tas pat kaip ls.
  • /direktorija ir paspaudyti TAB - tas pat kaip ls tik rodo vien direktorijas.