Komentokehotteen komennot osa 1

Photo about Tools by Philip Swinburn on Unsplash

Komentokehotteen komennot osa 1

Tämä teksti käsittelee komentokehoitteen komentoja, joita käytetään komentokehotteella navigoimiseen ja erillaisen informaation tulostamiseen päivittäisen työskentelyn helpottamiseksi.

Muutama viikko sitten kirjoitin siitä miten “Jokaisen mac-käyttäjän tulisi tuntea Linuxin komentokehoite” (Postauksen pääset lukemaan täältä). Yksinkertaistava otsikko oli tarkoitettu niputtamaan yhteen ajatus, että linux distroilla “heavy lifting” tehdään yleensä komentokehotteesta. Se on helpompi, nopeampi, mukavampi ja noin 85% katu-uskottavampi tapa käytellä tietokonetta päivittäisissä tehtävissä. Ja kuten aikaisemmassa tekstissä tuli todettua, mäkissä ajettava käyttäjärjestelmä polveutuu 1970 luvun UNIX -käyttöjärjestelmään ja on näin ollen löysästi ilmaisten jonkinlainen linux distrojen serkku. Tästä seuraa se ihanuus, että mitä enemmän opit vaikkapa Ubuntulla komentokehotteessa toimivia hyviä käytäntöjä valuvat nämä opit samalla lähes yksi yhteen käytettäväksi myös maceissä.

Lähestulkoon heti jutun kirjoittamisen jälkeen huomasin kuitenkin kirjoituksessa melko karkean heikkouden. Kirjoitin komentokehotteen hallitsemisen tärkeydestä ilman, että tuli kirjoitettua riviäkään siitä miten komentokehotetta oikeastaan käytetään. Eli kirjoitetaanpa nyt sitten seuraavaksi siitä käytöstä.

“Komentoliittymä, komentorivi eli komentokehote (engl. command line interface, CLI) on tapa järjestää ihmisen ja tietokoneen välinen kommunikointi.” ¹

Mielestäni loistava vertaus lähestyä komentokehotteen ja sen käyttelemiseen vaadittavien komentojen tunteminen tärkeyttä asiaan vihkiytyneelle on ajatella, kuinka tärkeää puusepälle on sahan tai vasaran käytön osaaminen.

Komentokehote koodarille on kuin vasara puusepälle

Ajatuksen omaisesti komentokehotetta voisi lähestyä graafisen käyttöliittymän vastaparina. Aivan kuin “normi ikkunanäkymässä” komentokehotteella liikutaan kansiosta toiseen, luodaan, muokataan ja poistetaan tiedostoja. Toisaalta komentokehotetta voidaan ajaa myös edellä mainitussa “normi ikkunanäkymässä” jotenka ajatus puhtaasta vastineesta graafiselle käyttöliittymälle ei ole kuitenkaan täysin pitävä. Atarin, Commodore 64:n, tai MS-DOS:n aikakausina eläneille komentokehotteen mieltäminen tavaksi käytellä konetta on varsin selvä. Mutta tänä päivänä suuri osa käyttäjistä ei ole koskaan käyttänyt tietokonetta kuin graafisen käyttölliittymän kautta. Senpä tähden yleisimpien komentojen oppimisen lisäksi onkin tärkeää ymmärtää myös mikä komentokehote oikeastaan on ja mistä se tulee.

Käyttäjän päätyessä komentokehotteen äärelle esiin tulee tekstipohjainen käyttöliittymä (Text-based user interface, TUI), jossa käyttäjä pääsee syöttämään tietoa yhdelle komentokehotteen riville. Tätä riviä ennen tarjottava tieto printtaa edellisiä komentoja, rivin alussa näytetään yleensä ensin koneen nimi, sekä järjestelmään kirjautunut käyttäjä, joita UNIXiin pohjaavissa komentokehotteissa seuraa $-merkki, joka kielii käyttäjälle siitä, että komentokehote on valmis ottamaan vastaan käyttäjän syöttämiä käskyjä. Ja kuten aiemmin tuli jo mainittua näillä käskyillä sitten pystytään käyttelemään tietokonetta. Seuraavana listaa omista yleisimmin käytössä olevista kommennoista ja niiden käyttötarkoituksista.

