Shell-opas

Yleistä

Lyseolla on oppilaiden käytössä Kellari -niminen palvelin, johon voi ottaa ns. Shell-yhteyden ja ajaa esim. irc-ohjelmaa, sähköpostinlukuohjelmaa, vaihtaa salasanan tai järjestellä kotihakemiston sisältöjä. Vaihtoehtoisesti esim. sähköpostin käyttäminen onnistuu Webmailia käyttäen ja kotihakemistoakin voi järjestellä etänä WinSCP:llä.Shell-yhteys on kuitenkin hyvä tapa sivistää itseään ja oppia Linuxinsaloja. Työelämässä Linux tai Unix -shellejä voi löytyä työpaikoilta tai kouluista.Shellin käyttö voi vaikuttaa aluksi monimutkaiselta mutta vähän ajan päästä sen käytöstä voi tulla hyvinkin kätevää ja helppoa.

Tietokonetta voi käyttää monella tapaa. Windowsissa käytetään paljon hiirtä, joten näppäimistöä käytetäänkin lähinnä pelkän tiedon(esim. sähköpostiviestit) antamiseen. Shell tarkoittaa komentotulkkia eli tietokonetta ohjataan pelkästään näppäimistöltä kirjoitetuilla komennoilla. Shellillä voi saada hyvin paljon samoja asioita aikaa kuinperinteisen Windowsin kautta mutta Lyseon tapauksessa otetaan yhteys Kellarille ja ohjelmat ajetaan siellä. Tästä on esim. se etu että vaikka suljet oman tietokoneesi jää esim. irc-keskusteluohjelma pyörimään Kellarille ja vastaanotat viestejä poissaollessasikin eikä sinun tarvitse pitää omaa konettasi päällä. Voit jättää myös minkä tahansa muun ohjelman (sähköposti, tekstieditori jne.) pyörimään vaikka poistut ja jatkaa myöhemmin siihen mistä keskeytit, miltä tahansa koneelta - kotoa tai koulusta.

Yhdistäminen Windowsista

Ottaaksesi yhteyden Kellarille, tarvitset ns. SSH-ohjelman. SSH on vain (tehokkaasti) suojattu tapa käyttää Kellarin shelliä ja "Shell-yhteys" tai "SSH-yhteys" tarkoittavatkin usein samaa asiaa. PuTTY on hyvä SSH-ohjelma ja voithakea sen täältä.Tallenna "putty.exe" esim. työpöydällesi ja käynnistä setuplaklikkaamalla sitä. Voit ladata Lyseon PuTTY-asetukset tästä. Ladataksesi asetukset tallenna "lyseo_putty.reg" vaikkapa työpöydälle, tuplaklikkaa sitä ja koneellesi latautuu oikeat asetukset automaattisesti. Tiedoston voi tämän jälkeen poistaa.

Alempana myös ohjeet asetusten käsin laittamiseen jos et ajanut reg-tiedostoa, muutoin voit hypätä tämän ohi:

  1. Syötät "Host Name" -kenttäään lyseo.edu.ouka.fi
  2. Valitse "Protocol" -tyypiksi SSH
  3. Valitse "Window":n alapuolelta "Translation"
  4. Valitse merkistöksi listavalikosta "UTF-8", joka on uusi Lyseollakin käytössä oleva merkistö
  5. Palaa Session-ruutuun
  6. Kirjoita "Saved Sessions" -kenttään vaikkapa lyseo ja napsauta "Save" -painiketta.
  7. Yhdistä lopuksi tulpaklikkaamalla listan lyseo -kohtaa tai painamalla "Open" -painiketta.

Sen jälkeen PuTTY ilmoittaa tietoturvariskistä, jatka painamalla "Yes". Kellari kysyy tunnuksesi ja salasanan, jotka on saatettu esittääsinulle sähköpostitunnuksen muodossa mutta samat tunnukset käyvätkyllä. Sitten eteesi ilmestyy seuraavantapainen ruutu, jossa näkyy niin sanottu MOTD eli Message of the Day, joka sisältää enemmän tai vähemmän (useimmiten vähemmän) ajankohtaista tietoa Kellarista.

HUOM! Yhteyden muodostumisen jälkeen näkyvä ruutu voi näyttää eriltä ja siinä lukee kellari% (tai jotain sinnepäin) ydin%:n sijaan.

Perusohjelmat

Alempana on komentoja jotka voit kirjottaa komentoriville.

 

mutt

Mutt on toinen sähköpostinlukuohjelma joka perustuu vain pikanäppäimiin eikä menuihin. Painamalla kysymysmerkkinäppäintä saat selvillepikanäppäimet ja painamalla q voit poistua ohjelmasta. Totuttelun jälkeen ehkä nopeampi kuin pine. Lisää tietoa muttin käytöstä löytyy täältä.

 

irkki

Tällä avaat Irssi-nimisen keskusteluohjelman ns. dtach-sessioon jolloin se jää pyörimään taustalla vaikka kirjautuisitkin pois. Ennen tämän käyttöä kannattaa tutustua IRC-oppaaseemme.

 

links

Links on helppokäyttöinen, tekstipohjainen Web-selain. Voit kelata sivuja ylös- ja alaspäin painamalla insert ja delete -näppäimiä. Nuolinäppäimillä voit liikkua linkkien välillä ja enter:iä painamalla etenet linkin osoittamalle sivulle. Painamalla g saat ikkunan johon voit kirjottaa uuden osoitteen minne edetä. Painamalla ESC yläriviin ilmestyy valikko jossa voit liikkua nuolinäppimillä. Menu sulkeutuu kun painat uudestaan ESC:iä. Painamalla q ja sen jälkeen enter poistut ohjelmasta.

 

tila

Tämä ohjelma näyttää kotihakemiston tilankäytön ja kannaattaakin pitää kotihakemiston koko kurissa, koska tilarajan saavuttaminen voi johtaa tunnuksen lukittumiseen. Jos komento ei ole toiminnassa, komento du -mh ~/ kertoo kotikansion koon.

 

Tiedostot ja hakemistot

