Komentorivi (Command Line Interface, CLI)
- Paikalliset järjestelmät
- Mikä on komentorivi (CLI, Command Line Interface)?
- Komentorivi (CLI) vs Graafinen käyttöliittymä (GUI)
- Missä komentoriviin törmää?
- Komentorivin hyötyjä
- Mikä on UNIX?
- Yhteydenotto palvelinkoneeseen
- Merkkipohjaisessa järjestelmässä työskentely
- Tutustua ympäristöösi
- Merkinnät, pikanäppäimet, erikoisnäppäimet, erikoismerkit
- Ongelmatilanteet
- Kotihakemisto
- Oletushakemisto
- Oletuskansion (oletushakemiston) vaihtaminen
- Isähakemisto (edellinen hakemisto)
- Kansiorakenteessa navigoiminen
- Suhteellinen viittaus
- Absoluuttinen viittaus
- Tiedostojen kopioiminen
- Manuaalit
- Tekstieditori Nano
- Korvausmerkit (jokerimerkit, wildcards)
- Erikoismerkit tiedostojen nimissä
- Ohjelman tulostuksen edelleenohjaus
- Putkitus
- Tiedostojen oikeudet
- Ympäristömuuttujat
- Prosessien hallinta
- Komentotulkit
- CMD.EXE- ja UNIX-ympäristöjen vastaavuudet
- UNIX-komentoja ja -ohjelmia
- DOS-komentoja
- Lisätietoa
Tämän luennon aluksi käsitellään kurssin kannalta olennaiset paikalliset järjestelmät (verkkolevyasemat) mutta pääaiheena on komentorivityöskentely Linux-ympäristöissä. Hyvää lisämateriaalia ovat artikkelit Unix-käyttöjärjestelmän alkeita, Windowsin käyttäminen komentotulkin avulla, Tietokone työvälineenä -kurssin komentorivimateriaali, Sormet Unixiin ja Sormet syvemmälle Unixiin, joista on lainattu osia myös tähän dokumenttiin.
Hyvä englanninkielinen perusmateriaali on The Unix Shell
Voit kokeilla komentoriviä suoraan selaimessasi jslinux-emulaattorilla.
WinSCP-ohjelman käyttäminen ja komentorivin aloitus:
Luennon loppuosa, komentoriviasioita:
Paikalliset järjestelmät
Tällä kurssilla tarvitset seuraavia:
- W:-aseman eli paikan omille kotisivuille
- Mahdollisuuden käyttää verkkolevyasemiasi (U:-asema ja W:-asema) kotikoneelta.
- VPN-yhteys
- Tiedostojen siirtäminen WinSCP-ohjelmalla. Mac-koneilla voit WinSCP-ohjelman sijaan käyttää FileZillaa, joka toimii hyvin samalla tavalla
- Jos käytät Macia niin lue Miten pääsen kotikoneelta yliopiston verkkoon: VPN-yhteys Macintoshilla -ohje ja Miten yhdistän verkkolevylle Mac koneella?.
- Unix- ja WWW-palveluiden aktivoimisen sso.jyu.fi-palvelussa (Kirjaudu → Oma → Services → Valitse Unix ja WWW). Unix-palveluilla tarkoitetaan käyttöoikeuksia halava- ja jalava-koneisiin. Palveluiden aktivointi voi kestää jopa noin 30-60 minuuttia.
- Paikallisista järjestelmistä kerrotaan tarkemmin Tietokone ja tietoverkot työvälineenä-kurssilla. Kts. Paikalliset järjestelmät-luento ja Tiedostojen jakaminen ja siirtäminen verkossa
Mikä on komentorivi (CLI, Command Line Interface)?
- Komentorivi on eräs mahdollisuus käyttöjärjestelmien ja muiden tietokoneohjelmien käyttöliittymäksi. Se on tapa olla vuorovaikutuksessa tietokoneohjelman kanssa syöttämällä tekstimuotoisia komentoja peräkkäin.
- Tällä kurssilla tutustutaan käyttöjärjestelmän komentoriviin.
- Ohjelma joka käsittelee käyttäjän (asiakkaan) antamat komennot on nimeltään komentotulkki tai komentokehote.
- Komentorivi mahdollistaa erityisesti monimutkaisten tai toistuvien komentojen suorittamisen, joka graafisesta käyttöliittymästä käsin voi olla hankalaa tai mahdotonta.
- Vaikka "normaali käyttäjä" törmää komentoriviin harvemmin, on komentorivi tärkeä työkalu ohjelmoijille, järjestelmien ylläpitäjille ja edistyneille käyttäjille.
- Komennon nimi on muistettava (vrt. valikot). Komento annetaan muodossa:
komento vivut parametrit
Tämän voi ehkä ymmärtää paremmin jos ajattelee komennon yksinkertaisimmassa muodossa:
TeeJotain Mille
Yleensä kuitenkin pitää hieman tarkemmin kertoa mitä tehdään jolloin muoto on:
TeeJotain Miten mille
tai jos jotakin tiedostoa muokataan uuteen muotoon:
TeeJotain Miten LähtöTiedosto TuotettuTiedosto
Kaikista yksinkertaisin muoto on kuitenkin pelkkä:
TeeJotain
Komentorivi (CLI) vs Graafinen käyttöliittymä (GUI)
Kumpi on parempi käyttöliittymä?
Command Line Interface (CLI) | Graphical User Interface (GUI) | |
---|---|---|
Helppous alussa | Vaikea oppia, vaatii enemmän muistamista | Helppo oppia, intuitiivisempi |
Käyttöliittymä | Jokaisen ohjelman käyttöliittymä samanlainen | Käyttöliittymät erilaisia |
Moniajo | Moniajo on hankalaa | Moniajo on helppoa |
Nopeus | Osaavan käsissä erittäin nopea | Hitaahko |
Kontrolli | Antaa laajan kontrollin | Rajatumpi, ohjelmakohtaista |
Resurssit | Vaatii vähän resursseja | Vaatii paljon resursseja |
Skriptaus | Komentojonot (Skriptaus) - erittäin helposti ohjelmoitavissa ja automatisoitavissa | Rajatusti mahdollista, ohjelmakohtaista |
Etäkäyttö | Yleisimmin etäkäyttö tapahtuu CLIn avulla | Rajoitetusti mahdollista |
Kummassakin käyttötavassa on puolensa. Tehokkainta on käyttää molempia.
graphical user interfaces make easy tasks easy, while command line interfaces make difficult tasks possible
- CLI:tä ei tule sekoittaa tekstipohjaiseen käyttöliittymään.
Missä komentoriviin törmää?
- Windowsin komentokehote (command prompt) tai modernimpi Windows PowerShell
- Unix/Linux-koneiden päätekäyttö (SSH-yhteydellä) eli shell-käyttö
- Apple Terminal
- Joidenkin ohjelmien yhteydessä esim. AutoCAD, R (tilastotiede), MATLAB (matematiikka), tietokannanhallintajärjestelmät, LaTeX, ohjelmointityökalut
- Käytämme kurssilla lähinnä yliopiston Linux-koneita, koska kaikilla on niihin pääsy ja käytössä samanlainen komentoriviympäristö
Komentorivin hyötyjä
- "Tehdäänkö nopeasti vai tehdäänkö hiirellä?"
- Etäkäyttö komentorivipohjaisella käyttöliittymällä ei ole yhtä raskasta kuin graafisella
- Osaava käyttäjä toimii merkkipohjaisessa ympäristössä (CLI, command line interface) usein tehokkaammin kuin
graafisessa käyttöliittymässä (GUI, Graphical User Interface). Esimerkkejä tehokkaista komentorivityökaluista ja toimenpiteistä:
- Usean videotiedoston yhdistäminen yhdeksi tiedostoksi
- Linux-koneen ohjelmistojen päivittäminen ja asentaminen
- Kuvatiedoston muuntaminen kuvaformaatista toiseen kuvaformaattiin
- Komentoriviohjelmien käyttäminen on aina (lähes) samanlaista.
- Opit kerran käyttämään komentoriviä ja komentoriviohjelmia niin osaat sen jälkeen käyttää kaikkia komentoriviohjelmia
- Graafisessa käyttöliittymässä joudut opettelemaan jokaisen ohjelman käyttöliittymän erikseen. Poikkeuksena tietyt asiat, jotka toimivat (yleensä) kaikissa ohjelmissa.
- Käteviä ja tehokkaita merkkipohjaisia ohjelmia on edelleen käytössä
- Ohjelmointityökalut
- LaTeX
- Komentojonot - Voit tehdä itse!
- Aina ei voi valita!. Joidenkin toimenpiteiden tekeminen vaatii merkkipohjaisten ohjelmien käyttöä esim. järjestelmien ylläpitotehtävissä
- Joitain asioita ei pysty tekemään graafisella käyttöliittymällä. Esim. putkitus.
- Yhdellä komennolla voidaan käsitellä useampia tiedostoja.
- Valitsetko 10 kertaa valikoista File|Open ja muita toimenpiteitä vai teetkö yhdellä rivillä saman asian komentorivillä?
- Komentorivillä voidaan ohjata monipuolisesti ohjelman toimintaa.
- Toiminto- ja komentohistoria
- Voit hyvin nopeasti toistaa aiemmin tehdyt komennot samanlaisina tai pienillä muutoksilla
- Usein toistuvista toimenpidesarjoista voidaan tehdä käteviä komentojonoja. Seuraavassa muutamia esimerkkejä ongelmista, joissa komentojono voi olla ratkaisu:
- Tietyntyyppisten tiedostojen kopiointi yhdellä komennolla www-palvelimelle tai muulle tietokoneelle
- Varmuuskopiointi CD-levylle
- Roskapostiohjelman opettaminen lajiteltujen viestien perusteella
- 100 valokuvan koon muuttaminen
- Kymmenien videotiedostojen muuntaminen toiseen muotoon
- Usean tiedoston tulostaminen samanaikaisesti
- Luentovideolistauksen lisääminen luentosivulle
- Ohjelmoijan on osattava käyttää komentorivityökaluja
Mikä on UNIX?
- UNIX on käyttöjärjestelmä (vrt. Windows). Erilaisia versioita UNIXista tai Unixin tyyppisiä ovat muun muassa seuraavat (vrt. Windows 95/98/NT/2000/XP/Vista/7/8/10):
- Linux (eri versioita mm. Ubuntu, Debian, Knoppix, Mandrake jne.)
- Android, pohjautuu suoraan Linuxiin
- NetBSD
- HP-UX
- Solaris
- macOS - Applen tietokoneiden käyttöjärjestelmä
- UNIX on monen käyttäjän käyttöjärjestelmä. Samaa konetta ja siinä olevia ohjelmistoja voi siis samanaikaisesti käyttää jopa satoja henkilöitä.
- UNIXia voi käyttää joko merkkipohjaisena komentoriviltä tai Windowsia vastaavan graafisen käyttöliittymän kautta.
Jyväskylän yliopistossa opiskelijat saavat tunnuksen Linux-palvelimelle. Yleinen periaate palvelimen toiminnassa on seuraava:
- Palvelin tarjoaa palveluja (esim. WWW-palvelu tai SSH-palvelu)
- Palveluja voidaan etäkäyttää asiakasohjelmalla (esim. WWW-selain tai SSH-ohjelma).
Yhteydenotto palvelinkoneeseen
- Unix-käyttöoikeus pitää olla aktivoituna salasana.jyu.fi-palvelun kautta
- Pääteyhteys otetaan Putty -ohjelmalla (Start | All Programs | Putty SSH tools | Putty SSH Client) tai muulla yhteyden salaavalla ohjelmalla. Mikroluokista
löytyy myös Kitty, joka on monipuolisempi versio Puttysta.
- Sana "pääte" tai "konsoli" tulevat ajalta jolloin oli olemassa erillisiä päätekoneita joilla vain otettiin yhteys palvelinkoneeseen
- Pääte, konsoli, terminaali, kaikki tarkoittavat käytännössä samaa asiaa eli ikkunaa jossa on komentorivi käytettävissä
- Putty on oikeasti pääte-emulaattori, joka matkii päätettä
- Tarkista, että Puttyn asetuksissa on oikea merkistö.
- Hae kohta Window|Translation ja varmista, että Remote charactet set-kohtaan on valittuna UTF-8
- Siirry vielä kohtaan Session. Valitse listasta Default settings ja sen jälkeen Save
- Hae kohta Window|Translation ja varmista, että Remote charactet set-kohtaan on valittuna UTF-8
- Nyt voit valita Open
- Host Name: jalava.cc.jyu.fi (muita vaihtoehtoja: halava.cc.jyu.fi)
- User Name: käyttäjätunnus (sama tunnus kuin kaikkiin muihinkin yliopiston järjestelmiin)
- Ensimmäisellä yhteyskerralla saat eteesi dialogin jossa kysytään hyväksytkö palvelimen tarjoaman Host Keyn. Voit vastata myöntävästi ja antaa avaimen tallentua koneellesi. Myöhemmillä samalta koneelta otetuilla yhteyskerroilla ei tätä dialogia pitäisi tulla. Jos kuitenkin saat varoituksen, että palvelimen avain on vaihtunut niin ole varovainen. Tämä voi tarkoittaa, että joku yrittää kaapata pääteyhteytesi ja esiintyä haluamanasi palvelimena. Palvelimen avaimen ei pitäisi vaihtua kuin suuren käyttöjärjestelmäpäivityksen yhteydessä.
Yhteydenotto palvelinkoneeseen Mac-ympäristössä
Macilla ei tarvitse asentaa mitään lisäohjelmia
- Avaa Apple Terminal
- Ota yhteys palvelinkoneeseen kirjoittamalla:
ssh omatunnus@halava.cc.jyu.fi
- Saat ensimmäisellä yhteyskerralla samanlaisen maininnan palvelimen avaimesta, kuin Puttya käytettäessä. Hyväksy avain.
- Syötä salasanasi
- Olet nyt kirjautunut halava-koneeseen
- Yhteys suljetaan logout-komennolla
Merkkipohjaisessa järjestelmässä työskentely
- Kirjaudutaan sisään omilla tunnuksilla ja luetaan alkutekstit.
- Työskentely tapahtuu pelkän näppäimistön avulla, joten hiirtä ei voi käyttää juuri ollenkaan.
- SSH-ohjelman valikoista ei ole apua. SSH-yhteysohjelma vain näyttää mitä UNIX-koneessa tapahtuu.
- Hiiren vasemman painikkeen avulla voit yleensä maalata tekstiä. Maalattu teksti kopioituu usein suoraan leikepöydälle.
- Hiiren oikea painike usein liittää leikepöydällä olevan tekstin pääteohjelmaan. Ole varovainen!
- Sisäänkirjautumisen jälkeen UNIX-kone kertoo päivän viestin (Message of the day, MOTD). Jalava- ja halava-koneissa ei ole MOTD:a. Kirjautuessa tulee vain ilmoitus edellisestä kirjautumiskerrasta.
login as: anlakane anlakane@jalava.cc.jyu.fi's password: Last login: Tue Aug 20 10:29:00 2019 from robinson2.it.jyu.fi [anlakane@jalava ~]$
- Jos saat kirjautumisen jälkeen seuraavanlaisen virheilmoituksen:
niin lähetä kyseinen virheilmoitus it-palveluille osoitteeseen palvelupiste@jyu.fi, niin it-palvelut korjaa tunnuksesi toimimaan oikealla tavalla.Could not chdir to home directory /nashome2/omatunnus: Permission denied -bash: /nashome2/omatunnus/.bash_profile: Permission denied
- Komentokehote jää odottamaan käyttäjän komentoja. Komentokehotteen alussa saattaa
lukea esim. kellonaika ja käytetyn koneen nimi ja sijaintikansio tai käyttäjätunnuksesi ja koneen nimi. Tämä vaihtelee. Yleensä komentokehote
päättyy %- tai $-merkkiin.
2:55pm@verso:~%
- Käyttöjärjestelmälle syötetään komentoja komentoriville. esim:
Komento päätetään enterin painalluksella.2:55pm@verso:~% ls
- Käyttöjärjestelmä antaa vasteen syöttöihin vain tarvittaessa. Jos mitään vastetta ei tule niin oletuksena kaikki on mennyt oikein. Usein vain virheistä ilmoitetaan.
- Isoilla ja pienillä kirjaimilla on merkitystä UNIXissa! ls on eri komento kuin Ls tai LS
- Komennon eri osien väliin tulee välilyönti.
2:55pm@verso:~% ls -al
- Väliviiva (-) on usein komentoon liittyvän valitsimen eli vivun etumerkki.
- Komennon perään kirjoitetaan yleensä parametrejä joita komento tarvitsee toimiakseen
- esim. man-komennolla saa avustuksen halutusta komennossa esim.
2:55pm@verso:~% man ls
ls on nyt man-komennolle annettu parametri eli tässä tapauksessa sen komennon nimi, jonka manuaalia halutaan lukea.
- Parametrit erotetaan komennosta ja toisistaan välilyönnillä
- esim. man-komennolla saa avustuksen halutusta komennossa esim.
- Tiedostojen nimeämisessä kannattaa noudattaa seuraavaa (pätevät myös Windowsissa):
- Tiedostojen nimeen ei välilyöntejä!
- Tiedostojen nimeen ei skandeja (äöå) tai erikoismerkkejä (&,? jne.) paitsi alaviiva (_)
- Lopetettuasi työskentelyn kirjaudu ulos logout-komennolla
Tutustua ympäristöösi
Kokeile seuraavia komentoja:
- whoami
- uname
- uname -n
- uname -nmo
[tjlahton@charra ~]$ whoami
tjlahton
[tjlahton@charra ~]$ uname
Linux
[tjlahton@charra ~]$ uname -n
charra.it.jyu.fi
[tjlahton@charra ~]$ uname -nmo
charra.it.jyu.fi x86_64 GNU/Linux
[tjlahton@charra ~]$
Merkinnät, pikanäppäimet, erikoisnäppäimet, erikoismerkit
- Ctrl-R (tai CTRL+R) tarkoittaa näppäinyhdistelmää, jossa painat Ctrl-napin pohjaan ja sitten kirjainta R. ^R on usein käytetty muoto Ctrl-R:stä
- Alt-R tarkoittaa näppäinyhdistelmää, jossa painat Alt-napin pohjaan ja sitten kirjainta R.
- M-r tarkoittaa Unix-dokumentaatioissa "Meta"-näppäimen käyttöä. Yleensä Alt-näppäimen käyttö on sama asia. Jotkut pääteohjelmat eivät osaa lähettää Altia meta-näppäimenä, mutta silloin voi näppäillä ESC eli Escape ja sen jälkeen kirjain, ja se tarkoittaa samaa.
- Kursori tarkoittaa tekstin kohdistinta
Bash-shell-ympäristön tärkeimmät pikanäppäimet
Näppäinyhdistelmä | Toiminto |
---|---|
Ctrl + A | Siirry rivin alkuun |
Ctrl + E | Siirry rivin loppuun |
Ctrl + L | Puhdistaa näytön |
Ctrl + U | Tyhjentää rivin kursorin paikasta rivin alkuun |
Ctrl + H | Sama kuin backspace-näppäin |
Ctrl + R | Selaa edellisiä komentoja |
Ctrl + C | Tappaa suorituksessa olevan ohjelman |
Ctrl + D | Sama kuin exit eli lopettaa shell-istunnon |
Ctrl + Z | Siirtää suorituksessa olevan ohjelman taustalle odottamaan. fg-komento jatkaa ohjelman suoritusta. bg-komento jatkaa ohjelman suoritusta mutta taustalla. |
Ctrl + W | Poistaa kursoria edeltävän sanan |
Ctrl + K | Tyhjentää rivin kursorista eteenpäin |
Ctrl + S | Pysäyttää pääteyhteyden toiminnan |
Ctrl + Q | Aktivoi pääteyhteyden uudelleen jos on painettu CTRL+S |
Tab | Sarkain-näppäin, täydentää automaattisesti tiedostojen ja kansioiden nimiä |
Kts. Bash Shell Keyboard Shortcuts ja Table of keyboard shortcuts
Erikoismerkit
Jotkut komennoissa tarvittavat merkit ovat hieman yllättäviä ja harvemmin käytettyjä muualla kuin shelleissä. Lisäksi ne on joskus vaikea erottaa toisistaan paperilta tai näytöltä. Tässä on mallikappaleet vaikeammin toisistaan erottuvista erikoismerkeistä, joita shelleissä käytetään:
Merkki | Selitys |
---|---|
~ | Tilde, "mato", aaltoviiva; tavallisesti Alt Gr:n ja enterin viereisen näppäimen yhdistelmänä. Tämän jälkeen pitää painaa vielä välilyöntiä, että varsinainen matomerkki tulee. Kyseessä on aksenttimerkki, joka tulee halutun merkin yläpuolelle eli tässä tapauksessa välilyönnin. Samaan tapaan voisi kirjoittaa myös esim. mañana |
^ | "hattu", caret; tavallisesti Shiftin ja enterin viereisen näppäimen yhdistelmänä. Sama juttu kuin tilden kanssa eli pitää painaa vielä välilyöntiä tai muuta näppäintä, jonka päälle aksenttimerkki halutaan esim. ê tai î |
" | Lainausmerkki, "double quote" |
' | Heittomerkki, "single quote", apostrophe |
` | gravis eli vasemmalle kallistuva aksenttimerkki, "back-tick"; tulee usein Shiftin ja BackSpacen vieressä olevan napin yhdistelmänä. Tämäkin on àksènttimerkkì, joten pitää painaa perään välilyöntiä. Muista Shift, ettei tule vahingossa ´ eikä ` |
{ | Aaltosulku, curly bracket; tulee yleensä näppäilemällä Alt Gr + 7 |
} | Vastaava aaltosulku toisin päin; tulee yleensä näppäilemällä Alt Gr + 0 |
| | Pystyviiva, tolppamerkki, putkimerkki; tulee Alt Gr + vasemmasta alakulmasta, jossa mm. > |
Muita tavallisesti käytettyjä erikoismerkkejä ovat |<>*?#!;& -- ne erottuvat toisistaan vähän helpommin.
Ongelmatilanteet
" Apua! Painelen näppäimiä, mutta mitään ei tapahdu shellissä "
Jotkut normaalit tilanteet voivat näyttää siltä, että shell jumittui eikä tee mitään. Alla on pieni ongelmanselvitysohje pääteyhteydelle silloin kun se "lakkaa vastaamasta". Tärkeintä on olla menemättä paniikkiin; näppäimiä ja varsinkaan enteriä ei saa hakata hullun raivolla, koska voi tulla lisätuhoja. Todennäköisesti kyseessä on ihan normaali ilmiö.
- Graafisen työpöydän fokus on muualla kuin konsoli-ikkunassa eli pääteyhteysikkunassa? Klikkaa konsoli-ikkunaa ja katso auttaako.
- Ctrl-S painettu vahingossa? Paina Ctrl-Q, joka vapauttaa päätteen.
- Ohjelma jumissa / ajo kestää liian kauan? Kokeile Ctrl-C (stop) tai Ctrl-Z (suspend) ja tarkista tila.
- Palvelimen verkkolevy on jumissa tai hidas? Ei auta kuin odotella tai kokeilla ottaa yhteys eri koneeseen
- Oma verkkoyhteys on poikki? Ei voi kuin odotella. Yhteys on voinut myös vain katkea eli kokeile avata uusi pääteyhteys
- Palvelin kaatui / buutattiin muistamatta ilmoittaa käyttäjille? Todennäköisesti varmistus ajaa koneen kohta ylös. Odottele.
- Omassa koneessa / asennuksessa vikaa?
- Etäkoneessa viallinen asennus / buginen käyttöjärjestelmä tai shelli? Yritä rinnakkaista yhteyttä koneeseen ja tarkista jumittuneen shellin tila prosessinhallintatyökaluilla. Jos Jalava.cc.jyu.fi jumii niin kokeile halava.cc.jyu.fi.
" Apua! Komentoni menevät läpi ja tulosteet tulevat, mutta en näe, mitä kirjoitan. "
Pääteyhteys on jotenkin seonnut. Kokeile auttaako CTRL+L. Kokeile myös auttaako pääteohjelmastasi valinta "Reset terminal". Jos ei kumpikaan auta niin ota uusi yhteys.
" Täysi paniikki! Kaikki on jumissa "
Jotkut ohjelmat voi olla pirullisia käyttää ennen kuin on lukenut niiden kryptiset ohjeet. Yksi esimerkki on Vi-tekstieditori, jossa pitää osata painella järjestyksessä napit ESC : q ! ja enter, että pääsee pois. Muitakin ehkä on.
Joskus ohjelmat kysyvät jotakin, johon pitäisi osata vastata jotakin. Jos et ole kiinnostunut opettelemaan asiaa manuaalista, tai ei ole aikaa, kokeile seuraavia näppäilyjä, jotka useissa ohjelmissa peruuttavat aloitetun interaktiivisen toiminnon:
- ESC
- ESC pari kertaa peräkkäin
- Ctrl-G -- tämä on aika tyypillinen "Cancel"-toiminnon näppäin
- Ctrl-Q tai Ctrl-C -- huomaa että nämä saattavat lopettaa koko ohjelman!
- Viimeisenä keinona sulje vaan kylmästi pääteyhteysohjelma ja ota yhteys uudelleen. Normaalisti tähän pitäisi olla hyvin vähän tarvetta.
Mahdollisesti taustalle jäävät ongelmalliset ohjelmat voi lopettaa kill-komennolla. ps-komennolla näkee listauksen omista ohjelmistaan ja näiden ohjelmien prosessinumerot. Prosessinumeron perusteella voi kill-komennolla lopettaa ohjelman.
Jos mikään muu ei auta niin kill -9 -1 tappaa kaikki käynnissä olevat prosessisi mukaanlukien pääteyhteytesi. Käytä varoen!
Kotihakemisto