Komentokehotteella navigointi ja sitä helpottavien tietojen tulostus

Postausta kirjoittaessa huomasin, että teksti venyi venymistään lähinnä käsiteltävien asioiden määrän vuoksi mikä johtikin lopulta päätökseen, että palastelen tämän kirjoituksen lopulta kahteen eri osaan. Käsitelläänpä siis ensiksi komentokehotteella liikkumiseen sekä erilaisten käyttäjää hyödyntävien tietojen esiin tulostamiseen liittyviä komentoja.

pwd

Pwd:stä, present working directory, on muodostunut itselle majakka millä varmistuu kätevästi missä kansiossa sitä oikeastaan surfataan. Yleensä sitä on melko hyvin kartalla missä mennään ja mihin ollaan navigoimassa, mutta koska komennot ovat “ilmaisia” pwd on aina siinä käden ulottuvilla (aivan kuin ls) helpottamassa elämää komentokehotteen syövereissä.

pwd

/Users/lebron

cd

Cd (change directory) on tapa liikkua kansiorakenteessa komentokehotteella. Komento cd itsessään on eräänlainen oikotie, joka heittää käyttäjän suorilta omaan kotihakemistoon. Cd -komennon perään liittäessä kansiopolun pääsee navigoimaan kyseiseen polkuun, joko ilman aloittavaa kenoviivaa kyseisessä kansiossa sijaitsevaan alikansioon tai kenoviivalla aivan mihin tahansa kansioon standardissa tiedostohierarkiassa. Komento cd –  vie edelliseen kansioon mistä käyttäjä paikalle saapui ja cd .. hypäytttää käyttäjän kansiorakenteessa aina yhtä kansiota ylemmäs.

cd

pwd

/Users/lebron

cd Documents/

/Users/lebron/Documents

cd ..

pwd

/Users/lebron

cd –

pwd

/Users/lebron/Documents

cd /var/log/apache2

pwd

/var/log/apache2

ls

Ls (list files) on komento, joka listaa kyseisen hakemiston tiedostot ja kansiot. List on käyttökelpoinen työkalu myös kurkatessa pidemmälle kansiorakenteeseen missä vaikkapa tietty tiedosto tai kansio voisi olla (ls /var/log/apache2), tai tarkastettaessa tiedoston oikeuksia (ls -l) tai normaalisti “piilotettuja” tiedostoja (ls -a).

ls

api.json app.js

ls /var/log/apache2

access_log error_log

lebron$ ls -l

total 16

-rw-r–r– 1 lebron staff 46 6 Lok 11:47 api.json

-rw-r–r– 1 lebron staff 1639 25 Lok 09:48 app.js

ls -a

. .. api.json app.js

cat

Cat (Concatenate) tulostaa tiedoston sisällön komentokehotteelle. Tämä on loistava keino kurkata nopeasti mitä teidosto sisältää verrattuna vaikkapa siihen, että tiedosto pitäisi ensin avata ja jälkikäteen sulkea tekstieditorissa. Tekstieditorin käyttöä vastaan puhuu myös periaate huolellisuudesta – cat komennolla et voi missään tilanteessa vahingossakaan mennä muuttamaan tiedoston sisältöä. Tekstieditorilla tämä tietenkin luonnistuu.

ls

api.json app.js test.txt

cat test.txt

lorem ipsum

cat /Users/lebron/testi/test2

lorem lorem

less