Tosielämässä meillä on enemmän tai vähemmän tavaroita ja papereita -tietoa, mutta kaikkea olisi epäkäytännöllistä säilyttää yhdessä(isossa) rasiassa vaan on järkevämpää jakaa tiedot erilaisiinlaatikoihin, mappeihin, rasioihin ym. Näitä voi sitten säilyttää toisten laatikkojen ja lipastojen sisällä. Tiedosto kuvaa tietokoneissakappaletta tietoa (eli esim. dokumentti tai kuva) ja hakemistotkuvaavat näitä laatikkoja ja rasioita missä tiedostoja säilytetään. Siinä missä tosielämässä johonki tietoon voitaisiin osoittaa "Ylälipasto\Punainen Rasia\koiran.kuva", Windowsissa siihen saatettaisiin osoittaa esim. "c:\Kuvat\Lemmikit\koiran.kuva", Linuxissa taasen "/kuvat/Lemmikit/koiran.kuva". Linuxissa hakemistoja erotetaan kauttamerkillä "/" eikä kenomerkillä "\" kuten Windowsissa. Myöskin, Linuxissa aloitetaan hakemistopolku kauttamerkillä "/" eikä niin kuin Windowissa aloitetaan "c:\". Linuxissa tämän /-hakemistonhakemiston alapuolella on sitten hakemistoja eri tarkoituksia varten. Normaalikäyttäjän ei tarvitse tietää näistä sen tarkemmin mutta jokaisen kotihakemisto sijaitsee "/home" -hakemiston alihakemistoissa tietyn ja otteluperusteen mukaan (yleensä tunnuksen etukirjain) eli esim. "/home/m/matti" tai "/home/p/pekka".

Omaa kotihakemistoasi merkitään ~ eli matomerkillä. Eli esim. tunnuksesi olisi "tunnus", kotihakemistosi sijaitsisi hakemistopolussa "/home/t/tunnus" ja sen alla olisivat seuraavat hakemistot:

Voisit viitata hakemistoon "koulu" kahdella eri tavalla.

 

/home/t/tunnus/koulu

~/koulu

 

 

Komennot ja optiot

Aiemmin annetut ohjelmat toimivat itsenäisesti ja niitä ohjataansen jälkeen kun ne on käynnistetty (esim. nuolinäppäimillä).Varsinaisille Linux-komennoille taasen kerrotaan heti komentoa /ohjelmaa kutsuttaessa mitä halutaan tehdä tarkalleen ottaen. Tämäonnistuu ns. optioilla, jotka tulevat komennon/ohjelman nimen jälkeenvälillä erotettuna ja ovat yleensä muotoa viiva ja sen jälkeen kirjain.Eli esim. pelkkä komento ls näyttää kotihakemistossasi majailevat tiedostot, mutta antamalla sille option -l tulee komennon muodoksi ls -ljoka listaa tiedostot sarakkeissa näyttäen enemmän tietoa jokaisestatiedostosta. Ensimmäisissä sarakkeissa on tietoa, jota sinun eitarvitse ymmärtää, mutta kolme viimeistä saraketta kertovat tiedostonkoon, päivämäärään milloin tiedostoa on muokattu viimeksi ja tiedostonnimen.

Jotkut optiot vaativat lisää tietoa. Otetaanpa esimerkiksi komento last, joka tulostaa kaikki Kellarille kirjautuneet. Lista on kuitenkin vähän liian pitkä, joten voisimme haluta katsoa vain viimeset 20 kirjautunutta käyttäjää ja optio -n määrä soveltuu tähän hyvin. Eli esim. komento last -n 20 tulostaa 20 viimeiseksi kirjautunutta käyttäjää. Jos lisämääre on tekstiä eli ns. merkkijono ja sisältää erikoismerkkejä kuten tähtiä tai välilyöntejä, se on laitettava heittomerkkeihin.

Optioita jotka eivät tarvitse "lisätietoa" kuten last -komenon -n -optio, voidaan yhdistää kuten esim. "ls -al".

Yleisiä komentoja

Alempana on esitelty yleismpiä komentoja ja niiden tarvituimpia optioita. Huomaa että niin komennot kuin optiotkin ovat ns. case sensitive eli "-X" on eri asia kuin "-x". Jokaisesta komennosta on ensin kerrottu muoto, lyhyt kuvaus, optiot taulukossa ja sen jälkeen esimerkkejä.

pwd - Nykyisen hakemistopolun näyttö

Muoto: pwd

Näyttää missä hakemistossa nyt olet.

 

mkdir - Hakemiston luonti

Muoto: mkdir optiot hakemisto

Luo hakemiston hakemisto joko nykyiseen hakemistoon tai hakemiston osoittamaan polkuun.
 

Optiot

-p Luo hakemistopolulle kaikki "välihakemistot" tarvittaessa, kts. esimerkki alempana

Esim. luodaan nykyiseen hakemistoon uusi hakemisto "koulu":

mkdir koulu

 

 Esim. luodaan kotihakemistoon uusi hakemisto "koulu":

mkdir ~/koulu

Esim. luodaan kotihakemistoon hakemisto "koulu" ellei se oleolemassa, sen alle hakemisto "kielet" ellei se ole jo olemassa ja senalle hakemisto "englanti":

mkdir -p ~/koulu/kielet/englanti

 

 

cd - Hakemistoissa liikkuminen

Muoto: cd hakemisto

Siirtyy hakemistoon hakemisto. Lue lisää hakemistoista ylempää. Jos hakemisto ei ala /-merkillä, cd olettaa, että kyseessä on nykyisessä hakemistossa oleva alihakemisto.

 

Esim. kaksi tapaa siirtyä kotihakemistossa olevaan "koulu" -hakemistoon:

cd ~/koulu
cd /home/t/tunnus/koulu

Jos olet jo kotihakemistossasi (kuten olet aina kirjautuessasi), voit kirjoittaa vain:

cd koulu

 

ls - Hakemiston sisällön listaus

Muoto: ls optiot

Listaa nykyisen hakemiston tiedostot ja hakemistot. Järjestää tiedot aakkosjärjestyksessä.

Optiot

-a Näyttää myös pisteellä alkavat (piilotetut) tiedostot
-l Näyttää (sarakkeissa) enemmän tietoa tiedostoista
-t Listaa tiedostot mokkauspvm:n mukaan
-X Listaa tiedostot tyyppien mukaan
-h Näyttää tiedostokoot järkevämmissä yksiköissä
--color Näyttää erityyppiset tiedostot eri väreillä

 

Esim. näytetään nykyisen hakemiston sisältö piilotiedostoineen,väreillä hyöstettynä, tyypin mukaan järjestettynä ja tiedostokoot näytettynä sopivammilla yksiköillä.

