Unixin komentorivin perusteet
Käymme läpi joitakin Unix-tyyppisten järjestelmien ominaisuuksia ja komentorivin käyttöä. Oletamme käyttäjän kirjautuneen Unix-/Linux-koneelle esimerkiksi ssh:n kautta merkkipohjaisesti.
Hakemistorakenne
Windows-maailmassa tallennusmediat on jaoteltu erillisiin asemiin: C:\,
D:\, E:\ jne. Kukin kiintolevyjen osio omana asemanaan ja kukin
irroitettava media (cd, dvd, usb,…) omanaan. Unix-tyyppisissä
järjestelmissä ei käytetä tällaista jaottelua vaan kaikki tiedostot on
koottu yhteen hakemistopuuhun, jolla on yksi juuri, josta käytetään
merkintää /
. Windows-järjestelmissä sekä monessa muussa
graafisessa käyttöympäristössä tiedostojen hierarkisesta
tallennusjärjestelmästä käytetään nimitystä kansiot (folder).
Kansiot voivat sisältää tiedostoja ja toisia kansioita. Unixeissa
samasta asiasta käytetään vanhataan nimitystä hakemistot
(directory). Toinen ero Windows- ja Unix-järjestelmien
kansio-/hakemistorakenteen välillä on niiden merkinnässä. Windowsissa
kansioiden erottimena toimii (taka)kenoviiva \, esimerkiksi
“C:\windows\system\”, ja Unixissa tavallinen kauttaviiva, eli etukeno
/, esimerkiksi “/usr/lib/”. Kolmas selvä ero näiden järjestelmien
välillä on isojen ja pienten kirjaimien käytössä. Windowsissa ei
kirjainkoolla ole merkitystä, mutta Unixissa esimerkiksi tiedostot
“Dokumetti.txt” ja “dokumentti.TXT” ovat kaksi eri tiedostoa.
Unix-järjestelmän tiedostot on järjestetty hakemistohierarkiaan tiettyjen sääntöjen mukaisesti. Esimerkiksi ohjelmat löytyvät suurimmaksi osaksi hakemistn /usr alta, järjestelmänlaajuiset asetukset hakemistosta /etc ja laitteistoa kuvaavat laitetiedostot hakemistosta /dev. Käyttäjien kotihakemistot, eli Windowsin “C:\Document and settings\käyttäjä”-kansioita vastaavat hakemistot, löytyvät /home -hakemiston alta.
Komentorivin peruskomennot
Komentorivillä ollessaan käyttäjä on aina jossain hakemistossa. Toisin
sanoen, jokin hakemisto on aina työhakemistona. Sisään kirjautumisen
jälkeen käyttäjä löytää itsensä omasta kotihakemistostaan
(/home/tunnus). Kulloisenkin työhakemiston voi aina tarkistaa komennolla
pwd
(print working directory).
pesasa@etakone:~$ pwd
/home/pesasa
Hakemistorakenteessa liikkuminen
Hakemiston vaihtaminen tapahtuu cd
-komennolla. Kohdehakemiston voi
antaa suhteellisena:
pesasa@etakone:~$ cd dokumentit
pesasa@etakone:~/dokumentit$ pwd
/home/pesasa/dokumentit
eli suhteessa nykyiseen työhakemistoon, tai absoluuttisena:
pesasa@etakone:~/dokumentit$ cd /usr/bin
pesasa@etakone:/usr/bin$ pwd
/usr/bin
eli antamalla koko hakemistopolun juuresta lähtien.
Erityisiä hakemistoja ovat . ja .., jotka viittaavat sen hetkiseen hakemistoon(.) ja hakemistoon, joka on yhden tason verran lähempänä juurta (..).
pesasa@etakone:/usr/bin$ pwd
/usr/bin
pesasa@etakone:/usr/bin$ cd ../lib
pesasa@etakone:/usr/lib$ pwd
/usr/lib
pesasa@etakone:/usr/lib$ cd .
pesasa@etakone:/usr/lib$ pwd
/usr/lib
Myös käyttäjän kotihakemistolle on oma lyhennysmerkintänsä:
pesasa@etakone:/usr/lib$ cd ~
pesasa@etakone:~$ pwd
/home/pesasa
Tosin kotihakemistoon pääsemiseksi riittää myös pelkkä cd
-komento.
pesasa@etakone:~$ cd /tmp
pesasa@etakone:/tmp$ pwd
/tmp
pesasa@etakone:/tmp$ cd
pesasa@etakone:~$ pwd
/home/pesasa
Nykyisen ja edellisen työhakemiston välillä voi näppärästi liikkua seuraavasti:
pesasa@etakone:~$ cd -
pesasa@etakone:/tmp$ pwd
/tmp
pesasa@etakone:/tmp$ -
pesasa@etakone:~$ pwd
/home/pesasa
Komento cd -
siirtyy aina siis edelliseen työhakemistoon.
Hakemistojen sisältöä
Hakemistojen sisältöä voi tarkastella komennolla ls
pesasa@etakone:~$ ls
bar baz foo foobar
pesasa@etakone:~$ ls foobar
barbababa bazaar
Jos komennon väritystoiminto on päällä, näkyvät eri tyyppiset tiedostot
ja hakemistot eri väreillä. Tarkempaa tietoa tiedostoista, niiden
koosta, luontipäivämäärästä yms. saa käyttämällä komentoa ls -l
pesasa@etakone:~$ ls -l
total 12
-rw-r--r-- 1 pesasa mat 0 2009-09-16 21:30 bar
-rw-r--r-- 1 pesasa mat 55 2009-09-16 21:35 baz
-rw-r--r-- 1 pesasa mat 28 2009-09-16 21:34 foo
drwxr-xr-x 2 pesasa mat 4096 2009-09-16 21:32 foobar
Tästä tulosteesta käy muun muassa ilmi, että foobar on hakemisto (d-kirjain rivin alussa), tiedostot ovat kaikki käyttäjän pesasa omistuksessa ja niiden ryhmäksi on merkitty ryhmä mat. Omistajalla on oikeudet lukea ja kirjoittaa tiedostoja (rw-) sekä myös viitata hakemiston sisällä oleviin tiedostoihin (rwx). Ryhmän mat jäsenillä ja sen ulkopuolisilla muilla on oikeus vain lukea tiedostoja (r–) ja lukea ja viitata hakemiston foobar sisältöön (r-x). Tiedostot ja hakemisto on kaikki luoto 16.9.2009 hieman puoli kymmenen jälkeen illalla. Tiedostot baz ja foo ovat varsin pieniä, 55 ja 28 tavua, ja tiedosto bar on tyhjä.
Tiedostojen oikeudet
Kuten edellä jo kävi ilmi, Unixeissa oikeudet tiedostoihin jaetaan
kolmella eri tasolla. Ensinnäkin on tiedoston omistava käyttäjä,
toiseksi ryhmä, jolle voi antaa oikeuksia tiedoston käyttöön sekä
kolmanneksi joukko “muut”, joka sisältää kaikki koneen käyttäjät.
Tiedostoihin voi kullekin näistä tasoista antaa erikseen luku-,
kirjoitus- tai suoritusoikeuden. Hakemistoille vastaavasti luku-,
kirjoitus- tai viittausoikeuden. Viittausoikeudella tarkoitetaan lupaa
viitata komennoissa kyseisen hakemiston alla oleviin tiedostoihin tai
hakemistoihin. Tiedostojen ja hakemistojen oikeuksia muutetaan
komennolla chmod
pesasa@etakone:~$ chmod u+x,g+w,o-r bar
pesasa@etakone:~$ ls -l bar
-rwxrw---- 1 pesasa mat 0 2009-09-16 21:30 bar
pesasa@etakone:~$ chmod u-x bar
pesasa@etakone:~$ ls -l bar
-rw-rw---- 1 pesasa mat 0 2009-09-16 21:30 bar
Tiedoston omistavaan käyttäjään viitataan kirjaimella u (user), ryhmään kirjaimella g (group) ja muihin kirjaimella o (others). Oikeuksia lisätään plusmerkillä ja vähennetään miinusmerkillä.
Tiedostojen kopiointi ja siirto
Tiedosto kopioidaan komennolla cp
pesasa@etakone:~$ cp foo abcd
Ensimmäinen parametri on kopioitavan tiedoston nimi ja toinen luotavan uuden kopiotiedoston nimi. Jos parametreina luetellaan enemmän kuin kaksi tiedostoa, on viimeisen parametrin oltava hakemisto, johon edellä olevat tiedostot kopioidaan.
pesasa@etakone:~$ cp foo abcd bar foobar
pesasa@etakone:~$ ls foobar
abcd bar barbababa bazaar foo
Jos halutaan kopioida kokonainen hakemisto sisältöineen, pitää kopiointi tehdä rekursiivisesti.
pesasa@etakone:~$ cp -r foobar copyfoo
Linux-järjestelmissä käytettävässä GNU-projektin cp:ssä on lisäksi käytössä vaihtoehto -a (archive), joka varmistaa, että tiedostojen omistajuudet, oikeudet sekä päivämäärät säilyvät, jos mahdollista.
pesasa@etakone:~$ cp -a foobar copyfoo2
Tiedoston siirto tapahtuu vastaavasti kuin kopiointi, mutta komennolla
mv
.
pesasa@etakone:~$ mv abcd foobar
pesasa@etakone:~$ ls foobar
abcd bar barbababa bazaar foo
Tiedostojen uudelleen nimeäminen voidaan tulkita tiedoston siirtämisenä toiselle nimelle.
Jokerimerkit
Kun käsitellään useita tiedostoja on joskus tarpeen käyttää lyhennysmerkintää joukolle tiedostoja. Tiedostojen nimissä yhden merkin voi korvata kysymysmerkillä ? ja useamman merkin jonon tähdellä *.
pesasa@etakone:~$ ls -l ba?
-rw-rw---- 1 pesasa mat 0 2009-09-16 21:30 bar
-rw-r--r-- 1 pesasa mat 55 2009-09-16 21:35 baz
pesasa@etakone:~$ ls -l *a*
-rw-rw---- 1 pesasa mat 0 2009-09-16 21:30 bar
-rw-r--r-- 1 pesasa mat 55 2009-09-16 21:35 baz
foobar:
total 8
-rw-r--r-- 1 pesasa mat 28 2009-09-16 22:13 abcd
-rw-r----- 1 pesasa mat 0 2009-09-16 22:13 bar
-rw-r--r-- 1 pesasa mat 0 2009-09-16 21:32 barbababa
-rw-r--r-- 1 pesasa mat 0 2009-09-16 21:32 bazaar
-rw-r--r-- 1 pesasa mat 28 2009-09-16 22:13 foo
Näistä edellinen komento vastaa komentoa:
pesasa@etakone:~$ ls -l bar baz
ja jälkimmäinen komentoa
pesasa@etakone:~$ ls -l bar baz foobar
jolla näytetään ensin tiedostot bar ja baz ja sen jälkeen koko hakemiston foobar sisältö.
Muita tapoja määritellä tiedostojen nimiä lyhyesti ovat kirjainten luetteleminen: [aAki] sekä merkkijonojen luetteleminen: {abc,def}. Esimerkiksi:
pesasa@etakone:~$ ls ba[rz]
bar baz
pesasa@etakone:~$ ls foobar/*{ba,bc}*
foobar/abcd foobar/bar foobar/barbababa foobar/bazaar
Ensimmäinen komento luettelee työhakemistosta tiedostot bar ja baz. Jälkimmäinen luettelee kaikki foobar-alihakemiston tiedostot, joissa esiintyy jossain kohtaa merkkijono ba tai bc.