Unixin komentorivin perusteet
Linux-Aktivaattori
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.
Sisällysluettelo |
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.