ls -alXh --color

Tuloste voisi näyttää esim. tältä

Hakemistot piste (.) merkitsee nykyistä hakemistoa ja pistepiste(..) ylempää hakemistoa. Nämä siis ovat vain virtuaalisia eivätkä oleoikeasti olemassa fyysisellä kiintolevyllä.

Oikeudet:

Tiedoston oikeudet merkitään merkkijonolla, jossa
 

1. merkki Tiedoston typpi: d = hakemisto, l = linkki, - = tiedosto
2-4. merkit Omistajan oikeudet tiedostoon
5-7. merkit Ryhmän oikeudet tiedostoon
8-10. merkit Muiden käyttäjien oikeudet tiedostoon

Oikeuksia merkitään siis kolmella kirjaimella, joille kullekin on varattu oma sarake. Jos oikeutta ei ole, sen tilalla on viiva.
 

r Lukuoikeus tiedostoon tai hakemiston sisältöjen listausoikeus
w Kirjoitusoikeus tiedostoon tai tiedostojen/hakemistojen lisäysoikeus hakemistoon
x Ajo-oikeus tiedostoon (jos tiedosto on ohjelma) tai pääsyoikeus hakemistoon

Esim. rivin pätkä tiedostolistauksesta
drwxr-xr-x
Kyseessä on hakemisto, johon on omistajalla täydet oikeudet ja tiedoston ryhmällä sekä muilla käyttäjillä luku- ja pääsyoikeus.

