Miksi käyttää komentoriviä?

Aikaisemmin olet luultavasti tottunut käyttämään graafisella käyttöliittymällä varustettuja ohjelmia. Tämä ei kuitenkaan ole ainoa tapa työskennellä, eikä usein edes kovin käytännöllistä. Monet IT-alan ammattilaiset tekevät osan työstään komentoriviä käyttäen. Tässä materiaaliosiossa tutustumme komentoriviin.

Attention

Vaikka kaikki kurssin tehtävät saakin periaatteessa tehtyä graafista käyttöliittymää käyttäen, pidemmällä tähtäimellä ajattelevan kannattaa harjoitella myös komentorivin käyttämistä. IT-alalla työskentely ilman komentorivin hallintaa on pidemmän päälle kuin yrittäisi poimia riisinjyviä nyrkkeilyhanskat kädessä.

Erityisesti tietotekniikan opiskelijat haluavat siis oppia komentorivin käyttöä, mutta siitä on hyvin todennäköisesti hyötyä myös muiden alojen opiskelijoille.

Graafinen käyttöliittymä vs. komentorivi

Graafisella käyttöliittymällä varustettujen ohjelmien käyttö on yleensä helppoa ja nopea oppia.

Graafinen käyttöliittymä tuo kuitenkin rajoitteita. Käyttäjä voi suorittaa vain niitä toimintoja ja käsitellä niitä asioita, jotka hän näkee. Jotkin toiminnot vaativat käyttöliittymässä navigointia, joka voi olla välillä hyvinkin hidasta. Mietitään vaikka yksinkertaista operaatiota, tiedostojen siirtämistä paikasta toiseen. Yksi tapa tehdä tämä on:

  • käyttäjä avaa tiedostonhallintaohjelman
  • navigoi paikkaan, jossa tiedosto on
  • valitsee kopioitavan tiedoston
  • määrittelee tiedoston kopioitavaksi joko valikon kautta tai pikanäppäimillä
  • navigoi paikkaan, johon haluaa tiedoston kopioitavan
  • valitsee valikon tai pikanäppäinten avulla liitä-operaation.
../../_images/graafinen_file_manager.png

Kuvassa on navigoitu kahteen eri kansioon, joista etenkin toinen on syvällä tiedostojärjestelmän syövereissä. Nyt, kun hakemistot ovat näkyvillä, voidaan kopiointi suorittaa.

Komentorivillä vastaavanlainen operaatio koostuu yhdestä tai kahdesta vaiheesta:

  • komentorivi avataan
  • komentoriville kirjoitetaan käsky: cp <komentovivut> <lähde> <kohde>.
../../_images/komentorivi.png

Kuvassa käyttäjä on suorittamassa samaa kopiointia kuin edellisessä kuvassa, mutta tällä kertaa komentorivillä. Haluttuihin hakemistoihin päästään käsiksi kirjoittamalla, missä ne sijaitsevat.

Komentoriviltä voi siis esimerkiksi suorittaa haluamansa operaation syöttämällä yhden komennon.

Miksi komentorivin käyttämistä pitäisi harjoitella?

Kysyimme tätä muutamalta IT-alan ammattilaiselta. Jos olet jo täysin innoissasi aloittamassa komentorivin opiskelua, voit huoletta hypätä näiden vakuuttelujen yli ja alkaa töihin seuraavan osion parissa.

Ohjelmistokehittäjän näkökulma

../../_images/anssi_heiska.png

– Kuka olet?

– Anssi Heiska. Työskentelen suunnitteluinsinöörinä Bitwisella, eli teen monia eri tehtäviä ohjelmistoprojekteissa.

– Mihin käytät komentoriviä työssäsi?

– Komentorivi on jatkuvassa käytössä graafisten käyttöliittymien rinnalla. Vakavassa ohjelmistokehityksessä tarvittavien build-työkalujen jotkin ominaisuudet ovat järkevästi saatavilla vain komentorivillä. Graafiset integroinnit ainakin helposti laahaavat perässä, jos niitä tulee ollenkaan. Käytännössä jokainen isompi projekti vaatii myös hieman custom työkaluja komentiriviscriptien-muodossa. Lisäksi komentorivi on usein ainoa tapa käyttää verkon päässä olevia koneita.