Käyttäjän kotihakemisto (~) on kansio, joka toimii käyttäjän oletuskansiona heti sisäänkirjautumisen jälkeen. Käyttäjän kotihakemisto ilmaistaan yleensä matomerkillä eli tildellä (~).
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
Oletushakemisto

Oletushakemisto (.) on se kansio, jossa käyttäjä paraikaa toimii. Esimerkissä oletushakemistona toimii demot-kansio.
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
Oletuskansion (oletushakemiston) vaihtaminen
Oletushakemistoa vaihdetaan cd-komennolla.
[tjlahton@jalava ~]$ cd tyovaline
[tjlahton@jalava ~/tyovaline]$
Isähakemisto (edellinen hakemisto)

Isäkansio (..) on hakemisto, joka on kansiohierarkiassa oletushakemistosta yhden tason ylöspäin. Esimerkissä luento1-kansio isähakemisto on luennot-kansio. Vastaavasti luento1 -kansio on luennot-kansio alikansio.
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
Isäkansioon siirrytään cd-komennolla käyttäen kohdekansion nimenä ..-merkintää.
[tjlahton@jalava ~/tyovaline]$ cd ..
[tjlahton@jalava ~]$
Kansiorakenteessa navigoiminen
cd-komennolla voi siirtyä useamman kansion sisään tai peruuttaa kansiorakenteessa ylöspäin.
Kauttaviiva (/) on kansioerotin.
[tjlahton@jalava ~]$ cd tyovaline/demot/demo3/
[tjlahton@jalava demo3]$ cd ../../../
[tjlahton@jalava ~]$ cd tyovaline/
[tjlahton@jalava ~/tyovaline]$ cd demot/
[tjlahton@jalava demot]$ cd demo3/
[tjlahton@jalava demo3]$ cd ../../luennot/luento2/
[tjlahton@jalava luento2]$
Edellä nähtyä tapaa ilmaista kohdekansio kutsutaan suhteelliseksi viittaukseksi.
Suoraan kotihakemistoon pääsee aina pelkällä komennolla cd eli ei mitään parametreja
Suhteellinen viittaus
Harjoittele suhteellista viittausta
Suhteellinen viittaus tarkoittaa tapaa viitata tiedostoon tai kansioon lukien oletushakemistosta
Suhteellinen viittaus viittaa siis aina eri tiedostoon tai kansioon riippuen siitä mikä on oletushakemisto
Suhteellisessa viittauksessa kuljetaan kansiorakenteessa ylös ja/tai alaspäin oletushakemistosta aloittaen.
Absoluuttista viittausta joutuu käyttämään paljon mm. www-sivujen yhteydessä ja taulukkolaskennassa.
Kuvitellaan tilanne jossa oletushakemisto on demot
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
Nyt haluamme viitata luento2-kansioon vaikkapa siirtyäksemme sinne cd-komennolla:
[tjlahton@jalava demot]$ cd ../luennot/luento2/
[tjlahton@jalava luento2]$
Jos oletushakemistomme olisikin ollut demo1 niin toimisiko sama suhteellinen viittaus kuin edellä?
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
Edellä käytetty viittaus ei enää toimi vaan se pitää mukauttaa uuteen sijaintiin sopivaksi:
[tjlahton@jalava demo1]$ cd ../luennot/luento2/
../luennot/luento2/: No such file or directory.
[tjlahton@jalava demo1]$ cd ../../luennot/luento2/
[tjlahton@jalava luento2]$
Lyhin mahdollinen suhteellinen viittaus on pelkkä samassa kansiossa olevan tiedoston tai kansion nimi
[tjlahton@jalava demot]$ ls demo3
Tietokonevirukset ja muut nykyajan tuholaiset.doc
Jos halutaan viitata omaan oletushakemistoon niin käytetään .-merkintää. ls-komento antaa listauksen oletushakemistosta jos sille ei anneta mitään parametreja. Toiminta on siis sama kuin parametrina olisi .
[tjlahton@jalava demot]$ ls
demo1 demo3
[tjlahton@jalava demot]$ ls .
demo1 demo3
[tjlahton@jalava demot]$
Absoluuttinen viittaus
Absoluuttisessa viittauksessa tiedetään jokin sijainti, joka on oletushakemistosta riippumaton.
Absoluuttinen viittaus toimii samanlaisena aina.
Unix-koneissa voidaan absoluuttisen viittauksen aloituspaikkana käyttää joko koko tiedostojärjestelmän juurta / tai käyttäjän omaa kotihakemistoa ~
Kuvitellaan tilanne jossa oletushakemisto on demot
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
Nyt haluamme viitata luento2-kansioon vaikkapa siirtyäksemme sinne cd-komennolla:
[tjlahton@jalava demot]$ cd ~/tyovaline/luennot//luento2/
[tjlahton@jalava luento2]$
Jos oletushakemistomme olisikin ollut demo1 niin toimisiko sama absoluuttinen viittaus kuin edellä?
~
|
|-- tyovaline
| |-- demot
| | |-- demo1
| | |-- demo2
| | `-- demo3
| `-- luennot
| |-- luento1
| |-- luento2
| `-- luento3
[tjlahton@jalava demo1]$ cd ~/tyovaline/luennot//luento2/
[tjlahton@jalava luento2]$
Absoluuttinen viittaus toimii, koska sen määrittelemän polun aloituspaikka on aina vakio.
Absoluuttista viittausta joutuu käyttämään paljon mm. www-sivujen yhteydessä ja taulukkolaskennassa.
Tiedostojen kopioiminen
Tiedostoja kopioidaan cp-komennolla. Komennolle kerrotaan kopioitavan tiedoston sijainti ja paikka (polku) jonne tiedosto halutaan kopioida. Voidaan käyttää sekä suhteellista että absoluuttista viittausta.
Kopioidaan tiedosto samassa kansiossa uudelle nimelle:
[tjlahton@jalava demo3]$ cp virukset.doc dokkari.doc
Kopioidaan tiedosto toiseen kansioon samalla nimellä
[tjlahton@jalava demo3]$ cp dokkari.doc ../
[tjlahton@jalava demo3]$ cp dokkari.doc ../demo1/
[tjlahton@jalava demo3]$ mkdir malli
[tjlahton@jalava demo3]$ cp dokkari.doc malli/
Kopioidaan tiedosto toiseen kansioon uudella nimellä
[tjlahton@jalava demo3]$ cp dokkari.doc ../virus.doc
[tjlahton@jalava demo3]$ cp dokkari.doc ../demo1/virus.doc
[tjlahton@jalava demo3]$ cp dokkari.doc malli/virus.doc
Kopioidaan tiedosto muualta oletushakemistoon
[tjlahton@jalava demo3]$ cp ../../testi.txt .
Kopioidaan muualla kuin oletushakemistossa oleva tiedosto muualle kuin oletushakemistoon
[tjlahton@jalava demo3]$ cp ../../testi.txt ../../luennot/luento2/
Sama kuin edellä mutta käyttäen absoluuttista viittausta
[tjlahton@jalava demo3]$ cp ~/tyovaline/testi.txt ~/tyovaline/luennot/luento2/
Sama kuin edellä mutta käyttäen sekä suhteellista, että absoluuttista viittausta
[tjlahton@jalava demo3]$ cp ~/tyovaline/testi.txt ../../luennot/luento2/
Manuaalit
Kukaan ei muista kaikkia komentoja ulkoa eikä varsinkaan kaikkia niiden vipuja. Ohjeita voi aina yrittää etsiä googlella mutta unixista löytyy myös man-komento jolla voi lukea komentojen ohjesivut
-k-vivulla voi hakea tiettyyn avainsanaan liittyvien komentojen avusteita
[tjlahton@jalava ~/tyovaline]$ man ls
[tjlahton@jalava ~/tyovaline]$ man -k www
Tekstieditori Nano
Yksinkertaisin Unix-ympäristöistä löytyvä tekstieditori on nano.
[tjlahton@halava tyovaline]$ nano foobar
Nano näyttää seuraavalta:
GNU nano 2.0.9 File: foobar
[ New File ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
Ikkunan yläreunassa näkyy Nanon versionumero sekä editoitavan tiedoston nimi. Keskellä ikkunaa on varsinainen tekstikenttä, jossa näkyy editoivan tiedoston sisältö. Alareunassa olevat kolme riviä kertovat käytössä olevat komennot sekä editorin tilan.
Komennot on merkitty hattu- eli ^ -merkillä, joka tarkoittaa Ctrl-näppäintä. Perässä on kirjain, jolla komento suoritetaan. Esimerkiksi poistumistoiminto toimii näppäinyhditelmällä Ctrl + X.
-
Ctrl + C (engl. Cur Pos)ilmoittaa tekstin editointitilassa kursorin sen hetkisen sijainnin dokumentissa. Muiden toimintojen yhteydessä tapahtuu samaisella näppäinyhdistelmällä cancel-operaatio eli toiminnon keskeytys.
-
Ctrl + G (engl. Get Help)avaa avustustoiminnon.
-
Ctrl + J (engl. Justify)poistaa tekstistä rivinvaihdot eli tiivistää tekstiä.
-
Ctrl + K (engl. Cut Text) leikkaa leikepöydälle rivin, jolla kursori on. Toiminnolla voidaan leikata useita rivejä peräkkäin samalle leikepöydälle.
-
Ctrl + O (engl. WriteOut) tiedoston tallennus.
-
Ctrl + R (engl. Read File) tiedoston avaaminen.
-
Ctrl + T (engl. To Spell) tavutuksen tarkastus, joka ei ainakaan suomenkielisessä tekstissä toimi.
-
Ctrl + U (engl. UnCut Text) liimaa leikepöydällä olevan tekstin kursorin osoittamalle kohdalle.
-
Ctrl + V (engl. Next Pg)selaa tiedostoa eteenpäin ruudullisen verran.
-
Ctrl + W (engl. Where is) on hakutoiminto, jolla voidaan hakea tiettyä merkkijonoa tiedostosta.
-
Ctrl + X (engl. Exit) poistuminen, samainen näppäinyhdistelmä toimii myös eräiden komentojen yhteydessä samaisessa merkityksessä.
-
Ctrl + Y (engl. Prev Pg)selaa tiedostoa taaksepäin ruudullisen verran.
Monipuolisempia tekstieditoreita ovat Emacs ja Vim. Emacs osaa jopa keittää kahvia ja toimia psykoterapeuttina.
Korvausmerkit (jokerimerkit, wildcards)
Monesti halutaan tehdä sama toiminto useammalle tiedostolle samaan aikaan. Tämä edellyttää yleensä kaikkien tiedostojen nimien listaamista jonkun komennon parametreina. Jos tiedostoja on paljon tämä on vaivalloista. Usein ongelma kierretään käyttämällä korvausmerkkejä (jokerimerkkejä, wildcards)
- * tarkoittaa nollaa tai useampaa mitä tahansa merkkiä
- rm *.txt tuhoaa kaikki .txt-päätteiset tiedostot
- mogrify -resize 640x480 -format jpeg *.tif pienentää .tif-päätteiset kuvatiedostot ja muuntaa ne jpeg-muotoon
- ? tarkoittaa mitä tahansa yksittäistä merkkiä
- rm ???.txt tuhoaa kaikki tiedostot joiden nimi on kolme merkkiä pitkä ja pääte on .txt
Jokerimerkkejä on muitakin mutta tällä kurssilla riittää, kun ymmärtää *- ja ?-merkit.
Unix-ympäristössä komentotulkki tulkitsee jokerimerkit ennen komennon suorittamista. DOS-ympäristössä jokerimerkkien tulkinta on kunkin ohjelman omalla vastuulla.
[tjlahton@jalava ~/tyovaline]$ ls *.png
show_hide.png testi.png testikuva1.png testikuva2.png testikuva3.png
[tjlahton@jalava ~/tyovaline]$ ls *.doc
Testidokumentt1.doc testi.doc testi2.doc testidokkari.doc ~$testi2.doc
[tjlahton@jalava ~/tyovaline]$ ls *.???
Testidokumentt1.doc power.zip testidokkari.zip tiedonhallinta.zip
esheep.exe show_hide.png testikuva1.png tj.txt
itk010.zip testi.doc testikuva1.zip tj2.txt
kansio.zip testi.png testikuva2.png tyylit.css
malli.txt testi.txt testikuva2.zip ~$testi2.doc
mallipaketti.zip testi2.doc testikuva3.png
paketti.zip testidokkari.doc testipaketti.zip
[tjlahton@jalava ~/tyovaline]$
Erikoismerkit tiedostojen nimissä
Jos tiedostojen tai kansioiden nimissä esiintyy erikoismerkkejä kuten välilyönti tai korvausmerkkejä voi niiden käsittely komentoriviltä olla hankalaa. Erikoismerkkien ongelmia voi kiertää sijoittamalla tiedoston nimi lainausmerkkeihin tai asettamalla erikoismerkkien eteen \-merkkejä.
[tjlahton@jalava ~/tyovaline]$ mv tämä\ on\ hankala\ nimi.png parempi_nimi.png
[tjlahton@jalava ~/tyovaline]$ mv "tämä on hankala nimi.png" uusi.png
Samaan tapaan pitää toimia jos jokerimerkki halutaan antaa komennon eikä komentotulkin tulkittavaksi:
find ./ -name \*\.htm -type f -print
Komentotulkki (shell) käsittelee ensimmäisenä komentorivin. Haluatko, että shelli purkaa regexpit vai haluatko, että ne tulkitsee find-komento? Jos haluat, että erikoismerkit (regexp) menee findille käsiteltäväksi, niin silloin laitat ympärille '' tai \-merkillä merkitse erikoismerkit. Jos haluat, että shelli purkaa ensin erikoismerkit (regexp) vastaaviksi tiedostonimiksi, niin et laita ''-merkkejä.
Jos kansion sisältö on:
[tjlahton@halava vt]$ ls -1
vt1
vt2
vt3
vt4
vt5
index.html
Haluan etsiä kaikista vt-alkuisista alikansioista kaikki .html-päätteiset tiedostot:
find vt* -name "*.html" -ls
Tässä on olennaista, että vt* on juuri tuossa muodossa ja "*.html" juuri
näin. Komentotulkki käsittelee vt* ja muuntaa sen vastaaviksi
tiedostonimiksi. *.html sen sijaan menee find-komennon käsiteltäväksi.
Lopullinen suoritettava komento on oikeasti:
find vt1 vt2 vt3 vt4 vt5 -name "*.html" -ls
Jos tuon kirjoittaisi muodossa:
find vt* -name *.html -ls
niin komento onkin käytännössä:
find vt1 vt2 vt3 vt4 vt5 -name index.html -ls
koska shelli laajentaa tuon *.html vastaamaan kansiosta löytyviä tiedostoja. Tätä voi harjoitella esim. echo komennolla. Kokeile kirjoittaa echo komentorivisi eteen niin näet millainen rivi on shellin käsittelyn jälkeen. esim.
echo find vt* -name *.html -ls
vs
echo find vt* -name "*.html" -ls
Lisätietoa: Globbing
Ohjelman tulostuksen edelleenohjaus
Komentorivikäytölle on tyypillistä työkaluajattelu jossa monimutkaisemmat tehtävät suoritetaan yhdistelemällä yksinkertaisia työkaluja.
Yksi tyypillinen toimenpide on ohjelman tulostuksen ohjaaminen tiedostoon eikä näytölle. Tällä saadaan komennon antama tulos jatkokäsiteltäväksi. Tulostuksen ohjaaminen tapahtuu >- ja >>-merkinnöillä.
[tjlahton@jalava demo3]$ tree
.
|-- dokkari.doc
|-- malli
| `-- dokkari.doc
|-- testi.txt
`-- virukset.doc
1 directory, 4 files
[tjlahton@jalava demo3]$ tree > malli.txt
[tjlahton@jalava demo3]$
[tjlahton@jalava demo3]$ cat malli.txt
.
|-- dokkari.doc
|-- malli
| `-- dokkari.doc
|-- malli.txt
|-- testi.txt
`-- virukset.doc
1 directory, 5 files
> korvaa aina mahdollisen vanhan tiedoston.
>> lisää tulosteen tiedoston perään.
Putkitus
Komennon tulosteen voi ohjata myös suoraan toiselle komennolle |-operaattorilla eli putkittaa tulosteen jonossa seuraavana olevalle ohjelmalle. esim. ls-komennon tulosteen voi sivuttaa näytölle putkittamalle sen less-komennolle. esim.
[tjlahton@jalava ~/tyovaline]$ ls | less
[tjlahton@jalava ~/tyovaline]$ tree | less
grep
grep-komento on tärkeimpiä ja hyödyllisimpiä komentorivikomentoja. grep-komennolla voidaan poimia tiedostosta vain ne rivit joilla esiintyy haluttu merkkijono. esim. halutaan listata tiedoston rivit joista löytyy sana conf
ls /etc > tiedostot.txt
grep conf tiedostot.txt
Tiedostojen oikeudet
Montaa käyttäjää tukevissa käyttöjärjestelmissä on olennaista ymmärtää myös tiedostojen erilaiset oikeudet. Voi olla, että joitakin tiedostoja saa käyttää kuka tahansa, toisia vain tiedoston omistaja ja toisia vain jokin tietty ryhmä.
Tiedostojen erilaiset oikeudet näkyvät unix-ympäristöissä komennolla ls -l tai ls -al.
[tjlahton@halava tyovaline]$ ls -al
total 8
drwxr-xr-x. 3 tjlahton itappro 35 Aug 30 12:43 .
drwxr-x---. 13 tjlahton users 4096 Aug 29 17:06 ..
-rw-r--r--. 1 tjlahton itappro 0 Aug 30 12:43 foobar
drwxr-xr-x. 2 tjlahton itappro 6 Aug 29 17:06 tyovaline
[tjlahton@halava tyovaline]$
Oikeudet näkyvät ensimmäisessä sarakkeessa.
Sarakkeen ensimmäinen kirjain kertoo tiedostotyypin. Yhdeksän seuraavaa ovat varsinaiset oikeudet. Oikeudet ovat järjestyksessä seuraavasti:
-
Kolme ensimmäistä kirjainta kertoo omistajan oikeudet (owner).
-
Kolme keskimmäistä kirjainta tarkoittaa ryhmän oikeuksia (group).
-
Kolme viimeistä kirjainta kertoo kaikkien muiden käyttäjien oikeudet (others).
-
Oikeuksia on kolmenlaisia. Jos ko. oikeutta ei ole kirjaimen paikalla on - .
-
Lukuoikeus, merkataan r-kirjaimella (read).
-
Kirjoitusoikeus, merkataan w-kirjaimella (write).
-
Suoritusoikeus, merkataan x-kirjaimella (execute). Hakemistolla suoritusoikeus tarkoittaa listaamisoikeutta.
Oikeuksien muuttaminen
chmod [-optiot] [asetettavat oikeudet symboleina] [tiedoston tai
hakemiston nimi]
Tiedostojen oikeuksien muuttaminen tapahtuu chmod-komennolla. Optio -R muuttaa oikeudet rekursiivisesti eli koko hakemistorakenteeseen. Varsinainen oikeustietoihin tapahtuva muutos annetaan joko oktaalinumeroina tai symbolisesti
Ensin annetaan tieto kenelle oikeuksia muutetaan.
-
u käyttäjä (user).
-
g ryhmä (group).
-
o muut (other).
-
a kaikki (all).
Seuraavana kerrotaan miten oikeuksia muutetaan:
-
+ lisää oikeus.
-
- poista oikeus.
-
= määrää oikeuden absoluutisesti. Poistaa kaikki entiset oikeudet.
Viimeisenä kerrotaan mitä oikeutta muutetaan:
-
r lukuoikeus (read).
-
w kirjoitusoikeus (write).
-
x suoritusoikeus (execute).
Esimerkiksi lisätään tiedostolle metsastys kaikille suoritusoikeus.
jane:~>chmod a+x metsastys
jane:~>
Lisätään käyttäjälle ja ryhmälle kirjoitusoikeus tiedostoon lintu.
jane:~>chmod ug+w lintu
jane:~>
Poistetaan rekursiivisesti ryhmältä ja muilta, luku- ja suoritusoikeus hakemistoon x-files.
jane:~>chmod -R go-rx x-files/
jane:~>
Määrätään rekursiivisesti hakemistolle omat käyttäjälle kaikki oikeudet ja poistetaan samalla mahdolliset muut oikeudet.
jane:~>chmod -R u=rwx omat/
jane:~>
Käytännön esimerkkinä toimii oman www-hakemiston oikeuksien muuttaminen. www-hakemistossa tulee itsellä olla kaikki oikeudet ja muilla lukuoikeus, jotta sivuja voidaan katsella www-selaimella. Eli esimerkiksi index.html-tiedoston oikeuksien muuttaminen oikeanlaisiksi tapahtuu seuraavasti.
jane:~>chmod a+r index.html
Omistuksen muuttaminen
chown [-optiot] [omistaja:ryhmä] [tiedoston tai hakemiston
nimi]
Komennolla chown voidaan muuttaa tiedoston omistusta. Komento on tarkoitettu pääkäyttäjälle (root). Kokemattoman käsissä komento on erittäin kätevä tapa saada omat tiedostot itsensä ulottumattomille!
Ympäristömuuttujat
Käyttöjärjestelmissä on tukku asetuksia, joiden tarkoitus on olla yhteisiä kaikille ohjelmille (vrt. jonkin ohjelman options-valinnat). Esim. kaikille ohjelmille on yhteinen Temp-kansio, jonne ohjelmat voivat tallentaa väliaikaisesti tiedostoja. Temp-kansion sijainti määritetään ympäristömuuttujalla.
PATH-ympäristömuuttuja
Yksi tärkeimmistä ympäristömuuttujista on PATH, jossa on lueteltu ne kansiot, joista ohjelmia etsitään silloin, kun ohjelman nimi annetaan komentoriviltä.
Jotta voit käynnistää komentorivillä vaikkapa itse tehdyn ohjelman, täytyy sinun viitata siihen kansioon jossa ohjelma sijaitsee esim.
~/bin/omaohjelma
Voit myös cd-komennolla siirtyä ohjelman kansioon. Tällöin ohjelmasi sijaitsee oletuskansiossasi ja voit käynnistää sen kirjoittamalla:
./omaohjelma
Koska usein on kätevää käynnistää ohjelma kirjoittamalla vain lyhyesti ohjelman nimi,tarvitaan PATH-ympäristömuuttujaa. PATH-ympäristömuuttuja kertoo shellille mistä kansioista suoritettavia ohjelmia pitää etsiä. Env-komennolla voi listata ympäristömuuttujat.
[tjlahton@charra luento1]$ env | grep PATH
PATH=/usr/local/texlive/2012/bin/x86_64-linux:/usr/local/texlive/2012/bin/x86_64-linux:/usr/local/texlive/2012/bin/x86_64-linux:/usr/local/texlive/2012/bin/x86_64-linux:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/nashome3/tjlahton/bin:/var/www/virtual.hosts/appro.mit.jyu.fi/bin:/nashome3/tjlahton/bin:/var/www/virtual.hosts/appro.mit.jyu.fi/bin
Jos haluat muuttaa PATH-muuttujan arvoa se tapahtuu lisäämällä entiseen arvoon uusia polkuja. Bash-shellissä tapahtuu seuraavasti:
export PATH=$PATH:/foobar/foo
Windowsin CMD- ja moni muu shell käyttää vastaavalla tavalla komentoa set tai setenv.
PATH-muuttujan arvo ei säily ellei sen asettamista lisää esim. ~/.bash_profile-tiedostoon. Windows-ympäristössä voi käyttää setx-komentoa, joka tekee pysyvän muutoksen ympäristömuuttujaan. Arvon voi myös asettaa Control Panelin -kautta.
Prosessien hallinta
Joskus ohjelma menee jumiin ja se pitää saada pysäytettyä. Joskus ohjelman suorittamisen haluaa taustalle.
- ps-komennolla voi listata käynnissä olevat prosessit. Listauksessa näkyy prosessien numerot
- kill-komennolla voi pysäyttää halutun prosessin. Parametrina annetaan pysäytettävän prosessin numerot.
- Jos ohjelma ei meinaa lopettaa niin viimeistään komennolla kill -1 sen saa suljettua
- Prosessin voi siirtää taustalla CTRL+Z-näppäinyhdistelmällä. Taustalle siirretty komento on pysähdyksissä kunnes siihen palataan komennolla fg tai sen sallitaan jatkavan suorittamista taustalla komennolla bg
- Kun kirjaudut pois koneelta (exit tai logout) niin myös kaikki prosessisi lopetetaan
screen-komennon avulla voi helposti suorittaa useita ohjelmia samaan aikaan ja jättää ohjelmat myös päälle vaikka kirjautuisi pois koneelta
Komentotulkit
Komentorivin käyttäminen riippuu paljon käytetystä komentotulkista.
Unix-ympäristöissä on tarjolla useita erilaisia komentotulkkeja eli shellejä
Windows-ympäristössä käytetään yleensä CMD.EXE-komentotulkkia jota monesti myös DOS-nimellä kutsutaan mutta myös nykyaikaisempi Windows PowerShell on käytettävissä.
CMD.EXE- ja UNIX-ympäristöjen vastaavuudet
CMD.EXE on Windowsin yhteydestä löytyvä komentorivi jonne pääsee valinnalla Start|Program|Accessories|Command Prompt
Windowsin CMD.EXE-tulkin saat valinnalla Start|All Programs|Accessories|Command Prompt tai Windows+R-näppäinyhdistelmän kautta suorittamalla komennon CMD. Parempi vaihtoehto on käyttää uudempaa Powershelliä, joka myös käynnistyy näppärimmin Windows+R-näppäinyhdistelmän kautta suorittamalla komento powershell.
Peruskomennot toimivat powershellissa kuten linux-shelleissä.
Introduction to the Windows Command Line with PowerShell
Windowssiin saa myös oikean Unix-Shellin asentamalla Cygwin-ohjelman. Windows 10 mahdollistaa myös oikean Linuxin asentamisen windowsin yhteyteen.
CMD.EXE-ympäristössä isoilla ja pienillä kirjaimilla ei ole merkitystä.
UNIX-ympäristössä isoilla ja pienillä kirjaimilla ON merkitystä!
Windows PowerShell -komentotulkissa toimivat yleensä sekä Unix- että CMD.EXE-komennot ja erikoismerkit.
Seuraavaan taulukkoon on merkitty UNIX-komennon yhteyteen myös esimerkki komennon käytöstä.
DOS | UNIX | UNIX-esimerkki | TOIMINTA |
---|---|---|---|
\ | / | hakemistoerotin | |
/ | - | ls -al | Komentojen valitsimien erotinmerkki esim. DIR /p |
. | . | cp ~/www/tyovaline/index.html . | Oletushakemisto |
.. | .. | cp ../luennot/index.html . | Isähakemisto |
D: | Levyaseman vaihtaminen toiseksi | ||
dir | ls -la | ls -la tyovaline | Näyttää hakemistolistauksen oletushakemistosta tai annetusta hakemistosta |
cd | cd | cd tyovaline/luennot/ | Vaihtaa oletushakemiston toiseksi. |
mkdir | mkdir | mkdir tyovaline/luennot/luento1 | Tekee hakemiston |
rmdir | rmdir | rmdir luento1 | Tuhoaa tyhjän hakemiston |
copy | cp | cp demot/demo1.txt luennot/luento1/luento1.txt | Kopioi tiedostoja |
type | cat | cat luento1.txt | Tulostaa tiedoston sisällön näytölle |
rename | mv | mv demot demoja | Vaihdetaan tiedoston tai hakemiston nimi |
del | rm | rm luento1.txt | Tuhoaa tiedoston |
move | mv | mv luento1.txt ../../demot/ | Siirtää tiedoston uuteen paikkaan |
chmod | chmod go+r index.html | Muutetaan tiedostojen ja hakemistojen oikeuksia | |
edit | nano | nano luento1.txt | Yksinkertainen tekstieditori |
find | grep | grep foo bar.txt | Tulostaa halutun merkkijonon sisältämät rivit tiedostosta |
help ohjelma tai ohjelma /? | man ohjelma tai ohjelma ---help | man ls | Ohjelman avustus tai käyttöohje |
UNIX-komentoja ja -ohjelmia
- Oikeuksien muuttaminen - chmod go+r tiedosto
- Poistuminen - exit tai logout
- Sähköpostiohjelma - pine tai alpine tai mutt
- Englannin sanakirja morse kukka
- ps2pdf - muuntaa postscript-tiedoston pdf-tiedostoksi
- pdf2ps - muuntaa pdf-tiedoston postscript-tiedostoksi
- tin - ohjelma Usenet-ryhmien lukemiseen
- irc ja irssi - irc-ohjelmia
- Tekstieditori nano tai pico
nano on useimmista Unix-koneista löytyvät yksinkertainen tekstieditori jolla voi muokata esim. www-sivuja.
- Dokumentin avaaminen- nano dokumentti
- Rivin leikkaaminen - CTRL-K
- Liittäminen - CTRL-U
- Tallentaminen - CTRL-O
- Poistuminen ja tallentaminen- CTRL-X
- Etsiminen - CTRL-W
- Selainohjelma - lynx 'http://mot.kielikone.fi/mot/jyu/netmot.exe?UI=fi80' tai links 'http://mot.kielikone.fi/mot/jyu/netmot.exe?UI=fi80' tai w3m 'http://mot.kielikone.fi/mot/jyu/netmot.exe?UI=fi80'
- imagemagick - ohjelmistopaketti kuvankäsittelyyn
- convert
- mogrify
- identify
- screen - mahdollistaa useamman yhtäaikaisen päätteen ja ohjelmien pitämisen käynnissä vaikka pääteistunto ei olisikaan käynnissä.
- LaTeX
- tidy
- wget
- find
- locate
- rsync
- du
- df
- nice
- sed
- awk
- top
- bc
- cal
- sqlite3
- top
scp
scp on komentoriviltä toimiva FileZillaa vastaava ohjelma tiedostojen turvalliseen kopiointiin koneiden välillä.
-
Nykyisessä hakemistossa olevan tiedoston siirtäminen palvelimelle:
scp tiedosto tunnus@kone.verkkoalue:hakemisto
- Tiedoston siirtäminen paikalliselle koneelle nykyiseen hakemistoon:
scp tunnus@kone.verkkoalue:hakemisto/tiedosto .
Seuraavassa esimerkissä kopioidaan paikallisen koneen oletushakemistossa olevan tiedosto.txt-tiedoston jalava-koneeseen kimaitt-käyttäjän kotihakemiston alla sijaitsevaan temp-hakemistoon. Scp kysyy kopioinnissa tarvittavat salasanat.
scp tiedosto.txt kimaitt@jalava.cc.jyu.fi:temp/
Seuraavassa esimerkissä kopioidaan jalava-koneesta kimaitt-käyttäjän kotihakemistossa olevasta temp-hakemistosta tiedosto tiedosto.txt käyttämäsi koneen oletushakemistoon nimelle teksti.txt.
scp kimaitt@jalava.cc.jyu.fi:temp/tiedosto.txt teksti.txt
Seuraavassa esimerkissä kokonainen tyovaline-hakemisto siirretään palvelimen kotihakemistossa olevaan opinnot-hakemistoon:
scp -r tyovaline kimaitt@jalava.cc.jyu.fi:opinnot/
Uusimmissa windows- ja mac-koneissa scp löytyy valmiina powershell-komentoriviympäristöstä. SCP:n saat myös hakemalla Putty SCP:n.
rsync
rsync on komento jolla voi synkronoida tiedostoja palvelimien välillä. Mac-ympäristöissä rsync on valmiina. Windows-ympäristöön täytyy asentaa Linux, jotta pystyy käyttämään rsyncia.
rsync -avz kansio/ tunnus@halava.cc.jyu.fi:kansio/
Rsync synkronoi vain muuttuneet tiedostot.
DOS-komentoja
Seuraavat ohjelmat toimivat Windows-ympäristössä mutta useimmille löytyy vastine myös Unixista.
- start käynnistää dokumentin tyypistä riippuvan ohjelman ja avaa dokumentin
- pskill tappaa prosessin (ohjelman)
- netstat näyttää verkkoyhteydet
- ping testaa verkkoyhteyden toiminnan
- tracert diagnosoi verkkoyhteyksiä
- ipconfig näyttää verkkokonfiguraation
UNIX Command Line Tools For MS-Windows XP / Vista / 7 Operating Systems
Käyttäjien kommentit