Monilla käyttäjillä voi olla kotihakemisto, johon muillakäyttäjillä on pääsyoikeus (x) mutta ei luku- eli listausoikeutta (r).Tämä tarkoittaa sitä, että muut käyttäjät voivat edetä alihakemistoihin (jos tietävät niiden nimen) mutta eivät listata kotihakemistonsisältöjä. Tästä on hyötyä jos kotihakemistossa on public_html-hakemisto, jossa olevat tiedostot näkyvät netissä(http://lyseo.edu.ouka.fi/~tunnus).

cp - Tiedostojen ja hakemistojen kopiointi

Muoto: cp optiot mistä mihin

Kopioi tiedostoja paikasta mistä paikkaan mihin. Jos haluat kopioida (myös) hakemistoja, käytä -r optiota. Kopioitavia voi olla useita (erota välillä).

 

Optiot

 

-r Kopioi myös hakemistot sekä alihakemistot ja alitiedostot
-v Näyttää enemmän tietoa kopiointiprosessista

Esim. tehdään nykyisessä hakemistossa olevasta tiedostosta "teksti1.txt" kopio samaan hakemistoon nimellä "teksti2.txt":
cp teksti1.txt teksti2.txt

Esim. tehdään kotihakemistossa olevasta hakemistosta "koulu" kopio kotihakemiston hakemistoon "varmuuskopiot":

 
 

cp -r ~/koulu ~/varmuuskopiot

 

Esim. kopioidaan kaksi dokumenttia kotihakemistossa olevasta hakemistosta "koulu" hakemistoon "varmuuskopiot":
cp ~/koulu/dokumentti1.txt ~/koulu/dokumentti2.txt ~/varmuuskopiot

mv - Tiedostojen ja hakemistojen siirto

Muoto: mv optiot mistä mihin

Siirtää tiedoston / hakemiston mistä paikkaan mihin. Huomaa, että siirrettäviä voi olla useita (erota välillä).

Esim. muutetaan tiedoston "teksti1.txt" nimeksi "teksti2.txt":
mv teksti1.txt teksti2.txt

Esim. siirretään kotihakemistossa oleva hakemisto "koulu" kotihakemistoon hakemistoon "varmuuskopiot":
mv ~/koulu ~/varmuuskopiot

Esim. siirretään kaksi dokumenttia kotihakemistossa olevasta hakemistosta "koulu" kotihakemiston hakemistoon "varmuuskopiot":

mv ~/koulu/dokumentti1.doc ~/koulu/dokumentti2.doc ~/varmuuskopiot

 

rm - Tiedostojen ja hakemistojen poisto

Muoto: rm poistettava

Poistaa tiedoston poistettava. Poistettavia voi olla useita (erota välillä). Hakemistoja poistettaessa tulee käyttää optiota -r.

Optiot

-r Poistaa hakemistoja kaikkine sisältöineen
-f Ei kysy varmistusta vaan poistaa armotta - käytä varoen

Esim. poistetaan nykyisessä hakemistossa oleva tiedosto "teksti.txt":
rm teksti.txt

Esim. poistetaan nykyisessä hakemistossa oleva hakemisto "varmuuskopiot":
rm -rf varmuuskopiot

Esim. poistetaan kotihakemiston alla oleva hakemisto "varmuuskopiot":
rm -rf ~/varmuuskopiot

Varo f-option käytön kanssa, kirjoitusvirhe tiedostopolussa voi johtaa vaikkapa oman kotihakemiston sisältöjesi tuhoutumiseen.

ln - Tiedostojen ja hakemistojen linkkaus

Muoto: ln optiot lähde linkki

Tekee tiedostosta lähde linkin paikkaan linkki. Linkkaus tarkoittaa vähän samaa asiaa kuin kopiointi paitsi, että linkki ei vie kuin ihan marginaalisesti levytilaa, koska linkki vain osoittaa alkuperäiseen tiedostoon (tai hakemistoon). Jos linkinsisältöä muutetaan, alkuperäinenkin tiedosto (tai hakemisto) muuttuu. Jos alkuperäistä tiedostoa (tai hakemistoa) muutetaan, linkkikin muuttuu. Linkin poistaminen ei kuitenkaan poista alkuperäistä tiedostoa, eikä linkin siirtäminen tai uudelleennimeäminen muuta alkuperäistä tiedostoa mitenkään. Linkkiä voi kuitenkin käyttää samoinkuin alkuperäistä tiedostoa. Normaalikäyttäjä tarvitsee harvoinlinkkejä, mutta tarvittaessa tulee tehdä ns. symbolisia linkkejä jakäyttää optiota -s.

Optiot

-s Tehdään symbolinen linkki

Esim. tehdään kotihakemistossa olevasta hakemistosta "koulu" linkki nykyiseen hakemistoon nimellä "opinnot".
ln -s ~/koulu opinnot

Hard- ja soft-linkit

On olemassa kahdenlaisia linkkejä: hard-linkkejä ja symbolisia linkkejä (eli soft-linkkejä). Ne toimivatulkoisesti samalla tavalla, mutta niillä on erilainen toimintaperiaate.Normaalikäyttäjän tarvitsee käyttää vain soft-linkkejä, joten tämäkappale onkin vain syventävää tietoa asiasta kiinnostuneille.Soft-linkkauksessa tehdään tiedostojärjestelmään tiedosto, jokaosoittaa johonkin toiseen tiedostoon, mutta hard-linkit ovat vähän monimutkaisempia.

Tiedostoa luotaessa levyosion vapaalle alueelle lisätään tiedoston data yhdessä tai useammassa osasssa, mutta lisäksi levyosion alkuunlisätään ns. inode muiden inodejen muodostamaan eräänlaiseen sisällysluetteloon. Tämä inode vastaa yhtä tiedostoa. Inode sisältää tiedoston nimen, oikeudet, omistajan, ryhmän jne. Mutta ennen kaikkea se sisältää tiedon siitä, missä paikassa / paikoissa kovalevyä tiedoston sisältö majailee. Jos inode tuhotaan, tiedoston sisältöä on lähes mahdoton kaivaa enää levyosiolta.

Hard-linkkaus tarkoittaa sitä, että tehdään uusi inode, joka osoittaa levyosiolla olevaan dataan, johon myös toinen inode osoittaa. Dataa on siis vain yhden kerran levyosiolla, mutta inodeja on kaksi(tai kenties useampia). Jos toinen inode tuhotaan, toinen osoittaavielä dataan eikä mitään ole menetetty. Hard-linkkaus on siis teoreettisesti yhteensopivampi ratkaisu, koska päällepäin linkki on oma tiedostonsa. Hard-linkit voivat kuitenkin vain osoittaa samalla levyosiolla olevaan dataan, joten se on rajoittuneempi ratkaisu. Kuten siis sanottua, normaalikäyttäjälle soft-linkit toimivat ihan hyvin ilman että käyttäjän tarvitsee huolehtia sen enempää.

Komennon "ls" tulosteessa numero ennen tiedoston omistajaa ilmaisee tiedoston osoittavien linkkien määrän.

find - Tiedostojen etsiminen

Muoto: find paikka optiot

Komento etsii tiedostoja tai hakemistoja hakumääreillä, jotka määritetään optioilla hakemistosta paikka.

 

Optiot

-iname teksti Etsii tiedostoa, jonka nimessä on teksti teksti.
-user tunnus Etsii tiedostoa, jonka omistaa käyttäjä tunnus
-empty Etsii tiedostoa, joka on tyhjä

Kun käytät -iname:a, laita etsittävä teksti heittomerkkeihin ja käytä tähtiä sen sisällä. Heittomerkeillä pitää ympäröidä kaikki tekstipätkät, jotka sisältävät erikoismerkkejä (kuten tähtiä tai välilyöntejä) ja tähdet symbolisoivat "mitä tahansa". Eli *.txt etsisi tiedostoja, jotka päättyvät .txt.

Esim. etsitään nykyisestä hakemistosta tai sen alihakemistosta tiedostoa jonka nimessä on "txt":
find -iname '*txt*'

 

wc - Tiedoston tilastoja

Muoto wc optiot tiedosto

Selvittää tekstitiedostosta erinäisiä määriä kuten kirjainten tai rivien määriä.

 

Optiot

-w Näyttää tiedostossa olevien sanojen määrän
-c Näyttää tiedostossa olevien kirjainten määrän
-l Näyttää tiedostossa olevien rivien määrän

Esim. kertoo montako riviä on tiedostossa "teksti.txt":
wc -l teksti.txt

du - Hakemistojen kokolistaus

Muoto: du optiot hakemisto

Komennolla voi selvittää mitkä hakemistot (tai tiedostot) vievät esim. kotihakemistossa eniten tilaa.

 

Optiot

-m Tulostetaan tiedostokoot megatavuina
-h Tulostetaan tiedostokoot parhaassa mahdollisessa yksikössä
-max-depth=nro Etenee maksimissaa nro:n verran alihakemistoihin. Kts. esimerkki
-s Tulostaa pelkästään hakemiston kokonaistilankäytön. Ei toimi ylemmän option kanssa.

Esim. tulostetaan nykyisessä hakemistossa olevien hakemistojen viemä tila megatavuissa:
du -m --max-depth=1 .

ps - Prosessien listaus

Muoto: ps optiot

Jokainen ajettu komento on ohjelma eli prosessi. Kellarilla on monellaeri käyttäjällä ohjelmia eri tarkoituksiin. ps:ää voi käyttää vanhemmalla BSD-optioilla tai uudemmilla Linux-optioilla. Alempana annetut optiot ovat BSD-optioita, mutta manuaalista löytyy myösLinux-vastineet. BSD-optiot on otetty tähän, koska niitä on yleensä kätevämpi käyttää.

 

Optiot

u Tulostaa lisää tietoa prosesseista (mm. prosessorin ja muistin käyttöprosentit)
x Tulostaa taustalla ajettavat prosessit
f Jaottelee prosessit puumuotoon, josta ilmenee kunkin prosessin käynnistänyt yläprosessi

Esim. ps uxf tulostaa kaikki taustalla olevat prosessitlisätietoineen puumuodossa. Lyseolla ei näytetä muiden käyttäjienprosessja mutta esimerkissä näytetään "sshd" -prosessi joka huolehtiishell-yhteyden salauksesta ja "zsh" -prosessi eli itse shell, jokahuolehtii komentojen (tekstipätkien) muuttamisesta oikeiksiprosesseiksi. Shell on siis se "ohjelma", johon kirjoittelet komentoja(kuten ls, cd, rm, mv). Viimeiseksi tulee vielä "ps", joka on juuriajamamme komento.

Sarakkeiden tarkemmat merkitykset:
 

USER Tunnus, kenelle prosessi kuuluu eli kuka sen on käynnistänyt
PID PID-numero ilmaisee prosessinumeron, jonka avulla sitä voi hallita
%CPU Prosenttimäärä, jonka prosessi vie prosessorilta tehoa
%MEM Muistimäärä, jonka prosessi kuluttaa
VSZ Prosessin käyttämä muistimäärä (kilotavuissa), joka on jaettavissa muiden ohjelmien kesken
RSS Prosessin käyttämä muistimäärä (kilotavuissa), joka on varattu ainoastaan prosessin omaan käyttöön
TTY Terminaali, johon prosessi on kytketty. Ei kovin oleellinen.
STAT Prosessin tila (yleisimmät, R=ajossa, S=nukkumassa)
START Prosessin käynnistysaika/-päivämäärä
TIME Prosessin kuluttama prosessoriaika
COMMAND Prosessin nimi

Viivat prosessinimessä yrittävät hahmottaa kuvan sen mukaan mikä prosessi käynnistä minkäkin prosessin.

kill - Prosessien sulkeminen

Muoto: kill -signaali PID

Lopettaa prosessin jonka prosessi-ID eli PID on PID, lähettäen sille signaalin signaali. Esim. signaali 15 pyytää ohjelmaa sammumaan, mutta signaali 9lopettaa ohjelman väkisten. Muita signaaleita ei normaalisti tarvitse.Huomaa, että ilman signaalimäärittelyä, kill käyttää signaalia 15.

Esim. pyydetään ohjelmaa, jonka PID on 1337, sammumaan:
kill 1337
Esim. sammutetaan väksiten ohjelma, jonka PID on 2002:
kill -9 2002

nano - Tekstieditori

Muoto: nano optiot tiedosto

Nano ei ole varsinainen komento vaan ohjelma mutta sen käyttöon hyvä käydä tässä läpi, koska se voi vaikuttaa aluksimonimutkaiselta. Itse ohjelma avaa tiedoston tiedosto tekstieditoriin.

 

Optiot

-w Nano ei tee rivinvaihtoja kun teksti osuu ikkunan reunaan

Nanon ikkuna näyttää jotakuinkin tältä:

Alarivissä on mystisen näköisiä ohjeita, jotka ovat itseasiassanäppäinyhdistelmiä. Alarivillä on 12 komentoa. Ensin on mainittunäppäinyhdistelmä, jossa heittomerkki ^ tarkoittaa Ctrl-näppäintä, jasen jälkeen näppäinyhdistelmän toiminto. Alempana on selvenetty vähäsenkomentoja:
 

Ctrl + G Näyttää ohjeen, jossa on selitetty nanon käyttöä englanniksi.
Ctrl + X Sulkee ohjelma mutta kysyy tallennetaanko muutokset tarvittaessa
Ctrl + O Tallentaa tiedoston, kysyy ensin tiedostonimen
Ctrl + J Yhdistää rivit yhdekeksi pitkäksi riviksi
Ctrl + R Lukee toisen tiedoston sisällöt nykyiseen tiedostoon
Ctrl + W Etsii tekstipätkää tiedostosta
Ctrl + Y Siirtyy sivun ylemmäs
Ctrl + V Siirtyy sivun alemmas
Ctrl + K Poistaa ja kopioi puskuriin kursorin osoittaman rivin (vert. Windowsin leikkaa -toiminto)
Ctrl + U Kopioi puskurin sisällön kursorin osoittamalle riville (vert. Windows kopioi -toiminto)
Ctrl + C Näyttää missä rivillä kohtaa tiedostoa kursori on (rivi, sarake, kirjain)
Ctrl + T Korjaa kirjoitusvirheitä. Ei ole käytössä Lyseolla.

Huomaa, että useimmat komennot (kuten Ctrl + W) antavatlisäoptioita, ja alariville ilmestyy uusia pikanäppäimiä. Toimi siisohjeiden mukaisesti. Kohtuu englannintaidolla voi kyllä päätellä, mitäkukin toiminto tekee.

Lisää komentoja

Komentojen oppimiseksi kannattaa heti kokeilla käyttää jokaistakomentoa vähäsen, mutta lisäksi niistä löytyy lisää tietoakirjoittamalla
man komennonnimi

Manuaalisivua voit kelata alaspäin painamalla spacea ja poistuapainamalla q. Aluksi manuaalisivut voivat tuntua monimutkaisilta taivaikeaselkoisilta mutta pienen totuttelun jälkeen ne on näppärä janopea tarkistaa.

Alla on annettu taulukkomuodossa yksinkertaisia komentoja, jotka eivätvaadi sen enempää selittelyä. Jokaisesta kuitenkin löytyy manuaalisivu,jossa on kerrottu komennon optiot ja tarkempi käyttö.

cat tiedosto Tulostaa tiedoston "tiedosto" sisällön
less tiedosto Tulostaa tiedoston "tiedosto" sisällön, sivu kerrallaan
touch tiedosto Muuttaa tiedoston muokkauspvm:n nykyiseksi hetkeksi
tail -n määrä tiedosto Lukee tiedoston lopusta määrä:n rivejä
head -n määrä tiedosto Lukee tiedoston alusta määrä:n rivejä
echo teksti Tulostaa tekstin teksti
clear Tyhjentää ruudun ja palauttaa komentorivin ruudun alkuun (kokeile)
logout Kirjautuu ulos. exit tekee myös saman asian
date Tulostaa kellon ja päivämäärän
who Tulostaa kaikki ketkä ovat loggautuneet sisälle
passwd Vaihtaa salasanasi. Seuraa ohjeita
finger tunnus Näyttää tietoa tunnuksesta tunnus
last -n määrä Tulostaa määrä viimeksi kirjautuneita.
nano tiedosto Avaa tekstitiedoston tiedosto nano-tekstieditoriin
links osoite Avaa web-osoitteen osoite links-webselaimeen

 

Putket

Linuxissa ideana ei ole tehdä yliympättyjä komentoja,jotka voivat tehdä kaikkea mitä käyttäjä voisi tarvita. Linux perustuutyökaluajatteluun eli käyttäjän yhdistelee komentoja saadakseen sopivanlopputuloksen.

Shellissä komentoja voi putkittaa eli yhden komennon tuloste meneetoiselle komennolla. Putkitus tapahtuu kirjoittamalla komento, senjälkeen pystyviiva | ja lopuksi aiemman komennon tulosteen vastaanottava komento. Eli siis:
Muoto: komento1 | komento2 | komento3 jne.

Esim. näytetään komennon "ls -al" kaksi ensimmäistä riviä:
ls -al | head -n 2

 

grep - Rivien parsetus

Muoto: grep optiot teksti tiedosto

Grep on erittäin tehokas työkalu, jota voi käyttää monella tavalla. Normaalisti grep etsii riviä, jossa on teksti tiedostosta tiedosto. Tiedostoja voi olla useita. Greppiä voi käyttää kuitenkin toisella tavalla, nimittäin jättämällä tiedosto:n pois. Tällöin grep etsii rivejä sille putkitetusta komennosta.

 

Optiot

-R Tiedostoissa voi määritellä hakemistoja ja grep etsii teksti:ä niistä
-i Ei erottele pieniä ja isoja kirjaimia etsinnässä
-x Koko rivin pitää vastata teksti:ä eikä vain rivin osa
-E Etsii käyttäen oikeaa regexpiä. Kts. alempaa
-n Näyttää rivinumerot, jokaisen tuloksen edessä

Esim. etsitään sanaa "Matti Maanmies" tiedostoista "yhteystiedot1.txt" ja "yhteystiedot2.txt":
grep 'Matti Maanmies' yhteystiedot1.txt yhteystiedot2.txt

Esim. etsitään sanaa "biology" hakemiston "esseet" kaikista tiedostoista
grep -R biology esseet

Esim. tulostetaan nykyisen hakemiston tiedostolistaus ja palautetaan rivit, joilta löytyy merkkijono "rc":
ls -al |grep rc

Grep pääsee kuitenkin oikeuksiinsa vasta ns. regexpillä jokatarkoittaa monimutkaisempia mutta paljon tehokkaampia hakuja.Regexpillä voi etsiä esim. rivejä jotka alkavat tai päättyvät johonkintiettyyn merkkijonoon. Siitä alempana

Regular Expressions

Regular Expression:it eli lyhyemmin regexpit mahdollistavatmonimutkaiset merkkijonohaut mm. grepissä mutta myös ohjelmissa niinLinux kuin Windows -puolella. Esim. joissain kuvankatseluohjelmissa taimusiikkisoittimissa on mahdollisuus etsiä tiedostoja regexpillä jakorvata tiedostonimet uusilla tiedostonimillä - älykkäästi vanhojenpohjalta. Myös erittäin monet ohjelmointikielet mahdollistavatregexpien käytön, joten regexpien osaaminen on tietokoneiden kannaltayleissivistävää.

Ideana on käyttää regexpinä normaalia merkkijonoa (kuten vaikkapa"kissa"), mutta täydentää sitä regexp-merkeillä. Alla joitaintavallisimpia regexp-merkkejä ja niiden tarkoituksia:

. Vastaa mitä tahansa merkkiä paitsi välilyöntiä
* Vastaa edellistä merkkiä nolla tai useampi kertaa
? Vastaa edellistä merkkiä nolla tai yksi kertaa
+ Vastaa edellistä merkkiä yksi tai useampi kertaa
{x,y} Vastaa edellistä merkkiä minimissään x mutta maksimissaan y kertaa.
$ Vastaa rivin loppua
^ Vastaa rivin alkua
[abc] Vastaa merkkiä a b tai c.
[^abc] Vastaa mitä tahansa muuta merkkiä kuin a, b tai c.
[a-z] Vastaa merkkejä väliltä a-z.
x|y Vastaa x:tä tai y:tä
(x) Ryhmittelee regexpiä, voidaan käyttää ylemmän operaattorin kanssa
\n Vastaa rivinvaihtoa
\w Mikä tahansa kirjain (A-Z, a-z, 0-9 tai _)
\d Mikä tahansa numero (0-9)
\s Mikä tahansa "white-space" -merkki kuten välilyönti, tabi jne.

Näitä voi sitten yhdistellä halutun tuloksen saamiseksi. Alla esimerkkejä

Regexp Vastaavuus
^auto "auto" rivin alussa
^$ Tyhjä rivi
kissa+ "Kissa", "kissaa", "kissaaa" jne.
Kone [0-9] "Kone 0", "kone 1" ... "kone 8", "kone 9"
Kone .* on rikki "Kone <mitä tahansa paitsi välilyönti> rikki"
(kissa)|(koira) "kissa" tai "koira"

Huomaa, jos haluat käyttää erikoismerkkejä (kuten ^ tai $) niidenkirjaimellisessa tarkoituksessa, sinun pitää laittaa kenoviiva \ niideneteen.

Regexpit ja grep

Muoto: egrep optiot regexp tiedostot

Komento etsii siis regexpin regexp vastaavuuksia tiedostoista tiedostot.

Kun grepillä halutaan käyttää regexp:ejä, kannattaa määritellä -E-optio, joka mahdollistaa täydellisen regexp:in käytön. Ilman sitä voitkäyttää muunneltua ja rajoitettua regexp:iä, mitä ei suositella.Käytettävyyden takia, grepistä on tehty egrep -niminen kopio joka ajaagrepin -E optiolla. Käytämme siis sitä.

Esim. etsitään rivejä, jotka alkavat kirjaimella "a" kaikista .txt -tiedostoista
egrep '^a' *.txt

Esim. etsitään tyhjiä rivejä hakemiston "txt" kaikista tiedostoista
egrep -R '^$' txt

Esim. etsitään suomen lain mukaisia autorekistereitä tiedostosta "rekisterit.txt"
egrep '[A-Z]{3}-[0-9]{3}' rekisterit.txt

Esim. etsitään dollarihintoja väliltä 0-99 tiedostosta "hinnasto.txt"
egrep '[0-9]{1,2}\$' hinnasto.txt

Regexpit ja sed

Muoto: sed optiot

Sed tarkoittaa "stream editoria". Streamilla tarkoitetaan tässätapauksessa sille putkitettua dataa. Sed käyttää omaa kieltään mutta sesisältää regexp-funktioita, joita tässä käytämme.

 

Optiot

-e skripti Ajaa sed-skriptin skripti

Skriptinä käytämme korvaus-funktiota: 's/x/y/o'
 

x Etsittävä teksti tai regexp ...
y ... joka korvataan tällä
o Optiot, i = isoja ja pieniä merkkejä ei erotella, g = korvataan >1 kertaa samalla rivillä

Esim. korvataan sana "aurinko" sanalla "kuu":
echo Taivaalla on Aurinko. | sed -e 's/aurinko/kuu/i'

Esim. muutetaan lauseen sanojen järjestystä tiedostossa "autorekisteri.txt":
cat rekisterit.txt | sed -e 's/Omistajan (.*) auton rekisteri on ([A-Z]{3}-[0-9]{3})/R: $2 O: $1/ig'

Filtterit

Komentojen tulostetta voi ohjata myös toisella tavalla. Tulosteen voinimittäin ohjata tiedostoon tai komento voi ottaa tietoa tiedostosta.

komento x> y Komennon x-kanavan tuloste ohjataan tiedostoon y joka tyhjennetään ensin
komento x>> y Komennon x-kanavan tuloste ohjataan tiedoston y loppuun
komento < y Tiedoston y sisältö ohjataan komennolle

Komento voi tulostaa kahdella kanavalla

1 Oletuskanava, normaali tuloste (esim. ls:n tiedostolistaus)
2 Virhekanava, tänne tulevat virheilmoitukset

Tason sijasta voi käyttää merkkiä & tarkoittamaan kumpaakin kanavaa, ilma määritystä käytetään 1:stä.

Esim. ohjataan komennon "ls -al" tuloste tiedostoon "tuloste.txt":

ls -al > tuloste.txt

 

Esim. ohjataan komennon "du -sh . koulu varmuuskopiot" tuloste tiedostoon "tuloste.txt" ja virheet "virhe.txt"
du -sh . koulu varmuuskopiot > tuloste.txt 2> virhe.txt

Esim. ohjataan komennon "du -mx --max-depth=1 ." kaikki tulosteet tiedostoon "output.txt"
du -mx --max-depth=1 . &> output.txt

Käyttömukavuutta

 

Aliakset

Usein tulee tarvetta käyttää komentoja kuten "ls -alXh --color"mutta pitkän komennon kirjoittaminen säännöllisesti olisiepäkäytännöllistä, siksipä on kehitetty aliakset, jotka tarkoittavatpitempien komentojen lyhentämistä.

Esim. tehdään ls-alias:
alias lista='ls -alXh --color'

Tämän jälkeen alempana olevat komennot tekevät saman asian:
lista
ls -alXh --color


Tulos on sama kuin olisi kirjoittanut käsin "ls -alXh --color".Huomaa, että mikään ei estä käyttämästä aliaksen nimenä joolemassaolevaa komennon nimeä. Esim. syötä seuraava komento
alias ls='ls --color'

Tämän jälkeen kaikissa seuraavissa ls-tulosteissa olisivat värit.

Asetukset

Aliakset katoavat aina kun kirjaudut ulos, joten ne on syytä tallentaa jotenkin. Kotihakemiston tiedosto .zshrc on tarkoitettu tähän, koska siinä olevat komennot ajetaan aina käyttäjän kirjautuessa. Avaa tämä tiedosto esim. nanolla:
nano ~/.zshrc

Lisää sinne seuraavat vaikkapa seuraavanalaiset rivit:

Tallenna lopuksi (Ctrl + o) ja poistu (Ctrl + x). Nyt jos kirjaudut ulos ja takaisin sisään tai kirjoitat seuraavan komennon
source ~/.zshrc

... saat käyttöösi näm kolme aliasta. Esim. saadaan väritetty ls-tuloste:
ls -l

Screen

Normaalisti sinun pitää sulkea ohjelma kun haluat loggautua ulos, muttashellissä on myös mahdollista jättää ohjelmia pyörimään taustalle.Lyseon tapauksessa ohjelmat ajetaan Kellarilla, joka on ollut 335 päivää yhtä mittaa päällä, joten ne ovat todennäköisesti siellä vielä huomennakin. Tämän mahdollistaa kuitenkin ohjelma nimeltä screen, jokamahdollista myös monien ohjelmien ajamisen yhtä-aikaa ilman, että sinuntäytyy loggautua monesti Kellarille. Aluksi screen voi tuntua aika monimutkaiselta, mutta siihen tottuu varmasti ajan myötä.

Screenin peruskäyttö

Käynnistä screen kirjoittamalla:
screen

Ensin tulee tervetuliais-ikkuna, josta pääset eroon painamallaentteriä.

Sen jälkeen olet taas shellissäsi. Se käyttäytyy kutenennenkin. Tee mitä huvittaa, käynnistä vaikka pine. Sen jälkeen paina Ctrl pohjaan, sitten paina a sen jälkeen c (minkä voi lyhentää myös Ctrl + a + c).Näin avautuu uusi shelli - uuteen ikkunaan. Toisessa ikunassa nimittäinon se pinesi tai minkä jätitkään sinne. Voit vaihdella kahden ikkunanvälillä painamalla Ctrl + a + a tai edetä seuraavaan ikkunaan painamalla Ctrl + a + n. Koita saada tuntumaa, avaa vaikka pari muuta ikkunaa. Painamalla Ctrl + a + w saat listan avoimista ikkunoista. Komennolla "ps xf" voit nähdä minkälaisen "prosessipuun" screenin ohjelmat muodostavat:

Selitykset kuvan numeroille:

1. - Sama vanha sshd huolehtii shelliyhteytesi salaamisesta.
- Tämä zsh on heti kirjautumisen jälkeen avautunut shellisi, johon kirjotit "screen" -komennon
- Lopussa on vielä screen eli komento jonka kirjoitit shelliin (2.)
2. Varsinainen screen-prosessi joka huolehtii ohjelmien ikkunoinnista
3. Screenin ensimmäisen ikkunan shelli, josta on käynnistetty pine
4. Pine-sähköpostinlukuohjelma, joka käynnistettiin shellistä (3.)
5. Screenin toisen ikkunan shelli, josta on käynnistetty links
6. Webselain links, joka käynnistettiin shellistä (5.)
7. Screenin kolmannen ikkunan shelli, josta on käynnistetty "ps"
8. ps-komento, joka käynnistettiin shellistä (7.). Komento tulosti tämän prosessilistauksen

Screenin idea on kuitenkin pitää ohjelmat päällä silloinkin kun et ole kirjautuneena. Kun siis haluat poistua, paina Ctrl + a + d, ja poistut screenistäsi mutta screenin ohjelmat jäävät pyörimään taustalle. Tässä vaiheessa ruutuun tulee teksti [detached] ja olet alkuperäisessä shellissäsi. Sen jälkeen jos kirjoitat vielä "ps xf", jonka tulos voi näyttää tältä:

Huomaa, että varsinainen "SCREEN" -prosessi ei ole enää kiinni"screen" -komennossa (jonka ajoit shellistäsi ja nyt sulkeutui) vaan seon nyt jäänyt "irralleen", joka on siis englanniksi "detached".Vertaile tätä ja aiempaa kuvaa niin huomaat mitä tarkoitan. Tässävaiheessa voit vaikka kirjautua ulos kirjoittamalla "exit". Kirjaudupasen jälkeen sisään uudestaan ja näpyttele komento "ps xf". Huomaat,että SCREEN on pitänyt ohjelmat taustalla ajossa sillä aikaa kun olit poissa.

Seuraavaksi kirjoita komento
screen -dr

Tämän jälkeen olet takaisin screenisi siinä ikkunassa mihin senjätit, eli vaikkapa pinessä. Voit käyttää screeniäsi entiseen tapaan,ja kun taas haluat jättää screenisi paina Ctrl + a + d. Takaisin voit palata komennolla "screen -dr".

Ylemmissä esimerkeissä "ps xf" komennolla voi havainnollistaatilannetta, mutta "ps" itse vaikuta screeniin mitenkään eikä sen käyttöedellytä ps:n käyttöä.

Screenin sulkeminen

Kun haluat sulkea screenisi lopullisesti,etkä vain jättää taustalla pöyrimään, sulje se sulkemalla kaikki eriikkunoissa olevat ohjelmat (shell mukaanlukien).
Esimerkiksikuvitellaan tilanne, jossa meillä on kolme ikkunaa: esimmäisessä onpelkkä shell, toisessa shellistä käynnistetty pine ja kolmannessashellistä käynnistetty links. Aloitetaan sulkeminen pelkästä shellistä:

  1. Kirjoita shelliin exit jolloin shell ja sen mukana ikkuna sulkeutuu.
  2. Siirry pinen ikkunaan. Sulje se painamalla q ja palaat kyseisen ikkunan shelliin. Kirjoita siihen exit jolloin shell ja sen mukana ikkuna sulkeutuu.
  3. Päädyt linksin ikkunaan. Sulje se painamalla q ja päädyt kyseisen ikkunaan shelliin. Kirjoita siihen exit jolloin shell ja sen mukana ikkuna sulkeutuu.
  4. Lopuksi koko SCREEN sulkeutuu ja ruudussa näkyy seuraavantapaista:

Screen ja Irssi

Irssiä käytetään yleensä screenin avulla koskaolisi epäkäytännöllistä sulkea sitä aina kun kirjaudut ulos. Tämänasian ajaa komento "irkki", joka huolehtii irssin pitämisestätaustalla. Irkki on oikeastaan vain alias komennolle, joka käynnistääirssin screenintapaisen ohjelmaan, mutta koska sinä et pelkää haasteitavoit ajaa irssiäsi oikeasta, täyden tulivoiman screenistä olla olevienohjeiden mukaisesti:

  1. Kirjaudu omalle tunnuksellesi
  2. Aja komento screen irssi
  3. Olet irssissä, jota voit käyttää näiden ohjeiden mukaisesti.
  4. Voit poistua irssistä painamalla Ctrl + a + d ja palata shellistä komennolla screen -dr

 

Screenin pikanäppäimet

Alempana on listattu joitain yleisimiä screenin pikanäppäimiä. Lisää löydät komennolla "man screen".
 

Ctrl + a + c Avaa uuden ikkunan
Ctrl + a + a Vaihtelee kahden ikkunan välillä
Ctrl + a + n Vaihtaa seuraavaan ikkunaan
Ctrl + a + p Vaihtaa edelliseen ikkunaan
Ctrl + a + d Poistu screenistä ja jättää sen pyörimään taustalle
Ctrl + a + w Näyttää screenin ikkunat
Ctrl + a + ESC Avaa backlogin selausikkunan. Selaa nuolinäppäimillä ja poistu entterillä.

 

Komennot käytännössä

Helpoin ja tehokkain tapa oppia komennnot,on käyttää niitä käytännössä. Kannattaakin testailla komentoja omassakotihakemistossa. Alempana on esimerkkisarja komennoista, jotka voitkirjoitella omaan shelliisi ja nähdä käytännössä miten komennottoimivat.
 

cd Siirrytään kotihakemistoon
mkdir hiekkalaatikko Luodaan hakemisto "hiekkalaatikko"
cd hiekkalaatikko Siirrytään hakemistoon "hiekkalaatikko"
echo Terve > teksti.txt Tallennetaan teksti "Terve" tiedostoon teksti.txt
ls -alXh --color Tulostetaan hakemiston "hiekkalaatikko" sisältö
cat teksti.txt Tulostetaan tiedoston "teksti.txt" sisällöt
mkdir lokero Luodaan hakemisto "lokero"
cp teksti.txt lokero Kopioidaan tiedosto "teksti.txt" hakemistoon "lokero"
rm teksti.txt Poistetaan tiedosto "teksti.txt"
cd lokero Siirrytään hakemistoon "lokero"
ls -alXh --color Tulostetaan hakemiston sisällöt
mv teksti.txt teksti2.txt Muutetaan tiedoston "teksti.txt" nimeksi "teksti2.txt"
cat teksti2.txt Luetaan tiedoston "teksti2.txt" sisältö.
cp teksti2.txt kopio.txt Tehdään tiedostosta kopio nimellä "kopio.txt".
cd .. Mennään yksi hakemisto "alaspäin"
find . -iname '*txt*' Etsitään tiedostoja, joiden päätteenä on txt

 

Loppusanat ja linkkejä

Tämän oppaan ei ole tarkoitus olla kaikenkattava referenssiLinuxin shellistä (esim. komennoista on kerrottu vain tärkein osamuodosta eli syntaksista ja tärkeimmät optiot). Oppaan tarkoitus onantaa eväät shellin käyttöön, minkä jälkeen lukija voi opiskellashellin saloja lisää omatoimisesti.

Jukka Korpelan kattava UNIX-opas: http://www.cs.tut.fi/~jkorpela/unix/index.html

Kari Lehtosen UNIX-opas: http://cs.stadia.fi/~lehtk/Unix/unix.htm

Engl.kielinen UNIX-opas: http://www.phys.ualberta.ca/~gingrich/research/shells/shells.html

Shellin skriptausta: http://tldp.org/LDP/abs/html/

Oppaan on tehnyt Ari Timonen.