– Mitä hyötyä komentorivin käyttämisestä on?

– Komentorivillä käytössäni on koko ajan pieni ohjelmointikieli, mikä helpottaa työskentelyä.

Komentorivi tekee tietokoneen käyttöliittymästä “koostuvan” (composable, osia voi yhdistää vapaasti, ilman, että niitä on erikseen suunniteltu siihen). Esimerkiksi ohjelma ./foo voi tuottaa tulosta jonka voi putkittaa eteenpäin vaikkapa ohjelmalle ./bar ja lopuksi koko systeemin suoritusajan voi mitata komennolla time ilman mitään muutoksia ohjelmiin. Kaikki tämä tapahtuu vain yhdellä komennolla tyyliin time ./foo | ./bar. Graafisilla käyttöliittymillä ei oikein ole mitään vastaavaa.

Tehtävästä riippuen komentorivi voi olla merkittävästi ilmaisusvoimaisempi kuin graafinen käyttöliittymä. Esimerkiksi virheenselvityksessä logitiedostoista etsimiseen komentorivi on lyömätön. Tarkastellaan vaikkapa tehtävää “etsi näistä kymmenistä hajautetun järjestelmän tuottamista satojen megojen kokoisista logitiedostoista tietyllä UUID:llä edenneen datan tapahtumat”. Tämä olisi todella hankalaa graafisesti, komentorivillä riittää yksi komento: grep uuid *.log | sort.

Tietoturva-asiantuntijan näkökulma

../../_images/markku_vajaranta.jpg

– Kuka olet?

– Olen Markku Vajaranta ja työskentelen Tampereen yliopiston Tietotekniikan laboratoriossa tohtorikoulutettavana. Työtehtäviini kuuluu tutkimuksen ja opetuksen lisäksi tutkimusympäristöjen ylläpito ja kehittäminen.

– Mihin käytät komentoriviä työssäsi?

– Käytän komentoriviä todella paljon. Tutkimusta varten rakentelen vaaditut ympäristöt etäyhteyksien yli komentoriviltä, tallennan tulokset tekstimuodossa ja parsin niitä Linuxin työkaluilla. Mikäli tarvitsen jotain koodia, teen sen valmiiksi omalla koneella, työnnän ne Gitin kautta “Deploy keys” ominaisuudella private-repoista suoraan kohteeseen. Lisäksi mainittakoon, että suurin osa käytetyistä tietoturvaan liittyvistä open source -ohjelmista esim. skannerit ja testaustyökalut toimivat vain komentoriviltä.

– Mitä hyötyä komentorivin käyttämisestä on?

– Opetusta varten joudun usein myös pystyttämään ympäristöjä. Silloin komentorivin skriptattavuus on tärkeä ominaisuus. Tämä tarkoittaa, että komentoja voidaan tuottaa ohjelmallisesti. Ilman sitä joutuisin toistamaan graafisella puolella saman hiirijumpan muutamia satoja kertoja.

Windows-ympäristössä työskentelevän tietojärjestelmäylläpitäjän näkökulma

– Kuka olet ja mitä teet työksesi?

– Jaakko Luoto, järjestelmäasiantuntija yliopiston IT-palveluissa. Toimin tiiminvetäjänä IT-palveluiden tiimissä, jonka vastuulla on Windows-, Mac- ja Linux-työasemien keskitetty ylläpito. Meillä on kaikkien kolmen käyttöjärjestelmän hallintaan keskitetyt järjestelmät. Yliopistolla on n. 4000 työasemaa henkilökunnan ja opiskelijoiden käyttöön. Itse työskentelen näistä lähinnä Windows-työasemien parissa.

– Mihin käytät komentoriviä työssäsi?

– Windowsia käytetään perinteisesti ensisijaisesti graafisella käyttöliittymällä, mutta se tarjoaa myös komentorivitoiminnot. Windows kehittyy jatkuvasti kohti kattavampaa hallittavuutta komentoriviltä tai skriptien ohjelmoinnin avulla Windowsin mukana tulevalla PowerShell-kielellä. Monet uudet järjestelmänhallinnan toiminnot ovat käytettävissä vain PowerShellillä, eikä niihin ole tarjolla lainkaan graafista käyttöliittymää.

