Luku 2. Linuxin käyttö komentoriviltä

Komentorivi on perinteinen Unixissa, mutta graafinen käyttöliittymä on ollut jo vuodesta 1984 [Sobell -97, sivu 120], jolloin MIT kehitti X Window -järjestelmän. Kyseessä siis on X Window, Windows on toisen firman tekele.

Komentorivi on se mitä käytetään tietokoneen konsolissa tai X Window -järjestelmässä pääteikkunassa. Näissä ei ole kummoisempaa eroa. Linuxissa on yleensä virtuaalikonsolit, eli konsoli-ikkunoita saa oletustarvoisesti kuusi kappaletta, niiden välillä vaihdetaan Alt+F1 ... Alt+F6. Mikäli X server on käynnissä on Alt+F7 X desktop. X Window-istunnosta pääsee konsoliin näppäilemällä Ctrl+Alt+F1, takaisin X Window -istuntoon näppäilemällä Alt+F7.

Linuxissa yleensä käytetään komentotulkkia bash eli Born Again SHell. Nimi on vähän vitsi alkuperäisestä Unix komentotulkista eli Bourne Shell:stä. Komentorivillä ensimmäiseksi kirjoitetaan komento, bash osaa täydentää komennon lopun kun painaa sarkainnappulaa eli tab.

Komennon nimen jälkeen tulevat valitsimet. Valitsimet alkavat tavuviivamerkillä, valitsimet joilla on pitkä nimi alkavat kahdella tavuviivalla. Valitsimien jälkee kirjoitetaan komennon parametrit. Oletushakemistosta löytyvän tiedoston nimen bash osaa täydentää kun kirjoittaa alun ja painaa sarkain-nappulaa.

Riviä voi muokata, bash tunnistaa Emacsin näppäinoikotiet muokkaustoimintoihin (myös vi mahdollinen). Nuolinäppäimet, Home, End, korjausnäppäin jne. toimivat myös. Lisätietoja man bash kohdassa READLINE.

Edelliset rivit saa takaisin nuoli ylös -näppäimellä, ja niitäkin voi muokata, näin ei tarvitse kokonaan kirjoittaa uudestaan riviä jos edellinen rivi oli melkein samanlainen. Mikäli haluttu rivi on historiassa hyvin kaukana, voi painaa Ctrl+R ja merkkijono. Tällöin bash etsii viimeisimmän rivin jolla tuo merkkijono esiintyy jossain kohtaa. Komento history näyttää rivit jotka ovat komentotulkin historiapuskurissa.

Komento voi olla bashin sisäinen (built-in) tai ulkoinen. Ulkoinen komento on levyllä oleva suorituskelpoinen tiedosto (x eli executable) joka on jossain ympäristömuuttujassa PATH luetelluista hakemistoista. Komennolla type -a voi tarkistaa mistä komento löytyisi.

Esimerkki 2.1. type -a eli which

tapio@catbert:~$ type -a type
type is a shell builtin
tapio@catbert:~$ type -a ls
ls is /bin/ls
tapio@catbert:~$ type -a cd
cd is a shell builtin
tapio@catbert:~$ type -a which
which is /usr/bin/which
tapio@catbert:~$ which cd
tapio@catbert:~$
tapio@catbert:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

Ulkoinen komento which ei osaa löytää komentotulkin sisäänrakennettuja komentoja. On parempi käyttää type -a koska se osaa näyttää nekin, tai määritellä

function which () {
       type -a "$@"
}

Kirjauduttaessa sisään bash lukee ensin järjestelmän asetukset /etc -hakemistosta, sen jälkeen asetukset tiedostosta ~/.bash_profile. Tuossa tiedostossa tavataan komentaa luettavaksi ~/.bashrc, johon omat funktionsa voi lisätä. Tiedoston saa halutessaan pakotettua luetuksi komentamalla source ~/.bashrc. Näytetään Yksi .bashrc malliksi. Piilotiedostot eli ne joissa tiedoston nimen ensimmäinen merkki on piste, eivät normaalisti näy tiedostolistauksissa. Parametrilla -a nekin saa näkyviin.

Tuo tilde-merkki eli ~ tarkoittaa bashissä ja useissa muissakin Unix-ohjelmissa käyttäjän kotihakemistoa, siis useimmiten hakemistoa /home/käyttäjätunnus. Esimerkiksi omat henkilökohtaiset webbisivut pitää kirjoittaa hakemistoon ~/public_html/. Toisen käyttäjän kotihakemistoon voi viitata kirjoittamalla tilde ja käyttäjätunnus, esimerkiksi käyttäjän harri webbisivut ovat ~harri/public_html/ -hakemistossa.

Bashissä on myös alias, mutta function on monipuolisempi ja nopeampi, kannattaa ennemmin opetella käyttämään sitä.

Toiseen hakemistoon siirrytään komennolla cd, tai pushd. Tämä pushd on siitä mukava että se muistaa ne hakemistot joissa oltiin, niihin pääsee palaamaan popd:llä. dirs näyttää mitä hakemistoja pinossa on tallessa.

Tiedostoja tuhotaan komennolla rm. Komennon kanssa on syytä olla varovainen varsinkin jos käyttää jokerimerkkejä, tuhottua tiedostoa ei saa takaisin. rm -r osaa poistaa alihakemistot rekursiivisesti, DOS:sta tuttu deltree on tarpeeton.

Kopiointiin on komento cp eli copy program, tiedoston nimi vaihdetaan tai se siirretään toiseen hakemistoon komennolla mv eli move. cp osaa kopioida myös rekursiivisesti, DOS:sta tuttu xcopy on tarpeeton. Myös DOS:n rename on tarpeeton koska mv osaa 'siirtää' tiedoston samaan hakemistoon toiselle nimelle.

Jokerimerkit eli wild card ovat * ja ?. Näistä ? tarkoittaa yhtä mitä tahansa merkkiä, ja * tarkoittaa nollaa, yhtä tai useampaa mitä tahansa merkkiä.

Esimerkki 2.2. Jokerimerkit

harri@catbert:~$ touch a.txt b.txt c.txt d.txt e.txt 
harri@catbert:~$ touch aa.txt bb.txt cc.txt
harri@catbert:~$ ls -l *.txt
lrwxrwxrwx    1 harri    harri          21 Jan  1 16:09 Kopio.txt -> ../tapio/Tiedosto.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 a.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 aa.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 b.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 bb.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 c.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 cc.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 d.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 e.txt
harri@catbert:~$ ls -l ?.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 a.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 b.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 c.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 d.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 e.txt
harri@catbert:~$ ls -l [ae].txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 a.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 e.txt
harri@catbert:~$ ls -l [ab]?.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 aa.txt
-rw-r--r--    1 harri    harri           0 Jan  1 20:14 bb.txt
harri@catbert:~$ 

Esimerkin kaksi viimeistä komentoa käyttävät säännöllistä lauseketta (regular expression). Niillä voi vielä tarkemmin määritellä mitkä tiedostot tulevat mukaan, esimerkiksi joissa ensimmäinen kirjain on a tai e ja sitten tulee .txt, tai ensimmäinen kirjain on a tai b, sen jälkeen tulee mikä tahansa merkki ja sitten .txt.

Komentotulkin kehoitteen eli promptin voi vaihtaa mieleisekseen. Siihen voi pistää esimerkiksi työhakemiston näkymään. Lisätietoja man bash kohdassa PROMPTING.