Kaikki tietokoneet tarvitsevat käyttöliittymän. Linuxin järjestelmähallinnassa käytetään tekstimuotoista liittymää. Järjestelmä näyttää valvojalleen kehotteen, joka yksinkertaisimmillaan on yksittäinen merkki kuten $ tai #. Kehote ilmaisee, että se on valmis ottamaan vastaan käskyjä, jotka vievät tilaa yhden tai useamman rivin. Tätä käyttöliittymää kutsutaan komentoriviksi.
Kuori-niminen ohjelma huolehtii kehotteesta ja tulkitsee komennot. Kuori tarjoaa käyttöliittymän Linuxin ytimen ja käyttäjän välille, mistä sen nimi. Alkuperäinen kuori Unix-järjestelmiin oli Steve Bournen luoma, ja sen nimi oli sh. Linuxin oletuskuori on bash, Bournen uudelleen määritelty kuori, joka on sh:n GNU-muunnelma. Tarjolla on myös suosittu tcsh, alunperin csh:n (tai C-kuoren) muunnelma. Bash-kuori on kokonaan oma LPI-aiheensa, mitä käsitellään toisessa osassa: Kuoret, skriptaus, ohjelmointi ja kääntäminen (aihe 1.9). Tässä vaiheessa keskitymme ensisijaisesti bashin ja käskyjen tehokkaaseen käyttöön.
Kuori on väkevä ohjelmointiympäristö, jolla voit automatisoida melkein mitä tahansa Linux-järjestelmässäsi. Kuori on myös palautetta antava käyttöliittymäsi järjestelmään. Kun käynnistät kuoren se valmistautuu käyttöä varten muutamalla autommaattisella toimella ja sen jälkeen näyttää komentokehotteen. Komentokehote kertoo, että kuori on valmis ottamaan vastaan komentoja vakiosyöttölaitteeltaan, mikä tavallisimmin on näppäimistö. Kuoret voivat toimia yksin kuten laitetepäätteelä tai omassa ikkunassaan graafisessa ympäristössä. Molemmissa tapauksissa käyttö on samanlaista.
Käytön aikana bash huolehtii joukosta kuoren muuttujia, jotka sisältävät bashin käytön kannalta tärkeää tietoa. Suurin osa näitä muuttujista määritellään käynnistyksen yhteydessä, mutta ne voidaan määritellä uudestaan milloin tahansa.
Ensimmäiseksi käsittelemme muuttujaa nimeltään PS1, mikä tarkoittaa kehotejonoa 1. Tämä muuttuja määrittelee, mitä komentokehote näyttää, silloin kun bash on valmis ottamaan vastaan komentoja. On olemassa myös muuttuja PS2, jota käytetään , kun bash tarvitsee usean rivin täyttääkseen komennon. PS1:n kuten muittenkin muuttujien sisällön saa esiin käyttämällä echo-komentoa, jota seuraa $-merkillä alkava muuttujan nimi:
$ echo $PS1
\$
Esiin tullut \$ kertoo, että PS1 sisältää nämä kaksi merkkiä: \ ja $. Kenoviiva ilmaisee, että kuoren ei pidä tulkita taala-merkkiä millään erityisellä tavalla, siis metamerkkinä, joista lisää myöhemmin. Pelkkä taala-merkki oli sh:n oletusmerkki, mutta bash tekee kehotteesta tiedottavamman. (Käyttö)järjestelmässäsi PS1:n oletuskehote on jokseenkin tällainen:
[\u@\h \W]\$
Jokaisella kenoviivan jälkeisellä merkillä on erityismerkityksensä bashille, kun taas muut merkit se tulkitsee kirjaimellisesti. Tässä esimerkissä \u (user) tarkoittaa käyttäjätunnusta, \h (host) tarkoittaa järjestelmän isäntää (=käyttämääsi tietokonetta), \W (working directory) tarkoittaa (alinta) kansiota (koko hakemistossa), jossa olet ja \$ tarkoittaa $-merkkiä. (Jos olet kirjautunut roottina, $:n tilalla on #.) Tämä kaikki antaa seuraavanlaisen kehotteen:
[jdean@linuxpc jdean]$
(käyttäjätunnuksellä jdean on kirjauduttu linuxpc:ksi nimetylle koneelle, ja parhaillaan työskennellään kansiossa nimeltä jdean)
Se miten kehote on muotoiltu, on pelkästään mukavuuskysymys, eikä vaikuta siihen, kuinka kuori tulkitsee antamasi komennot. Erilaisen (varsinkin järjestelmää, käyttäjää ja kansion sijaintia koskevan) tiedon lisääminen kehotteeseen, voi helpottaa elämää, kun siirrytään järjeltelmästä toiseen ja kirjaudutaan sisään useammalla tunnuksella.
Toinen tärkeä muuttuja on PATH (polku), joka sisältää luettelon kaikista kansioista, joissa on komentoja tai ohjelmia, joita aiot käyttää. Oletuspolku määritellään, kun bash käynnistyy. Voit muokata oletusta ja lisätä ohjelmia, joita tarvitset.
HUOM
Linuxin tiedostojärjestelmässä jokainen tiedosto voidaan määritellä tarkasti sijaintinsa mukaan. Esimerkiksi less-ohjelma sijaitsee kansiossa /usr/bin. Kun sijoitat tämän polun PATHiin, voit käynnistää lessin vain kirjoittamalla less ilman täydellistä polkua /usr/bin/less.
Jotta bash voisi löytää ja täyttää komentosi, komennon pitää olla:
Kuori pitää PATHin ja muut muutujat omassa käytössään. Näitä muuttujia kuitenkin tarvitaan, kun ohjelmia käynnistetään kuoresta. Jotta muuttujat olisivat muitten ohjelmien saatavilla, ne pitää viedä, jolloin niistä tulee ympäristömuuttujia. Ympäristömuuttujat annetaan ohjelmien ja toisten kuorien käyttöön, ja yhdessä ne muodostavat ympäristön, jossa ohjelmia käytetään. PATHista tulee aina ympäristömuuttuja. (csh:n ja tcsh:n kohdalla on olemassa sekä kuoren omia että ympäristömuuttujia PATHille. Kuori pitää ne samassa tahdissa.) Kuoren muutujan vieminen ympäristömuuttujaksi tehdään export-komennolla:
$ export MYVAR
Kun muuttuja on viety ympäristöön, se päätyy myös kaikkiin alaprosesseihin, mikä tarkoittaa, että se on kaikkien kuoren ajamien ohjelmien käytettävissä.
Linux-komennot koostuvat neljästä osasta:
Jokaisella komennolla on on oma syntaksinsa (=välttämätön sisältö, jotta komento voidaan suorittaa). Useimmat tosin käyttävät kohtuullisen vakioitua muotoa. Ainakin itse komento tarvitaan:
$ ls
Tämä komento luettelee kaikki tiedostot siinä kansiossa, jossa olet. Se ei vaadi optioita eikä argumentteja. Yleensä optiot ovat kirjaimia tai sanoja, joiden edessä on yksi tai kaksi viivaa. Ne lisätään komennon perään ja erotetaan siitä välillä:
$ ls -l
Optio -l muuntaa ls-ohjelmaa näyttämään tiedostot pitkässä, yksityiskohtaisessa muodossa. Useimmiten yhden viivan optiot voidaan yhdistää tai kirjoittaa erilleen:
$ ls -l -a
$ ls -la
Optio -a näyttää piilotiedostot, mitkä alkavat pisteellä (oletuksena ne jätetään näyttämättä). Sama tulos saadaan -la:lla. Jotkut komennot antavat muitakin vaihtoehtoja samalle optiolle. Esim edellisessä -a voidaan korvata optiolla --all:
$ ls -l --all
Näitä tuplaviiva kokosana -optioita on usein GNU-projektin ohjelmissa. Niitä ei voi yhdistää kuten yhden viivan optioita. Kumpaakin tyyppiä voidaan käyttää vapaasti yhdessä. Pitkät GNU-optiot vaativat kirjoittamista, mutta ne on helpompi muistaa ja lukea skripteissä (=komentojonoissa).
Argumentin lisääminen jalostaa komentoa edelleen:
$ ls -l *.c
Nyt komento antaa yksityiskohtaisen luettelon vain tiedostoista joilla on pääte .c, jos niitä on työskentelykansiossa. Jos niitä ei ole, mitään ei kerrota. Jos Unix- ja GNU-komennoilla ei ole mitään toimeenpantavaa, ne eivät myöskään kerro tästä mitenkään. Joskus optioiden ja argumenttien järjestyksen voi sekoittaa:
$ ls --all *.c -l
Tässsä tapauksessa ls pystyi päättelemään, että -l on optio eikä toinen tiedostokuvaaja.
Jotkut komennot kuten tar ja ps eivät vaadi viivaa option eteen, koska ne olettavat tai vaativat vähintään yhtä optiota joka tapauksessa. Usein optio kertoo komennolle, että seuraava asia rivillä on erityinen argumentti:
$ tar cf mytarfile file1 file2 file3
$ tar -cf mytarfile file1 file2 file3
Nämä samanlaiset komennot käyttävät taria luomaan arkistotiedoston nimeltään mytarfile ja sisällyttämään siihen tiedostot file1, file2 ja file3. Tässä tapauksessa optio f kertoo tarille, että arkistotiedoston nimi mytarfile seuraa välittömästi optiota.
Kuten missä tahansa kielessä on poikkeuksia ja muuntelua, niin on myös GNUn ja Unixin komennoissa. Olennaisten syntaksien oppiminen usein käyttämillesi komennoille on helppoa. Linuxin komentojen mahdollisuudet ovat laajat, joten on todennäköistä, ettet muista kaikkia komentosyntakseja, joita tarvitset. Useimmat järjestelmänvalvojat opettelevat jatkuvasti uusia ominaisuuksia käyttämilleen komennoille. Joudut tavan takaa turvautumaan käyttämiesi komentojen man- ja info-sivuihin sekä muihin ohjeisiin.
Toisinaan tarvitset komentoa, jota ei ole polussasi eikä kuoressasi. Jos tarvitset jotain tällaista komentoa usein, sen kansio kannattaa lisätä polkuusi. Tai sitten vain kirjoitat koko polun aina, kun haluat käyttää komentoasi. Esimerkiksi ls-komento on /bin-kansiossa. Kansio on PATH-muuttujassasi, minkä vuoksi voit kirjoittaa komentoriville pelkän ls:
$ ls