Less:iä (Hiuksen halkojat huom! Less ei itse asiassa ole sinänsä unix-komento vaan itsenäinen ohjelma) pystyy käyttämään cat:n tavoin tiedostojen sisältöjen tulostamiseen, mutta “komentona” se toteuttaa tämän tehtävän astetta hienovaraisemmin. Siinä missä cat pukkaa ulos koko tiedoston less palastelee tulosteen tulostuksen näytölle niin, että välilyönti tulostaa aina kerralla ikkunallisen täyteen seuraavaa sisältöä ja lähes mikä tahansa muu näppäin (poislukien välilyönti ja näppäin q) yhden rivin. Lessin olemuksesta ohjelmana kielii myös se, että komentorivillä ei lessiä ajettaessa näy koneen tai kirjautuneen käyttäjän nimeä eikä $ -merkkiä, mikä tietysti tässä tapauksessa tarkoitaa sitä, ettei kyseinen terminaali ota vastaan käyttäjän siihen kirjoittamia komentoja. Näppäin q (quit) lopettaa ohjelman ajamisen missä vaiheessa tahansa ja se on tapa lopettaa ohjelma tiedoston sisällön loputtua minkä komentokehoite kertoo viimeiselle riville printatulla (END) :llä.

ls

api.json app.js test.txt

less test.txt

lorem ipsum

test.txt (END)

less /Users/lebron/testi/test2

lorem lorem

/Users/mikkometso/testi/test2 (END)

tail

Aivan kuten cat ja less myös tail tulostaa tietoa sille osoitetusta tiedostosta. Mutta cat:sta ja less:stä poiketen tail tulostaa vain sille osoitetun tiedoston “hännän”. Oletuksena tail tulostaa 10 viimeistä riviä, mutta tätä pääsee myös itse määrittelemään, esimerkiksi vaikkapa tilanteessa, jossa tahtoo vain sen viimeisimmän merkinnän logitiedoista (tail -1). Taililla luonnistuu myös helposti vaikkapa logitietojen jatkuvampi seuraaminen. Komennolla “tail -F tiedosto” komento “jää haistelemaan” tiedostoa tulostaen automaattisesti komentokehotteelle aina viimeisimmät tiedoston loppuun tulevat muutokset. Tätä kätevää työkalua voi helposti “demota” omalla koneellaan vaikkapa avaamalla itselleen textEdittiin tiedoston, jota lähtee sitten tail -F komennolla seuraamaan. Tiedoston tehtyjen muutosten ja tallenuksen jälkeen muutokset näkyvät myös komentorivillä. Tai tietenkin jos niikseen haluaa tail -F:fätä voi myös vaikkapa oman virtuaalipalvelimen apache serverin logeja ja katsella sinne saapuvasta liikenteestä logitietoihin tallentuvia merkintöjä. Komennon tail -F saa suljettua kuinkas muutenkaan ctrl + c komennolla.

ls

api.json app.js test.txt

tail test.txt

lorem ipsum

tail /var/log/apache2/access_log

::1 – – [15/Sep/2017:13:09:08 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:09:13 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:09:19 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:09:27 +0300] “GET /protoilu/ HTTP/1.1” 304 –

::1 – – [15/Sep/2017:13:10:01 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:10:03 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:10:17 +0300] “HEAD / HTTP/1.1” 403 –

::1 – – [15/Sep/2017:13:10:25 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:11:02 +0300] “GET / HTTP/1.1” 403 209

::1 – – [15/Sep/2017:13:12:40 +0300] “GET / HTTP/1.1” 403 209

tail -1 /var/log/apache2/access_log

::1 – – [15/Sep/2017:13:12:40 +0300] “GET / HTTP/1.1” 403 209

Komentokehotteen komentoja koskevan postauksen ensimmäinen osa päättyy tähän. Seuraavassa postauksessa kirjoitellaan sitten tiedostojen ja kansiorakenteen muokkaamisesta komentokehotteella.

Tämä blogipostaus liittyy Haaga-Helian tietojenkäsittelyn opintoihini ja ennen kaikkea yleiseen nörtteilyyn, josta toivon joku kaunis päivä tulevaisuudessa repivän vielä elantoni.

Edit 23.11.2017: Terävöitetty postauksen ensimmäistä kappaletta vastaamaan paremmin mistä tekstissä on kyse.

Edit 16.12.2017: Paranneltu esimerkkikoodien ulkoasua.

No Comments

Post A Comment