1. Johdanto
Tämä materiaali pohjautuu ITKP1010-kurssin Unix-komentoriviosioon. Oppimateriaalin tarkoitus TIMissä on antaa pikaintro komentoriville niille, jotka eivät aiemmin ole tutustuneet Unix-komentoriviin. Oppimateriaali toimii myös kertausmateriaalina niille, jotka sitä saattavat tarvita myöhemmillä tietotekniikan kursseilla (esim. Ohjelmointi 1,2; Web-ohjelmointi, Käyttöjärjestelmät).
1.1 Opiskelun aluksi
Oppimateriaali on tarkoitettu käytäväksi läpi luku kerrallaan. Tämä on suositeltavaa, varsinkin jos komentorivi ei ole ennestään tuttu. Luvussa 1 johdatellaan aiheeseen. Viimeistään luvun yksi jälkeen ota käyttöön omalle koneellesi Unix-komentorivi.
Alkaen luvusta 3 seurataan tarinaa tietotekniikan fuksista Karosta. Tarinakappaleiden on tarkoitus johdatella lukijaa osion teoriaan ja konkretisoida opittavia asioita.
Oppimateriaaliin on kopioitu esimerkeiksi paljon otteita komentoriviltä.
Esimerkki 1
kayttaja@omakone:~/itkp1010$ ls -l
total 16
-rw-r--r-- 1 kayttaja ryhma 4 Apr 28 09:22 demo.txt
drwxr-xr-x 2 kayttaja ryhma 4096 Apr 27 14:24 demot
-rwxrwxr-- 1 kayttaja ryhma 4 Apr 28 09:22 essee.txt
drwxr-xr-x 2 kayttaja ryhma 4096 May 11 09:10 ohjaukset
kayttaja@omakone:~/itkp1010$
Esimerkissä 1 näet tyylin, jolla komentoriviä esitellään materiaalissa. Vasemmassa laidassa numerot 1-7 ovat jälkikäteen lisättyjä rivinumeroita helpottamaan kuvan hahmottamista. Näitä ei näy komentorivillä, kun itse käytät sitä!
Komentoriviosiossa on materiaalin joukossa käytetty erilaisia laatikoita. Väristä ja logosta riippuen niillä on kullakin oma tarkoitus. Sinisellä pohjalla olevat laatikot ovat tarkoitettu kaikkien tutustuttavaksi, niissä on vinkkejä, videoita ja interaktiivista kuvamateriaalia. Tähtilaatikot ovat lisämateriaalia, joilla voit halutessasi syventää oppimistasi. Tähtilaatikoiden sisältöjen osaamista ei testata tentissä.
Nämä ovat vinkkejä. Ilman näitä pärjää, mutta näihin on hyödyllistä tutustua!
Nämä ovat lyhyitä videoita osion asioista. Katso video ja tee siihen liittyvät tehtävät!
Nämä ovat lisätietoa, jotka ovat tarkoitettu asiasta kiinnostuneille!
1.2 Mikä komentorivi on?
Komentorivityöskentely on tietokoneen käskyttämistä tekstillä. Tähän asti olet ehkä tavallisesti käskyttänyt tietokoneita klikkailemalla kuvakkeita.
Nykyaikana graafisista ohjelmista tietokoneella ja erityisesti älypuhelimissa toiminnot yritetään tehdä mahdollisimman intuitiivisiksi. Ohjelman käytön pitäisi luonnistua viisivuotiaalta, joka avaa äpin ensimmäisen kerran. Rajoitteena näissä laitteissa on se, että ne ovat hyviä korkeintaan niissä asioissa, joita varten ne on suunniteltu. Komentorivi toisaalta on aluksi vaikeasti lähestyttävä musta laatikko (macOS:ssä riippuu järjestelmän väriasetuksista), joka ei tarjoa mitään apua liikkeelle lähtöön. Mestarin käsissä komentorivi säästää tuntikaupalla työaikaa.
Komentorivin kohdalla pätee vanha sananlasku: "Alku aina hankalaa, lopussa kiitos seisoo."
1.3 Kuka komentoriviä käyttää, miksi ja mihin?
Komentoriviä käyttävät laajasti monet tietotekniikan ammattilaiset. Komentorivin käyttöön on monia syitä. Annetaan yhden ammattilaisen kertoa omat vastauksensa näihin kysymyksiin:
"Ohjelmistokehittäjänä teen käytännössä kaiken paitsi webin selaamisen Linuxin komentoriviltä. Editoin tekstiä, käännän ja pyöritän ohjelmia, käytän versionhallintaa, hallinnoin palvelimia jne. Miksi? Nopeus, automaatio ja ergonomia. Kaikki työkalut ovat koko ajan käden ulottuvilla, pitää vain tietää niiden nimet. Tehtäviä on helppo ja nopea toistaa komentohistorian avulla ja automatisoida skripteillä. Myös toisten neuvominen tekstichateissa on helpompaa ja skriptejä voi jakaa muiden hyödyksi. Näppäimistön käyttö rasittaa käsiä vähemmän kuin hiiren ja on hyvin harjoiteltuna moninkertaisesti nopeampaa. Lisäksi etäkäytettävillä koneilla kuten palvelimilla ei yleensä ole edes mahdollisuutta käyttää mitään muuta. Ja Vim on paras tekstieditori ;)" — Software developer, yliopiston tietotekniikan laitoksen kasvatti
Koska komentoriviltä annetaan yksikäsitteisiä komentoja peräkkäin, mahdollistaa tämän yhden komentorivin tärkeimmän ominaisuuden: automatisoinnin. Samat käsin kirjoitettavat komennot voidaan kirjoittaa "skriptitiedostoon" ja suorittaa suurempi sarja komentoja yhdellä käskyllä.
1.4 Mitä osaan tehdä komentorivillä opiskeltuani tätä oppimateriaalia?
- Osaat käyttää käyttöjärjestelmästäsi riippumatta koneellasi Unix-komentoriviä. (Unix-shellin käyttöönotto)
- Tiedät mistä osista komento rakentuu. (Luku 2)
- Hahmotat tietokoneen hakemistorakenteen ja osaat navigoida hakemistosta toiseen. (Luku 3)
- Tiedät mitä eroa on hakemistolla ja tiedostolla. (Luku 4)
- Osaat luoda hakemistoja ja tiedostoja. (Luku 4)
- Osaat nimetä hakemistot ja tiedostot hyvin. (Luku 6.4)
- Osaat siirtää, kopioida ja poistaa hakemistoja ja tiedostoja. (Luku 5)
- Osaat hyödyntää komennoissa korvausmerkkejä '?' ja '*'. (Luku 6)
- Tiedät, mitä putkitus on ja miten sitä hyödynnetään. (Luku 7)
- Osaat hallita hakemistojen ja tiedostojen käyttöoikeuksia. (Luku 8)
1.5 Hakemistorakenteen luonti
Materiaaliin on ripoteltu komentorivi-ikkunoita, joilla voit testata uusia komentoja. Jotta kulkisit samaa tietä oppimateriaalin kanssa, aja ensin alla oleva ikkuna, joka luo sinulle esimerkkien mukaiset hakemistot ja tiedostot.
1.6 Komentorivisanasto
2. Mistä komento rakentuu?
Jotta Karo voi ottaa komentorivin käyttöön, on hänen ymmärrettävä komennon rakenne. Hän on nähnyt, että komento voi olla monta sanaa pitkä ja sisältää monenlaisia merkkejä vaakaviivasta tolppaan ja lainausmerkeistä kysymysmerkkeihin. Sen verran hän jo tietääkin, että enteristä komento “käynnistyy” ja sitten kone suoltaa tekstiä takaisin – mutta ei edes aina. Nyt on aika selvittää komentojen syntaksi, eli mikä komennon eri osien tehtävä on.
2.1 Komentorivi
Tämän luvun aluksi käydään läpi komentojen syntaksi. Eli miten komennot syötetään ja millaisista osista komento muodostuu. Varmista aluksi, että olet ottanut käyttöön Unix-komentorivin.
Kun aloitat komentorivin käytön, alkunäkymä riippuu hieman käyttämästäsi järjestelmästä. Riippumatta järjestelmästä UNIX-komennot toimivat kuitenkin samalla tavalla.
Kun avaat komentorivin (Ubuntu), komentokehote voi näyttää tältä:
kayttaja@omakone:~$
Alkuosa kertoo siis käyttäjätunnuksesi, @
-merkin jälkeinen "omakone" kertoo käyttämäsi koneen nimen ja kaksoipisteen jälkeinen osa kertoo sijaintisi hakemistorakenteessa. ~
viittaa kotihakemistoosi (luku 3.1). Nämä tiedot voivat vaihdella. Ennen kaksoispistettä voi olla muitakin tietoja ja sijaintitieto muuttuu sitä mukaan, kun liikut hakemistorakenteessa. Komentokehote päättyy useimmiten joko %
- tai $
-merkkiin. Tätä näkymää sanotaan termillä "hopute", eli se kehoittaa käyttäjää kirjoittamaan. CMD-näkymässä hoputemerkki olisi >
.
Nyt voit ruveta kirjoittamaan komentoja komentoriville. Komento suoritetaan, kun painat enteriä.
2.2 Komennon osat
Komento koostuu yleensä muustakin kuin pelkästä komennosta tai komentosanasta. Tyypillisesti komentosanan lisäksi kokonaisessa komennossa voi valitsimia ja parametreja.
komento -valitsin parametri
Komennon perään on aina laitattava rivinvaihto (enter
, return
). Ilman sitä komentoa ei aleta suorittamaan, koska ei voida tietää haluaisiko käyttäjä vielä kirjoittaa lisää.
Komennot aluksi voivat tuntua kryptisiltä, mutta pitää muistaa että ne ovat yleensä aina lyhenteitä jostakin sanasta tai lauseen osasta. Ymmärtämällä mistä komento on lyhenne, on komento helpompi muistaa. Jos jonkin esiteltävän komennon kohdalta puuttuu tuo mistä komennon nimi on kotoisin, laita siihen kohti kommentti, niin lisätään se tieto :-)
Seuraavaksi esitellään muutamia esimerkkejä komennoista. Nämä komennot opetellaan myöhemmin tässä materiaalissa. Niiden kokeilemisesta tässä vaiheessa ei ole haittaa, mutta muista, että komentorivillä ei kannata suorittaa mitään komentoa, josta et tiedä mitä komento tekee!
2.3 Komennon kirjoittaminen:
Harjoitellaan komentojen kirjoittamista komentoriville. Vaikka yleinen ohje on, että komentoriville kirjoitettaessa pitää tietää mitä tekee, niin seuraavissa harjoitteissa annat muutaman mystisen komennon komentoriville ja komentorivi suoltaa vaikeaselkoista tekstiä takaisin. Jos et pidä tällaisesta sokeasta kokeilusta, niin voit ennakkoon tutustua komentoihin ja niiden merkityksiin luvussa 8.3.
Huomaa, että seuraavat komennot toimivat vain tietyissä Linux-käyttöjärjestelmissä. Kurssilla suosittelemamme Ubuntu on yksi tällainen järjestelmä. Alla olevat komennot eivät toimi Macillä. Yliopiston suorakäyttökoneilla näiden komentojen suorittamiseen sinulla ei ole riittävästi oikeuksia! Suorakäyttökoneiden, Git Bash sekä Macien käyttäjät voivat siirtyä kohtaan 2.4.
2.3.1 Ensimmäinen komento
Seuraavissa esimerkeissä päivitetään käyttöjärjestelmä.
Avaa käyttöönottamasi Unix-komentorivi. Kirjoita komentoriville
sudo apt update
ja paina enteriä. Syötä salasanasi pyydettäessä. Ole tarkkana sillä salasanan kirjoittamisen aikana ruudussa ei yleensä näy mitään. sudo
tulee lauseesta superuser do. apt
on Linuxin valmis ohjelma Advanced package tool
.
Esimerkki 1
kayttaja@omakone:~$ sudo apt update
[sudo] password for kayttaja:
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:27 http://security.ubuntu.com/ubuntu focal-security/multiverse Translation-en [4316 B]
Fetched 4550 kB in 11s (404 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
33 packages can be upgraded. Run 'apt list --upgradable' to see them.
kayttaja@omakone:~$
Esimerkissä 1:
- Rivillä 1 annetaan komento
sudo apt update
- Rivillä 2 vaaditaan salasanaa sudo komennon käyttöä varten
- Riveillä 3-10: apt-komento tekee töitään ja kertoo edistymisestään. Näitä tekstejä ei tarvitse tarkemmin ymmärtää.
- Rivillä 11 komentorivi on valmis ottamaan vastaan uuden komennon.
Hienoa, nyt olet tehnyt jotain komentorivillä! Edellinen komento on kuitenkin vasta ensimmäinen askel kaksiosaisessa projektissa. Kirjoitetaan samat kaksi sanaa (sudo apt
), mutta tällä kertaa korvataan viimeinen parametri (update) parametrillä upgrade. Kirjoita komentoriville
sudo apt upgrade
ja paina enteriä. Jos edellisestä sudo-komennon käytöstä on alle viisi minuuttia, niin sinulta ei pyydetä salasanaa. Vastaa kyllä y
, kun kysytään, haluatko jatkaa (Esimerkki 2, rivi 14). Usein noissa kysymyksissä esitetään vaihtoehdot kysymyksen perässä. Se vaihtoehto joka tulisi valittua painamalla pelkkä Enter merkitään yleensä isolla, eli sitä ei tarkoitus kirjoittaa isolla.
Esimerkki 2
kayttaja@omakone:~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
distro-info
The following packages will be upgraded:
alsa-ucm-conf apport bind9-dnsutils bind9-host bind9-libs cloud-init
ubuntu-advantage-tools ubuntu-release-upgrader-core
33 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 6818 kB of archives.
After this operation, 2531 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 open-iscsi amd64
2.0.874-7.1ubuntu6.2 [283 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 initramfs-tools-core all
0.136ubuntu6.5 [47.7 kB]
Setting up bind9-libs:amd64 (1:9.16.1-0ubuntu2.8) ...
Processing triggers for initramfs-tools (0.136ubuntu6.5) ...
kayttaja@omakone:~$
Esimerkissä 2:
- Rivillä 1 annetaan komento sudo apt upgrade
- Riveillä 2-13 ohjelma kertoo, mitä on tekemässä
- Rivillä 14 kysytään, haluatko jatkaa. Vastaa y (Yes, kyllä)
- Riveillä 15-20 ohjelma taas raportoi tekemisistään
- Rivillä 21 komentorivi on taas valmis uuteen komentoon
Hienoa, nyt olet päivittänyt järjestelmäsi! Mikä tärkeämpää, olet kirjoittanut komentoriville komentoja ja tietokone on toiminut antamiesi komentojen mukaan. Näin komentorivi toimii, aluksi yksi komento kerrallaan. Tulevissa osioissa opit useita perustason komentoja. Samalla varmuutesi käyttää komentoriviä kasvaa. Jatkossa saat jopa tietää etukäteen, mitä antamasi komennot tekevät.
2.4 Tulostuksen lukemisesta:
Sen lisäksi, että osaat kirjoittaa komentoja, on osattava lukea komentorivin antamia tulosteita. Harjoitellaan sitä seuraavaksi. Tulosteet sisältävät usein paljon informaatiota, yleensä enemmän kuin tarpeeksi. Oleellisten asioiden bongaamiseen harjaantuu ajan mittaan, mutta tutustutaan tässä osiossa tarkemmin tulosteeseen, joka sisältää tietoja tiedostoista ja hakemistoista. Itse hakemistorakenteeseen tutustutaan paremmin luvussa 3. Listaa erään hakemiston sisältö kirjoittamalla komentoriville:
ls -l
ja paina enteriä
Tämä komento "ajatellaan" listaa listamuodossa
eli list as list, sieltä tuo ls
ja l
. Viiva tarkoitti option (valitsimen, valinnan) merkkiä. Kokeile miltä sama tuloste näyttää ilman -l
.
Jos tahdot hyödyntää materiaalin komentorivi-ikkunoita, niin varmista, että olet luonut hakemistorakenteen ajamalla johdantokappaleen ikkunan.
Tulosteesi on erilainen, kuin alla olevan esimerkkikuvan, mutta tuloste on jaettu samoihin lohkoihin. Vertaa tulostettasi mallikuvaan.
Esimerkki 3
Esimerkissä 3:
- Lohko 1: Ensimmäinen merkki kertoo, onko kyseessä tiedosto (-) vai hakemisto (d). Loput merkit liittyvät käyttöoikeuksiin, josta kerrotaan luvussa 8.1.
- Lohko 2: Kertoo tiedoston tai hakemiston omistajan. Jälleen luku 8.1 tarkentaa.
- Lohko 3: Kertoo ryhmän, johon tiedosto tai hakemisto kuuluu. (luku 8.1). Omissa tiedostoissasi kayttaja ja ryhmä ovat todennäköisesti samoja.
- Lohko 4: Tässä kerrotaan tiedoston tai hakemiston koko tavuina.
- Lohko 5: Tiedoston tai hakemiston viimeinen muokkauspäivä. Huomioi, että tänä vuonna muokkaamasi tiedostot kertovat vuoden sijaan kellonajan. (esim.
kaappaaKuva.txt
) - Lohko 6: Tiedoston tai hakemiston nimi.
Laatikoimattomien lukujen merkitystä ei tarvitse tämän materiaalin aikana ymmärtää.
Ensimmäisen rivin total 256 liittyy tiedostojen ja hakemistojen viemään levytilaan. Lukulohkon, jota ei ole laatikoitu (numeroitujen ykkösen ja kakkosen välissä), merkitys selitetään Wikipediassa.
2.5 Huomioi kirjoittaessasi komentoja:
- Komentojen osien väliin tulee välilyönnit.
- Isot ja pienet kirjaimet ovat eri asia. Komennon merkitys muuttuu, jos kirjoitat väärän kokoiset kirjaimet.
- Jotkin komennot eivät onnistuneen suorituksen jälkeen ilmoita mitään. Virheistä saat aina ilmoituksen.
- Älä suorita komentoja, jos et tiedä mitä se tekee! Esimerkiksi komentorivillä ei ole roskakoria, poistettua asiaa et saa takaisin!
3. Hakemistorakenne
Nyt kun Karo osaa komentaa konettaan, niin hän voi aloittaa valmistelunsa opiskeluja varten: On aika miettiä, miten eri kurssien tehtävät ja muut tallennetaan. Puhelimella WhatsApp-kuvat, näyttökuvat ja kameran kuvat ovat omissa lokeroissaan. Lukiossa käytetyllä pilvipalvelulla kunkin kurssin tehtävät tallennettiin omaan kansioonsa. Komentorivillä puhutaan kansioiden sijaan hakemistoista. Karo päättää luoda haluamansa hakemistorakenteen, jonka hän ensin paperille hahmottelee. Kaikki opiskeluihin liittyvä saa mennä ‘opiskelu’-hakemistoon. Jotta asiat pysyisivät järjestyksessä, niin Karo haluaa kullekin kurssille oman alihakemiston. Komentorivillä työskenneltäessä ollaan aina jossain kansiossa. Ennen hakemistorakenteen luomista Karon tuleekin selvittää, miten hakemistoihin viitataan ja miten hakemistorakenteessa liikutaan.
3.1 Hakemistot
Hakemistolla tarkoitetaan paikkaa, johon on tallennettu erilaisia tiedostoja. Graafisessa käyttöliikkumisessa hakemistoja kuvataan kansioilla eli graafisessa maailmassa hakemisto ja kansio ovat käytännössä sama asia. Alla olevissa termeissä esimerkkeinä on käytetty ohessa löytyvän graafisen kansiorakenteen kansioita.
Kotihakemisto on se oletushakemisto, johon käyttäjä päätyy komentoriville kirjautuessaan. Kotihakemistoa kuvataan tildellä (~).
Työhakemisto tai oletushakemisto on taas hakemisto, jossa työskennellään. Sitä voidaan kuvata myös pisteellä (.).
- Esimerkki: Kuvassa valittuna on ITKP1010 eli tässä työskennellään tuolla asemalla.
Alihakemistolla tarkoitetaan hakemistoa, joka on luotu toisen hakemiston sisään.
- Esimerkki: Kuvassa kansio "itk1010_digitaalisen_osaamisen_perusteet" on alikansio kansiolle opiskelu.
Ylähakemisto on se hakemisto, jossa alihakemisto sijaitsee. Siihen viitataan kahdella pisteellä (..).
- Esimerkki: Kuvassa kansion "itkp1010_digitaalisen_osaamisen_perusteet" ylähakemisto on kansio opiskelu.
Juurihakemisto on hakemistorakenteen ylin piste. Siihen viitataan kauttaviivalla (/).
- Esimerkki: Windowsissa ei puhuta samalla tavalla juurihakemistoista, joten sitä ei ole esimerkkikuvassa.
Yllä olevat erityyppiset hakemistot sisältöineen muodostavat hakemistorakenteen, josta graafisella puolella voidaan käyttää myös nimitystä kansiorakenne.
Komentorivillä hakemistorakennetta kuvataan usein ns. puurakenteella (tree). Alla on kuvattu edellä esiteltyä graafista esimerkkiä vastaava hakemistorakenne puumuodossa. Nyt puu alkaa ylimmällä rivillä, jossa on vain piste(.). Tämä on siis oletushakemisto, joka graafisella puolella vastasi ITKP1010 -asemaa. Hakemisto opiskelu
on nyt oletushakemiston alihakemisto ja niin edelleen.
.
└── opiskelu
├── itkp102_ohjelmointi1
│ ├── demo1
│ ├── demo2
│ └── harjoitystyo
├── itkp1010_digitaalisen_osaamisen_perusteet
├── itkp1011_web_julkaiseminen
│ ├── harjoitustyo
│ └── paateohjaus
└── itky100_yliopisto-opiskelu
Jos tietokoneen hakemistorakenne ali- ja ylähakemistoineen tuntuu etäiseltä, niin voit lukea alla asiaa havainnollistavan kirjasto-vertauksen. (Lainattu vanhan työvalinekurssin materiaalista.)
Hakemisto (eng. Directory) on paikka, jossa tiedostot sijaitsevat (todellinen fyysinen tilanne levyllä ei ole tällainen, mutta ulospäin tilanne näyttää tältä). Hakemistoa voi verrata vaikkapa kirjastoon.
Kirjastossa on tallennettavina tietoina kirjoja. Jotta kirjojen hallinta olisi mahdollista, on ne jaoteltu eri luokkiin aiheen mukaan (historia, yleisteokset, tekniikka, jne.). Kun kirjastoon tulee esimerkiksi uusi 1800-luvun Eurooppaa käsittelevä kirja, niin se viedään kirjan asiasisällön mukaisesti luokkaan historia. Jälkeenpäin ko. kirja on löydettävissä vain ja ainoastaan ko. luokan hyllystä.
Samoin toimitaan hakemistojen yhteydessä. Levylle luodaan jonkinlainen jaottelu, esimerkiksi tehdään hakemistot pelit, tekstit ja huuhaa. Jos meillä on tallennettavana vaikka ohjelma nimeltä shakki.exe, niin sen todennäköisin tallennuspaikka olisi hakemisto pelit.
Kirjastossa on sen verran paljon kirjoja, jotta pelkkä luokkiin jako ei riitä. Esimerkiksi historian kirjoja on niin paljon, että niiden hallinta ei ole mielekästä pelkän tekijän nimen mukaisesti. Siksi kirjastossa on luokat jaettu aliluokkiin. Esimerkiksi historia on jaettu aliluokkiin Suomi, Eurooppa, Antiikki, jne. Näin ollen 1800-luvun Eurooppaa käsittelevä kirja laitettaisiin luokkaan historia ja sen aliluokkaan Eurooppa.
3.1.1 Komennot pwd ja ls
Jos haluat tarkistaa tarkan polun, missä hakemistossa työskentelet voit tehdä sen komennolla pwd
(print the current working directory).
Hakemiston sisällön voi tarkistaa komennolla ls
. Myöhemmin voit tarvita tarkempia tietoja hakemiston sisällöstä (esim. käyttöoikeudet). Näitä voidaan tarkistaa, kun annat ls
-komennolle valitsimen -l
(list
, listamuoto, tiedot pitkästi) tai -a
(all
, kaikki, näytä myös piilotiedostot ja -hakemistot). Valitsimet voi myös yhdistää ja seuraavat komennot tekevätkin täysin saman asian:
ls -a -l
ls -l -a
ls -al
ls -la
Esimerkkir 3.1
Esimerkissä 3.1 tarkistetaan työhakemiston tarkka polku komennolla pwd.
Esimerkki 3.2
kayttaja@tietokone:~/opiskelu $ ls
itkp1010_digitaalisen_osaamisen_perusteet itkp102_ohjelmointi1
maty010_matematiikan_propedeuttinen itkp1011_web-julkaiseminen
itky100_yliopisto-opiskelu tiep175_tietokoneavusteinen_laskenta
demo.txt
kayttaja@tietokone:~/opiskelu $ ls -la
total 32
drwxr-xr-x 8 kayttaja ryhma 4096 Apr 12 05:19 .
drwxr-xr-x 7 kayttaja ryhma 4096 Apr 12 05:46 ..
drwxr-xr-x 2 kayttaja ryhma 4096 Apr 12 05:19 itkp1010_digitaalisen_osaamisen_perusteet
drwxr-xr-x 4 kayttaja ryhma 4096 Apr 12 05:19 itkp1011_web-julkaiseminen
drwxr-xr-x 5 kayttaja ryhma 4096 Apr 12 05:19 itkp102_ohjelmointi1
drwxr-xr-x 2 kayttaja ryhma 4096 Apr 12 05:19 itky100_yliopisto-opiskelu
drwxr-xr-x 2 kayttaja ryhma 4096 Apr 12 05:19 maty010_matematiikan_propedeuttinen
drwxr-xr-x 2 kayttaja ryhma 4096 Apr 12 05:19 tiep175_tietokoneavusteinen_laskenta
-rwxr-xr-x 1 kayttaja ryhma 47 Apr 12 05:19 demo.txt
kayttaja@tietokone:~/opiskelu $
Esimerkissä 3.2:
- Ensimmäisellä rivillä listataan hakemiston sisältö komennolla
ls
. - Rivillä 6 listataan hakemiston sisältö laajemmin komennolla
ls -la
. - Kuvassa näkyvät
kayttaja
jaryhma
viittaavat hakemistojen ja tiedostojen omistusoikeuksiin. Näihin perehdytään paremmin luvussa 8.
Esimerkki 3.3
kayttaja@tietokone:~/opiskelu $ ls -l /
total 684
lrwxrwxrwx 1 root root 7 Feb 20 01:48 bin -> usr/bin
drwxr-xr-x 2 root root 4096 Feb 20 01:56 boot
drwxr-xr-x 8 root root 2720 Apr 29 08:32 dev
drwxr-xr-x 95 root root 4096 Apr 29 08:32 etc
drwxr-xr-x 4 root root 4096 Mar 26 08:33 home
-rwxr-xr-x 2 root root 632048 Mar 17 00:24 init
lrwxrwxrwx 1 root root 7 Feb 20 01:48 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Feb 20 01:48 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 Feb 20 01:48 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 Feb 20 01:48 libx32 -> usr/libx32
drwx------ 2 root root 16384 Apr 10 2019 lost+found
drwxrwxrwt 2 root root 4096 Apr 28 16:59 tmp
drwxr-xr-x 14 root root 4096 Feb 20 01:50 usr
Esimerkissä 3 on ote juurihakemiston (/) sisällöstä.
3.2 Viittaukset
Viittaus on hieno tapa sanoa, että jokin osoittaa johonkin. Peruskoulussa opit, että "joka" viittaa edelliseen sanaan ja "mikä" viittaa edelliseen lauseeseen. Komentorivillä viittaat tiedostoihin ja hakemistoihin. Viittaus on tapa kertoa koneelle, mihin tiedostoon tai hakemistoon haluat komennon osoittaa. Tässä luvussa viittaamista harjoitellaan komennolla cd
, jolla vaihdetaan työhakemistoa.
Viittauksia on kahden tyyppisiä: suhteellisia ja absoluuttisia. Tutustutaan ensin suhteelliseen viittaukseen.
3.2.1 Suhteellinen viittaus
Suhteellinen viittaus on nimensä mukaisesti suhteellinen. Tällainen viittaus viittaa aina johonkin paikkaan suhteessa oletushakemistoon eli siihen hakemistoon, jossa olet. Eri oletushakemistoista pitää siis viitata eri tavalla, jos halutaan päätyä samaan hakemistoon tai tiedostoon.
Hakemiston sisällä oleviin objekteihin voidaan viitata yksinkertaisesti niiden nimillä. Viittaus hakemistoon on hakemiston nimi ja /-merkki. Kauttaviivaa ei tyypillisesti edes tarvitse, koska komentokehote osaa sen täydentää automaattisesti. Hakemistossa olevaan tiedostoon viitataan tiedoston nimellä.
Hakemiston alihakemistossa oleviin tiedostoihin ja hakemistoihin viittaus rakentuu ensin alihakemiston nimestä ja kautta merkistä. Loppu osa toimii samoin kuin oletushakemistosta viitatessa. Esimerkiksi itkp1010/demo.txt
on viittaus oletushakemiston alihakemistossa itkp1010 olevaan demo.txt-tiedostoon.
Hakemiston ylähakemistoon voidaan viitata ../
-merkinnällä. Jos halutaan liikkua ylähakemiston ylähakemistoon lisätään vain toinen ../
eli ylähakemiston ylähakemistoon viittaus olisi ../../.
Näin voidaan jatkaa hakemistorakenteessa ylöspäin niin pitkälle, kuin rakennetta riittää.
Esimerkki 3.4
kayttaja@tietokone:~/opiskelu $ ls
itkp1010_digitaalisen_osaamisen_perusteet itkp102_ohjelmointi1
maty010_matematiikan_propedeuttinen itkp1011_web-julkaiseminen
itky100_yliopisto-opiskelu tiep175_tietokoneavusteinen_laskenta
kayttaja@tietokone:~/opiskelu $ cd itkp102_ohjelmointi1/
kayttaja@tietokone:~/opiskelu/itkp102_ohjelmointi1 $ cd ../itky100_yliopisto-opiskelu/
Esimerkissä 3.4 liikutaan:
- Rivillä 4 suhteellisen viittauksen avulla
itkp102_ohjelmointi1
-hakemistoon
- Rivillä 5
itky100_yliopisto-opiskelu
-hakemistoon. Tässä viittauksessa ensin täytyy kertoa../
, jotta siirrytään takaisin ylähakemistoon ja sitten mihin ylähakemiston alihakemistoon halutaan.
Tutki suhteellista viittausta tarkemmin alla olevalla Tommi Lahtosen relativetoolin avulla:
Suhteellisen viittauksen tehtavat
3.2.2 Absoluuttinen viittaus
Absoluuttisia viittauksia käytettäessä täytyy tietää haluttu polku kokonaan. Absoluuttinen viittaus, johonkin tiettyyn hakemistoon tai tiedostoon pysyy aina samana. Eli riippumatta missä hakemistossa ollaan, absoluuttinen viittaus johtaa aina samaan paikkaan. Absoluuttista viittausta varten tarkka polku tulee tietää tai se pitää tarkistaa pwd
-komennolla, joka kertoo oletushakemiston tarkan polun.
Absoluuttinen viittaus aloitetaan joko / (eli juurihakemistosta, hakemistorakenteen korkeimmasta kohtaa) tai kotihakemistosta ~.
Esimerkki 3.5
kayttaja@tietokone:~/opiskelu $ ls
itkp1010_digitaalisen_osaamisen_perusteet itkp102_ohjelmointi1
maty010_matematiikan_propedeuttinen itkp1011_web-julkaiseminen
itky100_yliopisto-opiskelu tiep175_tietokoneavusteinen_laskenta
kayttaja@tietokone:~/opiskelu $ pwd
/home/kayttaja/opiskelu
kayttaja@tietokone:~/opiskelu $ cd /home/kayttaja/opiskelu/itkp102_ohjelmointi1/
kayttaja@tietokone:~/opiskelu/itkp102_ohjelmointi1 $ cd ~/opiskelu/itky100_yliopisto-opiskelu/
kayttaja@tietokone:~/opiskelu/itky100_yliopisto-opiskelu $
Esimerkissä 5:
- Rivillä 5
pwd
-komennolla tarkistetaan opiskelu-hakemiston tarkka polku. - Rivillä 7 rakennetaan viittaus juuresta lähtien hakemistoon itkp102_ohjelmointi1-hakemistoon. Suhteellisella viittauksella tässä kohtaa olisi riittänyt vain viittaus
itkp102_ohjelmointi1
. - Rivillä 8 itky100_yliopisto-opiskelu-hakemistoon liikutaan absoluuttisella viittauksella alkaen kotihakemistosta. Tässä kohtaa voidaan päätellä, että hakemisto: "kayttaja" on kotihakemisto.
Useimmiten voi oman valinnan mukaan käyttää suhteellisia tai absoluuttisia viittauksia. Kummallakin pystyy viittaamaan komentorivi-kontekstissa lähes joka tapauksessa. Kumpaa tapaa käyttää on usein omaa mieltymystä. Joissain tapauksissa toinen tapa viitata on helpompi tai nopeampi. Esimerkiksi työhakemistosta alikansioon siirtyminen tai muu hyvin lähelle hakemistorakenteessa siirtyminen on nopeaa tehdä suhteellisella viittauksella, kuten huomattiin yllä esimerkissä 3.4.
Näitä tilanteita oppii pikkuhiljaa, joten alkuun on hyvä oppia molemmat tavat ja varsinkin opetella tunnistamaan kummalla tavalla viittaus on tehty.
3.3 Liikkuminen hakemistorakenteessa
Oletushakemistosta voidaan siirtyä kansiosta toiseen komennolla cd
(change directory
). Komennon lisäksi tarvitset parametriksi viittauksena kohteen, minne liikutaan.
kayttaja@omakone:~$ ls
itkp1010 itkp1011
kayttaja@omakone:~$ cd itkp1010/
kayttaja@omakone:~/itkp1010$ ls
demot essee.txt harkka harkka.txt kirjoitelma.txt
kayttaja@omakone:~/itkp1010$ cd ../
kayttaja@omakone:~$ ls itkp1010 itkp1011
kayttaja@omakone:~$ cd ~/itkp1010
kayttaja@omakone:~/itkp1010$ ls
demot essee.txt harkka harkka.txt kirjoitelma.txt
kayttaja@omakone:~/itkp1010$ cd ~
kayttaja@omakone:~$ ls
itkp1010 itkp1011
Esimerkissä 6 liikutaan:
- Ensin rivillä 3
itkp1010
-hakemistoon, jonka jälkeen siirrytään takaisin ylähakemistoon rivillä 6. - Rivillä 8 liikutaan takaisin
itkp1010
-hakemistoon erilaisella viittauksella, joka jälkeen siirrytään kotihakemistoon viittaamalla tildeen rivillä 11. - Jokaisessa välissä tarkistetaan
ls
-komennolla hakemiston sisältö.
Tästä esimerkistä voidaan tehdä muutama huomio:
- Samaan hakemistoon voidaan päästä usealla eri tavalla viittaamalla.
- Kun viitataan hakemistoon, hakemiston perään kuuluu kauttaviiva (/), kuten esimerkin rivillä kolme. Tämä voidaan jättää kuitenkin pois, koska komentotulkki osaa tulkata sen riville automaattisesti. Näin on tehty rivillä kahdeksan.
- Tässä esimerkissä ylähakemisto
itkp1010
-hakemistolle ja kotihakemisto ovat samat. Tämän takia kotihakemistoon päästiin sekä viittaamalla tildeen että ylähakemistoon. Aina ei ole näin.
yllä olevan laatikon tulostus oli: opiskelu run shell jne.
en tiedä mistä pitäisi saada tuo tuloste itkp102_ohjelmointi
—Vastaus ylempään kommenttiin: Tulosteen perusteella (opiskelu,run,...) laatikossa on oletuskomennot, joita voi lähteä muokkaamaan aiempien kappaleiden avulla.
Tarkoituksena on siis itse harjoitella hakemistorakenteessa liikkumista.
Komentorivin tehokkaaseen käyttöön hyödyllisiä pikanäppäimiä ovat Tab
(tabulaattori) sekä nuolet ylös ja alas. Tab täydentää automaattisesti aloitetun tekstin, jos hakemistosta löytyy vastaava teksti ja nuolilla pystyy selaamaan viimeksi käytettyjä komentoja.
4. Hakemistojen ja tiedostojen luominen
Nyt kun Karo on opetellut ja harjoitellut hakemistorakenteessa liikkumista suhteellisilla ja absoluuttisilla viittauksilla on hän valmis luomaan hakemistoja. Hän toteuttaa suunnitelmansa ja toteaa sitten kaikkien hakemistojen olevan tyhjää täynnä. Kyllä ne joskus täyttyvät, mutta lisätäkseen komentoriviosaamistaan Karo päättää myös opetella luomaan tiedostoja. Osoittautuu, että komentorivillä tiedostoja voi luoda useammalla kuin yhdellä tavalla.
4.1 Hakemiston luominen
Hakemistorakenteen ymmärtäminen ja luominen on ehkä komento-osiossa olennaisin osa. Unix-ympäristössä uuden hakemiston luomiseen tarvitset komennon mkdir
. Komennon lisäksi komennolle annetaan parametrina hakemistolle haluttu nimi.
Huom! Komennolla et voi luoda kahta saman nimistä hakemistoa. Jos yrität luoda hakemiston jo olemassa olevan hakemiston nimellä, saat siitä virheilmoituksen.
Esimerkiksi:
mkdir itkp1010
-komento luo "itkp1010"-nimisen hakemiston (make directory).
Esimerkki 1
kayttaja@omakone:~$ mkdir itkp1010
kayttaja@omakone:~$ ls
itkp1010 opiskelu
kayttaja@omakone:~$ mkdir itkp1010
mkdir: cannot create directory ‘itkp1010’: File exists
kayttaja@omakone:~$
Esimerkissä 1:
- Rivillä 1 luodaan
mkdir
komentoa käyttämällä uusi hakemisto nimeltäänitkp1010
. - Rivillä 2 tarkistetaan hakemiston luomisen onnistuminen. Tästä oletushakemistosta löytyy nyt luodun hakemiston lisäksi myös hakemisto opiskelu.
- Rivillä 4 yritetään luoda uudestaan samanniminen hakemisto
itkp1010
. - Rivillä 5 saadaan virheilmoitus, joka ilmoittaa, että hakemisto on jo olemassa.
4.2 Tiedoston luominen
Tiedostoja voidaan luoda monella tapaa. Pidemmät (enemmän tekstiä sisältävät) tiedostot kannattaa luoda jollakin tekstieditorilla (alla). Tulosteen ohjaus (4.4) voi puolestaan olla kätevä ratkaisu lyhyisiin, sanan tai muutaman sanan mittaisiin tiedostoihin tai tekstin lisäämiseen olemassa oleviin tiedostoihin.
4.3 Nano-tekstieditori
Nano-tekstieditori on yksinkertainen editori tekstin muokkaamiseen. Se löytyy valmiiksi asennettuna lähes kaikista Unix-pohjaisista järjestelmistä, kuten tässä materiaalissa suositellusta Ubuntusta. Nanoa voi käyttää suoraan komentoriviltä ja sen saa käyttöön antamalla komentorivillä komento: nano
. Komennolla voidaan avata suoraan olemassa oleva tiedosto antamalla parametriksi avattavan tiedoston nimi. Uutta tiedostoa luotaessa parametriksi voi suoraan antaa uudelle tiedostolle annettava nimi.
Yllä olevassa kuvassa on näkymä tyhjästä nano-editorista. Editorista löytyvät seuraavat asiat:
- Editorin nimi ja versio
- Alue tekstin kirjoittamiseen
- Työkaluvalikko
Työkaluvalikkoa ohjataan näppäinyhdistelmillä. Kaikkien valikosta löytyvien valinnat muodostuvat kahdesta merkistä. Aloittavina merkkeinä löytyy joko hattu (^), joka viittaa Ctrl-näppäimeen, tai meta (M), joka useimmissa näppäimistöissä tarkoittaa Alt- tai Esc-näppäintä. Tutki miten meta toimii sinun näppäimistössä!
Tärkeimpiä näppäinyhdistelmiä nanossa:
- Ctrl+X: poistuminen nanosta.
- Ctrl+K: Leikkaa
- Ctrl+U: Liitä
- Ctrl+O: Tallenna tiedosto
- Ctrl+R: Avaa tiedosto
- Ctrl+C: Peruuta
- Alt+6: Kopio
- Alt+U: Kumoa
- Alt+E: Tee uudelleen
Kun ole tehnyt haluamasi muokkaukset dokumenttiin ja yrität poistua dokumentista, nano varmistaa tallennetaanko muutokset. Tässä vaiheessa voi vielä muokata tiedoston nimeä. Tiedostoa nimetessä muista laittaa mukaan myös tiedostopääte. Tyypillinen nanolla käsiteltävä tiedostotyyppi on tekstitiedosto, jonka pääte on .txt. Jos nanolla vain tarkastelee tiedoston sisältöä, tekemättä muutoksia, Ctrl+X-näppäinyhdistelmä vie suoraan takaisin komentoriville.
Jos haluat tulla todelliseksi tekstinkäsittelyguruksi, niin kirjoita komentoriville vimtutor
ja anna palaa.
4.4 Tulosteen ohjaaminen
Tulosteen ohjaamiseen tarvitaan ensin keino luoda tulosteita ja sitten komento itse ohjaamiselle. Komento echo
tulostaa komennolle parametriksi annetun tekstin ruudulle. Tässä vaiheessa teksti näkyy vain ruudulla ja se ei tallennu minnekään.
Tuloste voidaan ohjata tiedostoihin käyttäen >
ja >>
-komentoja.
>
luo uuden tiedoston tai korvaa jo olemassa olevan, saman nimisen, tiedoston ja tulostaa annetun tekstin tiedostoon.>>
luo uuden tiedoston tai lisää annetun tulosteen olemassa olevan, saman nimisen, tiedoston perään.
Tulosteen ohjauksessa nuolien lisäksi tulee komennolle antaa parametriksi haluttu tiedoston nimi.
Huomioi, että komentorivi ei tässäkään sinua turhia hidastele. Jos päätät esimerkiksi kirjoittaa komennon echo rip > tosi_tarkea_dokumentti.pdf
, niin voit hyvillä mielin hyvästellä dokumentin aiemman sisällön iäksi.
Tässä yhteydessä tiedostojen sisällön nopeaan tarkasteluun kätevä komento on cat
(concatenate files, ketjuta tiedostot). Komento tarvitsee parametriksi halutun tiedoston nimen ja se tulostaa tiedoston sisällön näytölle.
Esimerkki 2
kayttaja@omakone:~/itkp1010$ ls
kayttaja@omakone:~/itkp1010$ echo tehtävä 1, kohta a
tehtävä 1, kohta a
kayttaja@omakone:~/itkp1010$ ls
kayttaja@omakone:~/itkp1010$ echo tehtävä 1, kohta a >demo.txt
kayttaja@omakone:~/itkp1010$ ls
demo.txt
kayttaja@omakone:~/itkp1010$ cat demo.txt
tehtävä 1, kohta a
kayttaja@omakone:~/itkp1010$ echo tehtävä 2 > demo.txt
kayttaja@omakone:~/itkp1010$ ls
demo.txt
kayttaja@omakone:~/itkp1010$ cat demo.txt
tehtävä 2
Esimerkissä 2 riveittäin:
- Tarkistetaan, että oletushakemisto on tyhjä.
- Tulostetaan komennolla "tehtävä 1, kohta a"-teksti.
- Edellisen rivin tuloste näkyy tällä rivillä. Tämä ei ole tiedosto, eikä tallennu mihinkään!
- Varmistetaan edellisen rivin tilanne ja huomataan, ettei hakemisto on edelleen tyhjä.
- Ohjataan nyt tuloste yhdellä väkäsellä (
>
) tiedostoon. - Tarkistetaan tilanne.
- Nyt tiedosto on syntynyt
- Tarkistetaan luodun tiedoston sisältö
cat
-komennolla. - Tiedoston sisältö tulostuu näytölle ja vastaa sitä, mitä tiedostoon ohjattiinkin.
- Ohjataan saman nimiseen tiedostoon uutta tekstiä.
- Tarkistetaan tilanne.
- Tiedoston nimi on sama, kuin rivillä seitsemän
- Tarkistetaan sisältö
cat
-komennolla - Huomataan, että sisältö on muuttunut ja edellinen sisältö on korvautunut rivillä 10 ohjatulla uudella tekstillä.
Esimerkki 3
kayttaja@omakone:~/itkp1010$ echo tehtävä 1 >> demo2.txt
kayttaja@omakone:~/itkp1010$ ls
demo.txt demo2.txt
kayttaja@omakone:~/itkp1010$ cat demo2.txt
tehtävä 1
kayttaja@omakone:~/itkp1010$ echo tehtävä 1 >> demo2.txt
kayttaja@omakone:~/itkp1010$ echo tehtävä2 >> demo2.txt
kayttaja@omakone:~/itkp1010$ ls
demo.txt demo2.txt
kayttaja@omakone:~/itkp1010$ cat demo2.txt
tehtävä 1
tehtävä 1
tehtävä2
Esimerkissä 3 riveittäin:
- Ohjataan kahdella väkäsellä (
>>
) teksti uuden nimiseen tiedostoon. Mikäli tiedosto olisi olemassa, menisi teksti sen loppuun. Jos käytetään yhtä väkästä (>
), toimisi ensimmäisellä kerralla samalla tavalla (eli loisi uuden tiedoston), mutta toisella kertaa korvaisi vanhan sisällön. - Tarkistetaan tilanne.
- Nyt hakemistossa on kaksi tiedostoa.
- Tarkistetaan myös
cat
-komennolla luotu tiedosto - Tiedoston sisältö tulostuu näytölle.
- Ohjataan kahdella nuolella 1. rivillä luotuun tiedostoon toinen sana.
- Ohjataan kahdella nuolella 1. rivillä luotuun tiedostoon kolmas sana.
- Tarkistetaan tilanne.
- Hakemistosta löytyy samat kaksi tiedostoa kuin rivillä kolme.
- Tarkistetaan
demo2.txt
:n sisältöcat
-komennolla. - Nyt tiedoston sisältö ei korvautunut, kuten yhden nuolen tapauksessa, vaan rivillä 6 tehty ohjaus ohjautui aiemman sisällön perään.
Tulostuksen ohjausta tehdessä pelkkä hakemiston sisällön tarkastelu ei vielä kerro, mitä tiedosto todella sisältää. Luotujen tiedostojen sisällön voi tarkistaa esimerkeissä käytetyllä cat
-komennolla tai nanolla antamalla luodun tiedoston nimi komennon parametriksi.
Onko tossa esimerkkilaatikossa rivit 5 ja 6 väärillä paikoilla?
VL: vaihdoin, mutta eikös tuossa ollut myös viimeinen tuloste väärin, kun siellä pitäisi olla sama rivi 2x.
—onko “lukea” oikea termi nanon kanssa?
—Tiedostoja voi lukea ja niihin voi (yli)kirjoittaa. Mielestäni on käypä termi.
—“tallentaa” on hämäävä koska esimerkissä sillä tallennettiin. KOko kysymys pitäisim uotoilla uudelleen niin että pelkkä komento echo ilman väkäsiä…
—Onko kysymys tällä muotoilulla epäselvempi?
—5. Hakemistojen ja tiedostojen siirtäminen, kopiointi ja poistaminen
Tiedostoja on luotu ja niin on hakemistojakin. Karolla kuitenkin herää huoli: Entä jos teenkin virheen ja luon jotain väärään paikkaan tai väärällä nimellä? Entä jos jokin tiedosto tai koko hakemisto onkin erityisen tärkeä ja haluan kopioida sen muualle turvaan? Mitä jos jokin nyt tarpeellinen tiedosto tulee jonain tulevana aikana täysin tarpeettomaksi ja siitä pitää päästä eroon? Onneksi komentorivillä voi sekä tiedoston, että hakemiston halutessaan siirtää, nimetä uudelleen, kopioida tai vaikka poistaa.
5.1 Siirtäminen ja uudelleen nimeäminen
Sekä tiedostojen ja hakemistojen siirtäminen että uudelleen nimeäminen tapahtuvat komennolla mv
(move).
Siirrettäessä parametreiksi tulevat siirrettävä tiedoston tai hakemiston nimi sekä polku, minne tiedosto siirretään. Siirto toimii vastaavasti kuin graafisessa maailmassa tiedoston leikkaaminen ja liittäminen jonnekin toiseen paikkaan. Alkuperäiseen sijaintiin ei siis jää tiedostoa.
Uudelleen nimettäessä Komennon parametreiksi tulevat nimettävän tiedoston tai hakemiston nimi ja tiedoston/hakemiston uusi nimi.
Esimerkki 1
kayttaja@omakone:~/itkp1010$ ls
demo.txt demo2.txt demot
kayttaja@omakone:~/itkp1010$ mv demo.txt harjoitus.txt
kayttaja@omakone:~/itkp1010$ ls
harjoitus.txt demo2.txt demot
kayttaja@omakone:~/itkp1010$ mv harjoitus.txt demot
kayttaja@omakone:~/itkp1010$ mv demo2.txt ~/itkp1010/demot
kayttaja@omakone:~/itkp1010$ ls
demot
kayttaja@omakone:~/itkp1010$ cd demot/
kayttaja@omakone:~/itkp1010/demot$ ls
harjoitus.txt demo2.txt
Esimerkissä 1:
- Rivillä 3 demo.txt uudelleen nimetään mv-komennolla harjoitus.txt:ksi.
- Rivillä 6 samalla komennolla siirretään harjoitus.txt demot-hakemistoon. Siirto tehdään suhteellisen viittauksen avulla.
- Rivillä 7 myös demo2.txt siirretään demot-hakemistoon. Siirto tehdään absoluuttisen viittauksen avulla.
5.2 Kopiointi
Tiedostoja kopioidaan komennolla cp
. Kopiointi komennolla voit siirtää tiedoston hakemistosta toiseen ja samalla nimetä sen uudestaan. Erona siirtämiseen on, että kopioinnissa alkuperäinen tiedosto säilyy myös alkuperäisessä hakemistossa.
Kopion voi myös tehdä alkuperäiseen hakemistoon. Tällöin komento ei tarvitse tiedostopolkuja, ainoastaan kopioitavan tiedoston nimen ja nimen kopiolle. Huomaa, jos luot samaan hakemistoon kopion tiedostosta ja nimeät sen samalla nimellä, kuin jo jokin hakemistossa oleva tiedosto, tämä tiedosto korvataan kopiolla. Eli vahingossa voit menettää tiedostoja! Komentorivillä ei ole vastaavanlaisia varoituksia kuin graafisessa maailmassa saman nimisistä jo olemassa olevista tiedostoista eikä komentorivillä tehdyissä kopioinneissa tiedostojen nimet täydenny järjestysnumeroilla, kuten esimerkiksi Windowsissa tapahtuu, jos lataat samaan kansioon saman tiedoston useaan kertaan.
Kopiointi komennolla pystyy myös uudelleen nimeämään kopion toiseen hakemistoon.
Esimerkki 2
kayttaja@omakone:~/itkp1010$ ls
harjoitus1.txt harjoitus2.txt
kayttaja@omakone:~/itkp1010$ cp harjoitus1.txt ../itkp1011
kayttaja@omakone:~/itkp1010$ ls
harjoitus1.txt harjoitus2.txt
kayttaja@omakone:~/itkp1010$ cd ../itkp1011
kayttaja@omakone:~/itkp1011$ ls
harjoitus1.txt
kayttaja@omakone:~/itkp1011$ cp harjoitus1.txt tehtävä2.txt
kayttaja@omakone:~/itkp1011$ ls
harjoitus1.txt tehtävä2.txt
kayttaja@omakone:~/itkp1011$ cp ../itkp1010/harjoitus2.txt ./tehtävä3.txt
kayttaja@omakone:~/itkp1011$ ls
harjoitus1.txt tehtävä2.txt tehtävä3.txt
Esimerkissä 2:
- Rivillä 3 kopioidaan harjoitus1.txt ylähakemistossa sijaitsevaan itkp1011-hakemistoon.
- Rivillä 5 huomiotavaa on, että kopioitaessa alkuperäinen tiedosto säilyy.
- Rivillä 8 huomataan, että hakemistoon on syntynyt rivillä 3 luotu kopio.
- Rivillä 9 luodaan hakemistossa olevasta tiedostosta kopio samaan hakemistoon, jolloin kopiolle on annettava uusi nimi.
- Rivillä 12 luodaan itkp1010-hakemistossa olevasta harjoitus2.txt kopio, joka nimetään tehtävä3.txt:ksi.
Esimerkeissä viittaukset ovat suhteellisia, mutta muista, että näissäkin tapauksissa voi viittaukset tehdä halutessaan absoluuttisina! (Jos et vielä muista mitä eroa viittauksilla oli, palaa kappaleeseen 4.2!)
5.3 Poistaminen
Komentorivillä hakemistojen ja tiedostojen poistaminen sujuu nopeasti ilman graafisen maailman varoitus- ja varmistusilmoituksia. Muista kuitenkin, että komentorivillä työskennellessä ei ole olemassa roskakoria! Poistettu tiedosto on poistettu ja se ei normaalisti ole palautettavissa.
Voit poistaa tyhjän hakemiston komennolla rmdir
. Jos olet ehtinyt luomaan hakemistoon tiedostoja, hakemisto on tyhjennettävä ennemmin kuin sen tällä komennolla voi poistaa. Yksittäinen tiedosto poistetaan komennolla rm
(remove directory). Molemmat komennot vaativat parametriksi poistettavan hakemiston tai tiedoston nimen.
Hakemisto, jossa on jo tiedostoja on mahdollista poistaa tiedostoineen komennolla rm -r
. Käytä vain, jos varmasti tiedät mitä teet!
Esimerkki 3
kayttaja@omakone:~/itkp1010$ ls
demot harkka
kayttaja@omakone:~/itkp1010$ rmdir harkka
kayttaja@omakone:~/itkp1010$ ls
demot
kayttaja@omakone:~/itkp1010$ rmdir demot
rmdir: failed to remove 'demot': Directory not empty
Esimerkissä 3 rivillä 3 poistetaan tyhjä hakemisto harkka, mutta yritettäessä poistaa demot-hakemistoa rivillä 6, saadaan virheilmoitus. Tätä hakemistoa ei voida poistaa, koska se ei ole tyhjä.
Esimerkissä 4 rivillä 3 rm-komennolla poistetaan demot-hakemistosta löytyvä demo3.txt.
5.4 Koonti komennoista
Tähän osioon on koottu taulukkoon koonti Unix-komennoista. Taulukossa on myös komentoja, jotka on käsitelty materiaalin aiemmissa luvuissa.
Komentojen koonti
6. Korvausmerkit
Jokerimerkit, korvausmerkit tai wildcardsit ovat merkkejä, joilla voidaan tekstissä esimerkiksi korvata yksittäisiä tai useampia merkkejä. Tässä yhteydessä käsitellään merkit *
ja ?
. Muitakin on olemassa, mutta näillä kahdella pärjää pitkälle.
6.1 Korvausmerkki *
*-merkki (tähti-merkki tai asteriski) korvaa tekstissä nollasta useaan mitä tahansa merkkiä. Tämä on esimerkiksi kätevää, jos haluaa käsitellä kaikkia samanmuotoisia tiedostoja hakemistossa. Vaikkapa kaikkiin .txt muotoisiin tiedostoihin voi viitata *.txt.
Otetaan esimerkiksi sanat:
"kissa", "kisu", "koira", "kilpikonna", "tikka"
Esimerkissä 1:
- Rivillä 3 rajoitetaan ls-komennon antamaa listausta koskemaan vain .txt-päätteisiä objekteja.
Esimerkissä 2:
- Rivillä 1 jatketaan esimerkki 1. tilanteesta ja siirretään kaikki txt.-päätteiset objektit demot-hakemistoon
- Rivillä 6 esimerkissä 1. itkp1010-hakemistossa olleet tiedostot löytyvät nyt demot-hakemistosta.
6.2 Korvausmerkki ?
? -merkki korvaa täsmälleen yhden minkä tahansa merkin. Esim. ?.pdf viittaa tiedostoon, joka on PDF ja sen nimessä on ainoastaan yksimerkki. Jos haluat korvata useamman merkin, niin se onnistuu lisäämällä ?-merkkejä. Esim. demo.??? viittaa kaikkiin demo-nimisiin tiedostoihin, joiden tiedostomuoto koostuu kolmesta merkistä. Tähän esimerkkiin sopivia tiedostoja voi olla siis vaikkapa demo.txt, demo.pdf tai demo.doc.
Esimerkki 3
kayttaja@omakone:~/itkp1010/demot/demot$ ls
demo1.txt demo3.txt demo5.txt vastaukset2.txt vastaukset4.txt
demo2.txt demo4.txt vastaukset1.txt vastaukset3.txt vastaukset5.txt
kayttaja@omakone:~/itkp1010/demot/demot$ ls demo?.txt
demo1.txt demo2.txt demo3.txt demo4.txt demo5.txt
kayttaja@omakone:~/itkp1010/demot/demot$ cd ../
kayttaja@omakone:~/itkp1010/demot$ ls
demo1.txt demo2.txt demo3.txt demo4.txt demot harjoitukset luennot ohjaukset
kayttaja@omakone:~/itkp1010/demot$ rm ?????.txt
kayttaja@omakone:~/itkp1010/demot$ ls
demot harjoitukset luennot ohjaukset
Esimerkissä 3 hyödynnetään ?-merkkiä kahdella tavalla. Ensimmäisenä esimerkissä rivillä 4 yhdellä kysymysmerkillä viitataan yhteen mihin tahansa merkkiin eli listaukseen tulevat kaikki demo-alkuiset tiedostot, mutta ei vastaus-tiedostoja. Toisena esimerkissä rivillä 9 viitataan kaikkiin .txt päätteisiin tiedostoihin, joissa on viisi merkkiä ja poistetaan ne (muista, että tällä todellakin poistat kaikki sopivat tiedostot. Jos kokeilet itse, varmista, ettei hakemistossa ole ehtoja täyttäviä tärkeitä tiedostoja!).
Kiinnostuneille lisää jokerimerkkejä löytyy esim. GNU Linux Tools Summary (englanniksi).
6.3 find-komento
find on kätevä komento, kun pitää etsiä hakemistorakenteesta hakemistoja tai tiedostoja. Komento toimii lähtökohtaisesti rekursiivisesti eli se etsii etsittävästä hakemistosta ja sen kaikista alihakemistoista ja niin edelleen. Tämä voidaan myös tarvittaessa estää. Komento rakentuu seuraavalla tavalla:
komento + mistä polusta etsitään + mitä ominaisuutta etsitään + mitä haun tuloksille tehdään
Komentoon voi määrittää useita eri ominaisuuksia hakua varten samaan hakuun. Esimerkiksi: find . -name "demo" -ls tulostaa oletushakemistosta, kaikista sen alihakemistoista ja alihakemistojen alihakemistoista jne. kaikki objektit, joiden nimessä on jossain kohtaa merkkijono: demo. Saatu listaus tulostetaan näytölle listauksena, jossa on mm. käyttöoikeudet ja kunkin tiedoston polut alkaen oletushakemistosta.
Edellisessä kappaleessa hakutermi on laitettu lainausmerkkeihin (" tai '). Tällä varmistetaan, että find-komento itse tulkitsee hakutermissä olevat korvausmerkit. Jos lainausmerkkejä ei laiteta, tulkitsee komentotulkki ensin korvausmerkit ja tulos voi olla eri kuin halutaan tai et saa tulosta ollenkaan. Tietyissä tapauksissa ilman lainausmerkkejä saadaan täsmälleen samat hakutulokset, mutta tässä vaiheessa on syytä käyttää hakutermin ympärillä lainausmerkkejä oikeiden hakutulosten saamiseksi.
Hyödyllisiä ominaisuuksia:
- -name = hakusana esiintyy nimessä, tarvitsee peräänsä hakusanan
- -type = haettavan objektin tyyppi, tavallisesti tarvittavia tyyppejä voi olla esim. d = hakemisto ja f = file
Tuloksille voi tehdä:
- -print = tulostaa haun tulokset näytölle (tämä tapahtuu automaattisesti, jos jätetään määrittämättä komentoon)
- -ls = enemmän tietoja sisältävä listaus haun tuloksista
Esimerkki 4: Etsitään oletushakemistosta kaikkia, joissa nimi alkaa demo ja tulostetaan lista näytölle.
kayttaja@omakone:~$ find . -name "demo*" -print
./itkp1011/demot
./opiskelu/itkp102_ohjelmointi1/demo2
./opiskelu/itkp102_ohjelmointi1/demo1
./itkp1010/demo1.txt
./itkp1010/demot
./itkp1010/demot/
./itkp1010/demot/demo1.txt
./itkp1010/demot/demo3.txt
./itkp1010/demot/demo2.txt
./itkp1010/demot/demo5.txt
./itkp1010/demot/demo4.txt
Esimerkki 5: Vastaava tulos, kuin esimerkki 1, saadaan myös ilman -print.
kayttaja@omakone:~$ find . -name "demo*"
./itkp1011/demot
./opiskelu/itkp102_ohjelmointi1/demo2
./opiskelu/itkp102_ohjelmointi1/demo1
./itkp1010/demo1.txt
./itkp1010/demot
./itkp1010/demot/
./itkp1010/demot/demo1.txt
./itkp1010/demot/demo3.txt
./itkp1010/demot/demo2.txt
./itkp1010/demot/demo5.txt
./itkp1010/demot/demo4.txt
Esimerkki 6: Vastaava haku, kuin edellisissä. Tulostetaan enemmän tietoja tulostavalla -ls-valitsimella.
kayttaja@omakone:~$ find . -name "demo*" -ls
53092 4 drwxr-xr-x 2 kayttaja ryhma 4096 Apr 19 21:08 ./itkp1011/demot
53082 4 drwxr-xr-x 2 kayttaja ryhma 4096 Apr 16 07:53 ./opiskelu/itkp102_ohjelmointi1/demo2
53081 4 drwxr-xr-x 2 kayttaja ryhma 4096 Apr 16 07:53 ./opiskelu/itkp102_ohjelmointi1/demo1
53089 4 -rw-r--r-- 1 kayttaja ryhma 176 Apr 17 14:15 ./itkp1010/demo1.txt
53091 4 drwxr-xr-x 7 kayttaja ryhma 4096 Apr 19 18:38 ./itkp1010/demot
53088 4 -rw-r--r-- 1 kayttaja ryhma 284 Apr 19 12:36 ./itkp1010/demot/demo1.txt
53097 4 -rw-r--r-- 1 kayttaja ryhma 624 Apr 19 15:21 ./itkp1010/demot/demo3.txt
53096 4 -rw-r--r-- 1 kayttaja ryhma 63 Apr 19 12:37 ./itkp1010/demot/demo2.txt
53099 4 -rw-r--r-- 1 kayttaja ryhma 52 Apr 19 15:21 ./itkp1010/demot/demo5.txt
53098 4 -rw-r--r-- 1 kayttaja ryhma 205 Apr 19 15:21 ./itkp1010/demot/demo4.txt
Esimerkki 7: Esimerkki 3 vastaava haku, mutta lisäyksenä haetaan vain tiedosto-tyyppisiä objekteja
kayttaja@omakone:~$ find . -type f -name "demo*" -ls
53089 4 -rw-r--r-- 1 kayttaja ryhma 176 Apr 17 14:15 ./itkp1010/demo1.txt
53088 4 -rw-r--r-- 1 kayttaja ryhma 284 Apr 19 12:36 ./itkp1010/demot/demo1.txt
53097 4 -rw-r--r-- 1 kayttaja ryhma 624 Apr 19 15:21 ./itkp1010/demot/demo3.txt
53096 4 -rw-r--r-- 1 kayttaja ryhma 63 Apr 19 12:37 ./itkp1010/demot/demo2.txt
53099 4 -rw-r--r-- 1 kayttaja ryhma 52 Apr 19 15:21 ./itkp1010/demot/demo5.txt
53098 4 -rw-r--r-- 1 kayttaja ryhma 205 Apr 19 15:21 ./itkp1010/demot/demo4.txt
Lisää find-komennon ominaisuuksista voi lukea: Find Command In Unix: Find Files With Unix Find File (englanniksi).
6.4 Tiedostojen nimeämisestä
Korvausmerkit tai muut erikoisuudet ovat komentorivityöskentelyssä haastavia tiedostojen nimissä. Ylipäänsä ja etenkin tässä yhteydessä tiedostojen nimiin ei kannata sisällyttää mitään seuraavista merkeistä:
Ääkköset (ä, ö, å)
Erikoismerkkit (~, ^, ", ', *, `, {,},|,<,>,?,#,!,;,&, \)
Välilyöntejä
Jos erikoismerkkejä tai välilyöntejä on pakko tiedostojen nimiin laittaa, komentorivillä ne on huomioitava joko \-merkillä erikoismerkin edessä tai laittamalla tiedoston nimi lainausmerkkeihin. Myös tässä osiossa käsitellyt merkit (* ja ?) pitää kertoa komentoriville erikseen, jos niitä on käytetty tiedoston nimessä. Muutoin se tulkitaan jokerimerkiksi eikä osaksi tiedoston nimeä.
Tekstistä vissiin puuttuu /-merkki kohdassa "...huomioitava joko -merkillä..."
VL: ei siis / vaan \. Tuo oli siinä, mutta koska myös TIMissä se pitää huomioida kirjoittamalla 2x, niin se ei näkynyt. Vastaavia voi olla muuallakin, joten kerro jos huomaat.
—Esimerkki 8:
kayttaja@omakone:~/itkp1010/demot$ mkdir tenttiin?
kayttaja@omakone:~/itkp1010/demot$ ls
demot harjoitukset luennot ohjaukset 'tenttiin?'
kayttaja@omakone:~/itkp1010/demot$ mkdir tenttiin1
kayttaja@omakone:~/itkp1010/demot$ ls
demot harjoitukset luennot ohjaukset tenttiin1 'tenttiin?'
kayttaja@omakone:~/itkp1010/demot$ rmdir tenttiin?
kayttaja@omakone:~/itkp1010/demot$ ls
demot harjoitukset luennot ohjaukset
kayttaja@omakone:~/itkp1010/demot$
Esimerkissä 8 hakemiston nimessä oleva kysymysmerkki tulkitaan rivillä 7 hakemistoa poistettaessa korvausmerkiksi ja vahingossa poistetaan toinenkin hakemisto.
Esimerkki 9:
kayttaja@omakone:~/itkp1010/demot$ ls
demot harjoitukset luennot ohjaukset tenttiin1 'tenttiin?'
kayttaja@omakone:~/itkp1010/demot$ rmdir tenttiin\?
kayttaja@omakone:~/itkp1010/demot$ ls
demot harjoitukset luennot ohjaukset tenttiin1
kayttaja@omakone:~/itkp1010/demot$
Esimerkissä 9 rivillä 3 on oikea tapa poistaa kysymysmerkin sisältävä hakemisto. Tällä rivillä erikoismerkki huomioidaan \
-merkillä.
7. Komentojen putkittaminen
Karo alkaa olla jo aika haka komentorivin perusteissa. Korvausmerkkien harjoittelun jälkeen hän miettii, että voisiko työskentelyä yhäkin tehostaa. Voisiko komentorivillä peräkkäisyyden sijaan käskeä tietokonetta tekemään kerralla enemmän? Entä voisiko tekstitiedostot lukea ilman, että niitä joka kertaa avaa editorilla? Vastaukseksi osoittautuu jälleen kyllä ja työkaluiksi tällä kertaa komentojen putkittaminen ja grep-komento.
7.1 Putkittaminen
Putkituksella voit suorittaa useita komentoja peräkkäin samalla rivillä. Putkituksessa siis kirjoitetaan komentoja peräkkäin ja komennot suoritetaan peräkkäin automaattisesti. Komennot erotetaan toisistaa |
-merkillä.
Putkituksen käytössä tulee ymmärtää vielä paremmin termit "syöte" ja "tuloste".
syöte = esimerkiksi tiedosto, listaus tai muu vastaava, joka syötetään komennolle parametrina. Esimerkiksi nano-komennolle annettava tiedoston nimi toimii syötteenä.
tuloste = tulos tai tuotos, jonka komentonnon suorittaminen tuottaa. Esimerkiksi ls
-komennon tuloste on listaus hakemiston sisällöstä.
Tehokkaassa putkituksessa ensimmäisen komennon antama tuloste toimii seuraavan komennon syötteenä ja niin edelleen.
Esimerkki 1
kayttaja@omakone:~/opiskelu$ ls | less
itkp1010_digitaalisen_osaamisen_perusteet
itkp1011_web_julkaiseminen
itkp102_ohjelmointi1
itky100_yliopisto-opiskelu
Esimerkissä 1 ensimmäisellä rivillä ls-komennon syöte ohjataan putkittamalla less-komennolle. less-komento antaa tulosteena listan hakemiston sisällöistä.
less ja more ovat simppeleitä komentoja, jotka tulostavat tulosteen hieman eri tavoin näytölle. Ne ottavat parametriksi syötteen, kuten esimerkissä 1. Tutustu itse näiden käyttöön! 'q' sulkee ohjelman.
Esimerkissä 2:
- Rivillä 1. luodaan ensin tulostuksen ohjauksen avulla tiedosto ja putkituksen avulla se siirretään heti demot hakemistoon.
- Rivillä 6 huomataan, että demo1.txt löytyy mistä pitikin.
- Rivillä 8. tarkistetaan, että tiedostossa on juuri se teksti mitä pitikin.
7.2 grep-komento
grep
-komennolla voidaan poimia tiedostoista rivejä, joissa esiintyy komennossa mainittu haluttu merkkijono. grep-komennolle annetaan parametreiksi merkkijono, jota etsitään ja tiedoston nimi, josta etsintä tehdään.
Toimiva grep
-komento voisi olla vaikkapa:
grep tehtävä demo1.txt
Tällä komennolla etsitään kaikkia niitä rivejä tiedostosta demo1.txt, jotka sisältävät sanan tai sanan osan: tehtävä.
grep
-komennolle hyödyllisä valitsimia ovat:
-c
= count, kertoo osumien lukumäärän eli monellako rivillä hakutulos esiintyy.-n
= kertoo löydettyjen rivien rivinumeron. Helpottaa haluttujen rivien löytymistä pitkistä tiedostoista.-r
= tekee haun rekursiivisesti hakemiston sisällölle. Eli kohteeksi annetaan hakemisto jagrep
käy läpi kaikki hakemiston sisältämät tiedostot
Esimerkki 3
kayttaja@omakone:~/demot$ grep komentorivi demo1.txt
Tekstissä tulee esiintyä komentorivi säännöllisesti.
Tämä sen takia, että komentorivi ei sisällä roskakoria.
Kun työskennellään komentorivillä, on syytä tietää mitä tekee.
Älä koskaan suorita komentorivillä komentoja, joista et tiedä mitä ne tekee.
Internetissä ilkeät tahot voivat suositella komenotoja, joilla komentorivi sekoaa.
Esimerkin 3 ensimmäisellä rivillä etsitään kaikkia niitä rivejä tiedostosta demo1.txt, joissa esiintyy komentorivi-sana tai sanan osa. Lopuille riveille tulostuu löydetyt rivit. Huomaa, että hakusana toimii niin, kuin komentorivi-sanan ympärillä olisi *-korvausmerkit. Näin myös esim. komentorivillä on suotuisa hakutulos.
Esimerkki 5
kayttaja@omakone:~/demot$ grep -n komentorivi demo1.txt
4:Tekstissä tulee esiintyä komentorivi säännöllisesti.
10:Tämä sen takia, että komentorivi ei sisällä roskakoria.
13:Kun työskennellään komentorivillä, on syytä tietää mitä tekee.
14:Älä koskaan suorita komentorivillä komentoja, joista et tiedä mitä ne tekee.
16:Internetissä ilkeät tahot voivat suositella komenotoja, joilla komentorivi sekoaa.
Esimerkissä 5 -n-valitsin lisää rivinumerot hakutulosten eteen. Muutoin haku ja hakutulokset ovat samat kuin esimerkissä 3.
Esimerkki 6
kayttaja@omakone:~$ grep -r -n komentorivi demot
demot/demo1.txt:4:Tekstissä tulee esiintyä komentorivi säännöllisesti.
demot/demo1.txt:10:Tämä sen takia, että komentorivi ei sisällä roskakoria.
demot/demo1.txt:13:Kun työskennellään komentorivillä, on syytä tietää mitä tekee.
demot/demo1.txt:14:Älä koskaan suorita komentorivillä komentoja, joista et tiedä mitä ne tekee.
demot/demo1.txt:16:Internetissä ilkeät tahot voivat suositella komenotoja, joilla komentorivi sekoaa.
demot/demo2.txt:1:komentorivi
demot/demo2.txt:3:komentorivitesti tekstiä
Esimerkissä 6 suoritetaan grep-komento rekursiivisesti ja tuloksista kerätään rivinumerot. Etsinnän tuloksena löydetään seitsemän riviä ja nyt rivin sisällön ja rivinumeron edessä näkyy myös polku, mistä tiedostosta rivi on löytynyt.
grep-komento on erityisen tehokas putkittaessa komentoja. Sen hyödyt tulevatkin esille etsittäessä esimerkiksi tuhansien tiedostojen joukosta tiettyä tai tiettyjä tiedostoja. grep komennolle syötteeksi voidaan siis esimerkiksi putkittaa ls-komennon syöte seuraavasti:
ls | grep hakusana
Tällaiseen komentoon ei erikseen tarvitse grepille kertoa mistä etsitää. Putkitus hoitaa automaattisesti ls-komennon tulosteen grepille syötteeksi.
Esimerkki 7
kayttaja@omakone:~$ cat essee.txt | grep työ
Putkittaminen on työn alla
Komentorivi on kätevä työkalu
Vähänkin syvemmällä tietotekniikassa, tarvitset sitä työssäsi.
Tämän lisäksi tarvitaan harjoitustyötä.
Esimerkissä 7 luetaan cat-komennolla essee.txt:n sisältö ja putkitetaan tuloste grepin syötteeksi. Näytölle tulostuu rivit, joissa hakutermi esiintyy.
Esimerkki 8
kayttaja@omakone:~$ cat essee.txt | grep työ | more
Putkittaminen on työn alla
Komentorivi on kätevä työkalu
Vähänkin syvemmällä tietotekniikassa, tarvitset sitä työssäsi.
Tämän lisäksi tarvitaan harjoitustyötä.
Esimerkissä 8 huomataan, että komentoja voidaan putkittaa enemmänkin kuin kaksi. Tässä tuloste on täsmälleen sama kuin esimerkissä 7, mutta se on kulkenut more-komennon kautta.
Esimerkki 9
kayttaja@omakone:~$ cat essee.txt | grep työ | less
Esimerkissä 9 on esimerkkejä 7 ja 8 vastaavat kaksi komentoa, mutta less
-komento aiheuttaa tulosteen muodostumisen omaan "ikkunaan" komentorivillä. Kokeile itse miltä tämä näyttää!
grep
-komennolla on hyvin laajasti valitsimia ja sillä voidaan tehdä monia asioita. Kiinnostuneille lisätietoja löytyy täältä: grep-komento ja säännölliset lausekkeet
7.3 Muita hyviä komentoja putkitukseen
Tässä osiossa esitellään vielä muutama komento, jotka palvelevat erityisen hyvin putkitettaessa. Tutustutaan ensin head
ja tail
-komentoihin.
7.3.1 head ja tail
Pitkissä tuloksissa head
ja tail
voivat auttaa hahmottamaan tulosteen rakennetta. head
tulostaa syötteen ensimmäiset rivit ruudulle, tail
tulostaa syötteen viimeiset rivit. Syöte voi olla tavallinen tiedosto, tai putken edellisen osan tuloste.
Toimivia komento voisi olla:
head demo1.txt
ja
tail demo1.txt
Ensimmäinen komento tulostaa demo1.txt tiedoston ensimmäiset rivit. Jälkimmäinen komento tulostaa tiedoston "hännän", eli viimeiset rivit.
head
ja tail
-komennolle hyödyllinen valitsin on ainakin:
-n
, jota seuraa numero = tulostaa numeron verran rivejä
Esimerkissä 10:
- Rivilllä 1 listataan /usr/bin hakemiston sisältö ja putkittaen tulostetaankin näytölle vain kymmenen riviä (rivit 2-11) hyvin pitkästä sisällöstä
- Rivillä 12 listataan /usr/bin hakemiston sisältö uudelleen. Tällä kertaa se putkitetaan tail komennolle, jolle annetaan valitsimeksi -n, jota seuraa numero kolme. Näin tulostetaan listauksesta vain kolme viimeistä riviä (rivit 13-15).
7.3.2 wc
Seuraavaksi voimme kokeilla wc
-komentoa. Komennon nimi viittaa sanamäärään (word count) ja sillä voikin laskea tiedostosta tai muusta lähteestä muun muassa sanamääriä. Komento tulostaa seuraavat tiedot annetussa järjestyksessä:
- Rivinvaihtojen määrän
- Sanamäärän
- Tiedoston koon tavuissa
- Jos on valittu useampi tiedosto, niin tulostetaan myös kunkin edellisen kohdan tulokset yhteensä.
wc
-komennolle hyödyllisä valitsimia ovat:
-l
= kertoo vain rivimäärän-w
= kertoo vain sanamäärän-m
= kertoo merkkien määrän
Esimerkissä 11:
- Rivillä 1 listataan
/usr/bin
hakemiston sisältö. Putkittamalla lasketaan tulosteen pituus. - Rivi 2: Rivinvaihtoja tulosteessa on
1026
. Myös sanamäärä on1026
. Bittejä tulosteessa on9713
- Rivillä 3 ls-komennolle on annettu valitsin -l, eli listataan hakemiston
- sisältö pitkässä muodossa. Listaus on jälleen putkitettu
wc
-komennolle - Rivi 4: Rivejä tuli yksi lisää, niitä on tässä listausmuodossa 1027. Sanoja on useita jokaista riviä kohden, yhteensä
9586
. Bittejä tiedon esittämiseen tarvitaan64163
. - Rivillä 5 lasketaan demo-tiedostojen pituuksia
wc
-komennolla - Rivillä 6 nähdään demo1.txt tiedoston tiedot
- Rivillä 7 nähdään demo2.txt tiedoston tiedot
- Rivillä 8 nähdään demo1.txt ja demo2.txt tiedostojen tiedot summattuna yhteen. Tiedostoissa on yhteensä
2669
rivinvaihtoa,22557
sanaa, ja niiden koko on yhteensä213159
bittiä.
7.3.3 sort
Viimeisenä on vuorossa sort
-komento. Tämä komento "sorttaa", eli järjestää tulosteensa (aakkos)järjestykseen
Toimiva komento voisi olla vaikkapa: sort demo1.txt
Komento tulostaa näytölle demo1.txt
tiedoston sisällön rivi kerrallaan aakkosjärjestyksessä. Huomaa, ettei komento muuta tiedostoa tai sen sisältöä.
sort-komennolle hyödyllisiä valitsimia ovat:
-n
= järjestää numerot oikein-f
= kirjainkoolla ei väliä-r
= käänteinen järjestys
Esimerkissä 12:
- Rivillä 1 järjestetään
numerot.txt
- Riveillä 2-5 sisältö tulostuu järjestyksessä rivi kerrallaan. Huomaa, että
2
tulostuu viimeiseksi, koska aakkosjärjestyksessä numero2
tulee numeron1
jälkeen. - Rivillä 6 järjestetään jälleen sama tiedosto, mutta nyt valitsimella
-n
, joka järjestää luvut suuruusjärjestykseen.
Esimerkki 13 (vertaa esimerkkiin 7)
kayttaja@omakone:~$ grep työ essee.txt | sort
Komentorivi on kätevä työkalu
Putkittaminen on työn alla
Tämän lisäksi tarvitaan harjoitustyötä.
Vähänkin syvemmällä tietotekniikassa, tarvitset sitä työssäsi.
kayttaja@omakone:~$ grep työ essee.txt | sort -r
Vähänkin syvemmällä tietotekniikassa, tarvitset sitä työssäsi.
Tämän lisäksi tarvitaan harjoitustyötä.
Putkittaminen on työn alla
Komentorivi on kätevä työkalu
Esimerkissä 13:
- Rivillä 1 etsitään
grep
-komennollaessee.txt
-tiedostosta rivejä, joissa puhutaan työstä. Tulos sitten järjestetään riveittäin aakkosjärjestykseen putkittamalla sesort
-komennolla. - Rivit 2-5: Hakutulokset järjestettynä
- Rivillä 6 tehdään sama haku kuin rivillä 1, mutta nyt
-r
valitsimella tulokset järjestetäänkin käänteiseen aakkosjärjestykseen.
8. Järjestelmän- ja tiedostojenhallinta
Karo on päätynyt webohjelmointikurssille ja hänelle on tullut vastaan tilanne, ettei verkkosivut näykään samalla tavalla kaikille käyttäjille. Karo pohtii, missähän ongelma tällä kertaa on? Vastaus löytyy tiedostojen ja hakemistojen käyttöoikeuksista. Karon pitää oppia, miten käyttöoikeuksia säädetään niin, että hänen web-sivunsa näkyvät oikein niille, joille ne onkin tarkoitettu.
HUOM! Nämä komennot eivät tee mitään Git Bashissa.
8.1 Erilaiset käyttöoikeudet
Hakemistoilla ja tiedostoilla on aina jonkinlaiset käyttöoikeudet. Välillä on hyödyllistä pystyä muokkaamaan pääsyä ja oikeuksia tiettyihin tiedostoihin. Komentorivillä hakemiston sisällön oikeuksia pääsee tarkastelemaan aiemmin opituilla ls -l
ja ls -al
-komennoilla.
Esimerkissä 1 ensimmäisestä sarakkeesta löydät oikeuslistauksen.
Listauksen ensimmäinen merkki kertoo tiedostotyypin. Esimerkiksi d viittaa hakemistoon ja - tiedostoon. Esimerkin ensimmäinen objekti on siis tiedosto ja toinen hakemisto. Itse tekemissäsi hakemistoissa ei todennäköisesti muita ole. Kuitenkin esimerkiksi juurihakemistossasi, jonka voit listata komennolla ls -l
/ (pitkä listaus juurihakemistosta) voit nähdä myös l-tyyppisiä, symbolisesti linkitettyjä hakemistoja.
Jos tiedostotyypit kiinnostavat kovasti, niin Wikipedia opettaa. Kokeile myös komentoa
ls -l /dev
Seuraavat 9 merkkiä kertovat kenen oikeuksista on kyse. Oikeuksia voi olla kolmella eri toimijalla:
- omistaja (owner), eli käytännössä tiedoston (tai hakemiston) luoja. Huom! seuraavan alaluvun
chmod
-komennon käyttäjä vastaa tässä tiedoston omistajaa - ryhmä (group), Linuxissa voi luoda erilaisia käyttäjäryhmiä, joille voi kootusti antaa oikeuksia. Omissa tiedostoissasi omistaja ja ryhmä ovat käytännöissä samoja. Ryhmiä täytyy miettiä yleensä vasta järjestelmissä, joissa on monia käyttäjiä.
- muut (others), tähän kuuluvat kaikki ne, jotka eivät kuulu ylempiin toimijoihin.
Jokaista toimijaa kohden on kolme merkkiä eli merkit 2-4 koskevat omistajaa, 5-7 ryhmää ja 8-10 muita.
Esimerkki 2
kayttaja@omakone:~/itkp1010$ ls -l tiedosto
-rwxr--r-- 1 kayttaja ryhma 0 May 13 09:30 tiedosto
| | --- |
| | | | | r = lukuoikeus
| | | | | w = kirjoitusoikeus
| | | | | x = suoritusoikeus
| | | | | - = ei oikeutta
| | | muut (r--)
| | ryhmä (r--)
| omistaja (rwx)
|
tiedostotyyppi (-)
Esimerkissä 2 on esitetty oikeuksien jakautuminen toimijoittain.
Esimerkki 3
[kayttaja@jalava ~]$ ls -la
total 2608
drwxrwx---. 24 kayttaja nobody 852 Apr 27 09:49 .
drwxrwxr-x. 6026 root wheel 155657 Feb 12 15:37 ..
-rwxrwx---. 1 kayttaja users 4925 Feb 24 14:38 .bash_history
drwxrwx---. 3 kayttaja users 22 Apr 22 2019 .config
-rwxrwx---. 1 kayttaja wheel 10653 Apr 27 10:45 .history
-rwxrwx---. 1 kayttaja 1000198 55 Jun 2 2018 .htaccess
drwxrwx---. 2 kayttaja nobody 29 Mar 22 12:48 .ssh
drwxrwx---. 3 kayttaja users 25 Jan 18 2020 Application Data
drwxrwx---. 2 kayttaja nobody 64 Jan 10 2018 CmapToolsLogs
drwxrwx---. 2 root wheel 0 Aug 17 2020 Config
drwxrwx---. 39 kayttaja nobody 1673 Mar 27 20:08 My Documents
drwxrwx---. 9 kayttaja nobody 256 Nov 18 2019 MyPrograms
-rwxrwx---. 1 kayttaja users 1804 Feb 25 14:26 SCANJOBS.lnk
drwxrwx---. 7 kayttaja wheel 188 Nov 29 2018 SettingsPackages
drwxrwx---. 3 kayttaja nobody 166 Feb 20 2018 blender
drwxrwx---. 2 kayttaja wheel 0 Mar 25 2019 cd
lrwxrwx---. 1 nobody users 32 Sep 9 2016 html -> /wwwhome/nashome2/kayttaja/html/
Esimerkissä 3 listataan yliopiston jalava-koneelta erään käyttäjän kotihakemiston sisältö komennolla ls -la. Tässä voi käytännössä nähdä, miten koneen käyttäjiä on jaettu eri ryhmiin. Lisäksi tästä listauksesta löytyy riviltä 19 l-tyyppinen symbolinen linkki. Esimerkkejä:
-rwxrwxrwx
kaikilla edellä mainituilla toimijoilla on kaikki oikeudet tähän tiedostoon.drwx------
tähän hakemistoon luku-, kirjoitus, ja suoritusoikeudet ovat vain omistajalla. Ryhmillä ja muilla ei ole mitään oikeuksia.-rwxr--r--
tähän tiedostoon omistajalla on kaikki oikeudet. Ryhmillä ja muilla on vain lukuoikeus.
8.2 Oikeuksien muokkaaminen
Komento oikeuksien muokkaamiseen on chmod
. Jos haluat muuttaa yhdellä komennolla oikeuksia hakemistolle ja kaikelle mitä se sisältää (tiedostot ja alihakemistot), voi komennolle antaa valitsimen -R
(recursive, rekursiivisesti).
Komento koostetaan seuraavasti:
chmod (-R) kenelle, miten, mitä, mille tiedostolle/hakemistolle
Kenelle:
- u käyttäjä (user). Huom! vastaa edellisen alaluvun omistajaa
- g ryhmä (group)
- o muut (other)
- a kaikki (all) käyttäjä, ryhmä ja muut yhdessä.
Miten:
- + lisää oikeus.
- - poista oikeus.
- =määrää oikeuden absoluuttisesti. Poistaa kaikki entiset oikeudet.
Mitä:
- r lukuoikeus (read).
- w kirjoitusoikeus (write).
- x suoritusoikeus (execute).
Esimerkki 4
kayttaja@omakone:~/itkp1010$ ls -l
total 8
-rw-r--r-- 1 kayttaja ryhma 17 Apr 17 14:15 demo1.txt
drwxr-xr-x 7 kayttaja ryhma 4096 Apr 19 18:38 demot
kayttaja@omakone:~/itkp1010$ chmod a+w demo1.txt
kayttaja@omakone:~/itkp1010$ ls -l
total 8
-rw-rw-rw- 1 kayttaja ryhma 17 Apr 17 14:15 demo1.txt
drwxr-xr-x 7 kayttaja ryhma 4096 Apr 19 18:38 demot
Esimerkissä 4 lisätään rivillä 5 kaikille toimijoille kirjoitusoikeudet demo1.txt-tiedostoon. Muutoksen onnistuminen huomataan ennen ja jälkeen muutoksen otetuissa tiedostolistauksista.
Esimerkissä 5 poistetaan ensimmäisellä rivillä ryhmältä ja muilta kirjoitusoikeus. Tarkistaessa huomataan, että palattiin esimerkki 2. aloitustilanteeseen.
Esimerkissä 6 jatketaan esimerkki 3. tilanteesta ja määrätään ensimmäisellä rivillä kaikille absoluuttisesti oikeudet r ja x. Tämän muokkauksen jälkeen kaikilla toimijoilla on siis r ja x oikeudet ja muut aiemmin olleet oikeudet poistetaan. Tässä esimerkissä käyttäjältä poistui kirjoitusoikeus (w).
Esimerkki 7
kayttaja@omakone:~/itkp1010/demot$ ls -l
total 8
-rw-rw-r-- 1 kayttaja ryhma 17 Apr 20 21:57 demo1.txt
-rw-rw-r-- 1 kayttaja ryhma 17 Apr 20 21:57 demo2.txt
kayttaja@omakone:~/itkp1010/demot$ cd ../
kayttaja@omakone:~/itkp1010$ ls -l
total 8
-rw-rw-rw- 1 kayttaja ryhma 17 Apr 17 14:15 demo1.txt
drwxrwxr-x 2 kayttaja ryhma 4096 Apr 20 21:57 demot
kayttaja@omakone:~/itkp1010$ chmod -R a=rx demot
kayttaja@omakone:~/itkp1010$ ls -l
total 8
-rw-rw-rw- 1 kayttaja ryhma 17 Apr 17 14:15 demo1.txt
dr-xr-xr-x 2 kayttaja ryhma 4096 Apr 20 21:57 demot
kayttaja@omakone:~/itkp1010$ cd demot
kayttaja@omakone:~/itkp1010/demot$ ls -l
total 8
-r-xr-xr-x 1 kayttaja ryhma 17 Apr 20 21:57 demo1.txt
-r-xr-xr-x 1 kayttaja ryhma 17 Apr 20 21:57 demo2.txt
Esimerkissä 7:
- Ensin tarkastetaan hakemiston sisällön (2 tiedostoa) oikeudet ja itse hakemiston oikeudet.
- Rivillä 10 määrätään rekursiivisesti kaikille absoluuttiset r ja x -oikeudet demot-hakemistoon.
- Lopuksi tarkistetaan vastaavasti kuin alussa. Huomataan, että sekä demot hakemiston oikeudet ovat muuttuneet sekä hakemiston sisällä oleville tiedostoille on muuttunut samat oikeudet kuin hakemistolle. Rekursiivinen määräys siis muuttaa hakemiston oikeudet ja tekee samat muutokset myös kaikelle hakemiston sisällölle.
8.2.1 Käyttöoikeuksien muokkaamisesta
Omalla koneella työskennellessä omien hakemistojen kanssa käyttöoikeuksien muokkaamisessa on kohtuullisen vähän käytännön sovelluksia. Käytännössä käyttöoikeudet tulevat kysymykseen silloin, kun samaa sisältöä käsittelee useita käyttäjiä. Tästä konkreettinen esimerkki on johdannon web-sivujen näkyvyys. Käyttöoikeuksia määrätessä on hyvä muistaa pari seikkaa:
- Oikeuksia ei ole syytä antaa kaikille kaikkia oikeuksia vain varmuuden vuoksi.
- Jos poistat itseltäsi kaikki oikeudet tiedostoon, et voi esimerkiksi lukea tiedostoa ennen, kuin oikeudet on palautettu. Yksittäisistä tiedostoista kaikkien oikeuksien poistaminen ei aiheuta suurempaa ongelmaa, mutta varo poistamasta itseltäsi oikeuksia vaikkapa koko hakemistorakenteesta. Tällöin oikeuksien palauttaminen voi olla kohtuuttoman työläs urakka.
Jos käyttöoikeuksien tutkiminen innostaa, niin Wikipedia auttaa eteenpäin.
Miksiköhän ajaessani tämän muuttakseni oikeuksia saan virheilmoituksen 'No such file or directory' vaikka nämä saan kuitenkin tulostettua näkyviin ls -komennolla?
VL: Sun nykyisessä hakmeistossa ei ole tuota tiedostoa. Laitappa tähän ikkunaan se ls -la
niin näet mitä täsäs hakemistossa on.
Miksi minulla ei ole vastausoikeutta juuri tähän tehtävään?
VL: syytä en osaa sanoa miksi tuo oli merkitty invalid-kysymykseksi. Otin sen pois, mutta se voi olla vastoin dokmentin tekijän ajatuksia. Toki jos kysymystä ei haluta näyttää se olisi parempi kommentoida piiloon. Nyt kuitenkin voi vastata.
—8.3 sudo, järjestelmän päivittäminen ja ohjelman asentaminen:
Seuraavaa osiota eivät Git Bash ja macOs-käyttäjät voi suoraan tehdä. Myöskään suorakäyttökoneilla sinulla ei ole riittävästi oikeuksia loppuosan tekemiseen. Tässä osiossa opetellaan päivittämään Linux ja asentamaan siihen uusi ohjelma. Järjestelmän päivitys tehtiin jo osiossa kolme, mutta seuraavaksi avataan annettuja komentoja yksityiskohtaisemmin. Windows huolehtii itse päivityksistään (vaikka väkisin), mutta Linux pitää itse muistaa päivittää aika ajoin. Päivittäminen ja ohjelman asentaminen vaativat Windowsissa järjestelmänvalvojan oikeuksia. Unix-komentorivillä nämä "järjestelmänvalvojan" kohotetut oikeudet saadaan komennolla sudo
.
8.3.1 sudo
Unix-komentorivillä kuka tahansa ei voi tehdä mitä tahansa. Voidaksesi muokata käyttöjärjestelmää sinun tulee käyttää komentoa sudo (superuser do, tee pääkäyttäjänä). Tämän perään kirjoitat haluamasi komennon, kuten apt update
. sudo-komennon käyttö lisää valtaasi, joten käytä sitä vain silloin, kun tarvitset ja tiedät mitä teet. Muuten voit rikkoa järjestelmäsi. Sudo komennon käyttöön tarvitset salasanasi.
sudo apt update
Kuten myöhemmin näytetään, tällä komennolla ladataan päivitykset omalle koneelle.
sudo-komennosta voit oppia lisää linux.fi-sivustolta ja wikipediasta (eng)
8.3.2 apt
sudo komennolla annetaan parametriksi uusi komento. Tämä on se komento, joka tulee suorittaa pääkäyttäjänä. Linuxin päivittämiseen tehty APT-työkalu, jota käytetään komentorivillä komennolla apt. Komennolle annetaan parametriksi tehtävä, kuten update tai upgrade.
Myös apt-ohjelmasta ja -komennosta voit oppia lisää linux.fi-sivustolta ja wikipediasta (eng)
8.3.3 Järjestelmän päivittäminen
Nyt ehkä ymmärrät paremmin, mitä tapahtuu, kun annat komennon päivittää linux komentoriviltä. Anna komento sudo apt update. Syötä salasanasi pyydettäessä.
Esimerkki 8
kayttaja@omakone:~$ sudo apt update
[sudo] password for kayttaja:
Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:27 http://security.ubuntu.com/ubuntu focal-security/multiverse Translation-en [4316 B]
Fetched 4550 kB in 11s (404 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
33 packages can be upgraded. Run 'apt list --upgradable' to see them.
kayttaja@omakone:~$
Esimerkissä 8:
- Rivillä 1 annetaan komento sudo apt update
- Rivillä 2 vaaditaan salasanaa sudo komennon käyttöä varten
- Riveillä 3-10: apt-komento tekee töitään ja kertoo edistymisestään. Näitä tekstejä ei tarvitse tarkemmin ymmärtää.
Update ainoastaan lataa ja valmistelee päivitykset, se ei asenna niitä. Tätä varten pitää ajaa apt-komento uudestaan, mutta tällä kertaa parametrillä upgrade. Syötä komento sudo apt upgrade
. Jos edellisestä sudo-komennon käytöstä on alle viisi minuuttia, niin sinulta ei pyydetä salasanaa. Vastaa kyllä 'Y', kun kysytään, haluatko jatkaa (Esimerkki 9, rivi 14)
Esimerkki 9
kayttaja@omakone:~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
distro-info
The following packages will be upgraded:
alsa-ucm-conf apport bind9-dnsutils bind9-host bind9-libs cloud-init
ubuntu-advantage-tools ubuntu-release-upgrader-core
33 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 6818 kB of archives.
After this operation, 2531 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 open-iscsi amd64
2.0.874-7.1ubuntu6.2 [283 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 initramfs-tools-core all
0.136ubuntu6.5 [47.7 kB]
Setting up bind9-libs:amd64 (1:9.16.1-0ubuntu2.8) ...
Processing triggers for initramfs-tools (0.136ubuntu6.5) ...
kayttaja@omakone:~$
Esimerkissä 9:
- Rivillä 1 annetaan komento sudo apt upgrade
- Riveillä 2-5 tehdään alkuvalmisteluja
- Riveillä 6-11 kerrotaan, mitä asennetaan ja päivitetään
- Riveillä 12-13 raportoidaan päivityksen lataustarve ja tilatarve
- Rivillä 14 kysytään, haluatko jatkaa päivitystä, vastaa Y (Yes)
- Riveillä 15-20 päivitys asennetaan ja sen etenemisestä raportoidaan.
Järjestelmä on nyt päivitetty. Muista päivittää järjestelmääsi säännöllisesti, jos sitä käytät jatkossakin. Harjoitellaan seuraavaksi vielä ohjelman asentamista.
8.3.4 Ohjelman asentaminen
Asennetaan nyt komento unzip, jota tarvitaan osiossa 10, sekä tentissä. Voit myös asentaa muita hyödyllisiä ohjelmia, kuten tree, zip, zsh tai gcc. Jos kirjoitat komentorivillesi komennon unzip ja saat seuraavanlaisen palautteen, niin sitä ei ole vielä asennettu.
Esimerkissä 10:
- Rivillä 1 annetaan komento
unzip
, jota ei ole asennettu. - Rivillä 3 komentorivi kertoo, ettei unzip komentoa löydy, mutta sen voi asentaa kirjoittamalla komentoriville rivin 5 komennon.
- Rivillä 5 on nyt jo tuttu aloitus
sudo apt
sitä seuraa parametritinstall
(asenna) jaunzip
(asennettava ohjelma).
Kirjoita seuraavaksi komento sudo apt install unzip
komentoriville. (Jos unzip on jo asennettu Linuxiisi, niin asenna sen sijaan tree, zip, zsh tai gcc.)
Esimerkki 11
kayttaja@omakone:~$ sudo apt install unzip
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
zip
The following NEW packages will be installed:
unzip
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 172 kB of archives.
After this operation, 580 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u2 [172 kB]
Fetched 172 kB in 0s (817 kB/s)
Selecting previously unselected package unzip.
(Reading database ... 52238 files and directories currently installed.)
Preparing to unpack .../unzip_6.0-23+deb10u2_amd64.deb ...
Unpacking unzip (6.0-23+deb10u2) ...
Setting up unzip (6.0-23+deb10u2) ...
Processing triggers for mime-support (3.62) ...
Processing triggers for man-db (2.8.5-2) ...
kayttaja@omakone:~$
Esimerkissä 11:
- Rivillä 1 annetaan komento sudo apt install unzip, jolla unzip asennetaan.
- Riveillä 2-11 tehdään asentamisen alkuvalmisteluja.
- Rivillä 12 kysytään, haluatko jatkaa. Vastaa Y.
- Riveillä 13-21 raportoidaan asennuksen edistymisestä
9. Seuraavat askeleet
Päästyäsi tähän asti olet oppinut komentorivistä perusteet. Oppimasi taidot riittävät hyvin niille informaatioteknologian kursseille, joilla komentoriviä käytetään työkaluna. Lisäksi olet valmis syventämään komentorivitaitojasi niillä kursseilla, joilla sitä opiskellaan syvällisemmin.
Käyttöjärjestelmän-kurssilla pääset syventämään ja soveltamaan Unix-komentorivitaitojasi.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.