Kirjoitan työssäni PowerShelliä ja perinteisempiä cmd-skriptejä, joilla automatisoidaan mm. tietokoneiden asetusten muutoksia, ohjelmistojen asennuksia ja päivityksiä. Myös päivittäinen tietokoneella työskentely kuten tiedostojen käsittely onnistuisi PowerShellillä, mutta olen itse tottunut käyttämään sekaisin graafista käyttöliittymää, Windowsin perinteistä komentokehotetta ja Linuxistakin tuttuja GNU-komentorivityökaluja.

– Mitä hyötyä komentorivin käyttämisestä on?

– Kun hallitaan useita tietokoneita kerralla, komentorivin ja skriptien avulla asioita voi automatisoida työn tehostamiseksi ja virheiden vähentämiseksi. Microsoftin pilvipalveluiden ja Windows-palvelinten hallinta tukeutuu myös PowerShelliin. Sen osaamista kysytään nykyään käytännössä kaikissa työnhauissa Windows-asiantuntijan töihin, ja teknisesti vaativampiin tehtäviin sitä myös edellytetään.

Komentorivin käyttöön totuttelemalla pystyy helpommin ottamaan haltuun myös sellaisia järjestelmiä, joissa graafista käyttöliittymää ei ole.

Linux-ympäristössä työskentelevän tietojärjestelmäylläpitäjän näkökulma

– Kuka olet ja mitä teet työksesi?

– Timo Alatalo, järjestelmäsuunnittelija yliopiston IT-palveluissa. Vastaan yliopiston Linux työasema- ja palvelinympäristön kehittämisestä ja ylläpidosta. Työhön sisältyy itse käyttöjärjestelmän ylläpitoa ja ylläpitotyökalujen ylläpitoa sekä Linux-alustalla pyörivien palveluiden kehittämistä ja ylläpitoa. Yliopistolla on yhteensä vajaa 400 Redhat Linux konetta (virtuaalipalvelimia, pöytäkoneita ja läppäreitä).

– Mihin käytät komentoriviä työssäsi?

– Kysymyksen voisi kääntää muotoon “mihin en käytä komentoriviä”, koska komentorivin käyttö on yleensä oletus. Graafisilla käyttöliittymillä varustettuja työkaluja käytän tehtävissä, jotka on yksittäisiä sekä harvinaisempia ja/tai monimutkaisempia. Eli tilanteissa, joissa komentoja ja niiden parametreja ei välttämättä muista ulkoa ja toisaalta tilanteissa, joissa ei ole tarvetta suorittaa samaa asiaa useampaan kertaan tai useammalle koneelle.

Linuxissa komentorivi on oikeastaan ohjelmointikieli tai skriptikieli. Komentoriviltä ajetaan joko yksittäisiä komentoja (esimerkiksi “ssh linux-ssh1.cc.tut.fi uptime”) tai skriptejä (esimerkiksi “for i in seq 1 2 ; do ssh linux-ssh${i}.cc.tut.fi uptime ; done”). Skripti voidaan myös kirjoittaa tekstitiedostoon ja ajaa skripti, eli ohjelma, ajamalla kyseinen tiedosto.

– Mitä hyötyä komentorivin käyttämisestä on?

– Monessa tehtävässä vaaditaan joka tapauksessa näppäimistön käyttöä (eli kirjoittamista). Komentorivin käyttö nopeuttaa työskentelyä kun ei tarvitse vaihtaa näppäimistön ja hiiren välillä. Lisäksi komennon kirjoittaminen klikkaamiseen verrattuna antaa monesti joitain sekunnin osia aikaa aikaa miettiä mitä on tekemässä.

Jos tehtävä täytyy tehdä usein tai useammalle koneelle, komentorivin ja komentorivihistorian tai skriptin käyttö helpottaa ja nopeuttaa työskentelyä. Saman komennon ajaminen komentorivihistoriasta tai skriptillä useammalle koneelle vähentää myös virheitä.

Komentorivin käyttäminen on meidän tehtävissä niin tärkeää, että komentorivin käyttöön ja skripteihin liittyvistä asioista kysytään käytännössä aina työhaastattelussa ja käytännössä komentorivin käytön osaaminen on edellytys työpaikan saannille.

Yhteenveto

Kaikki gurut käyttävät komentoriviä. Käytä sinäkin.