Jokaisen Mac-käyttäjän tulisi tuntea Linuxin komentokehote

Trinity uses nmap in The Matrix Reloaded

Jokaisen Mac-käyttäjän tulisi tuntea Linuxin komentokehote

Vuonna 1999 julkaistu tieteistoimintaklassikko The Matrix sementoi komentokehotteen osaksi Hollywoodin blockbuster-leffojen levittämää ilosanomaa. Viimeistään tässä vaiheessa vääjäämättä loppua kohden tikittävä aikapommi ja elokuvan sankarin vaikea päätös valitako katkaistavaksi vihreä, vai punainen piuha sai väistyä näppäimistöjä villisti nakuttavien huonoryhtisten nörttien tieltä.

Komentokehote eri muodoissaan on näytellyt merkittävää roolia tietotekniikassa jo paljon ennen graafisia käyttöliittymiä, internettiä tai mobiililaitteita. Sitä se tekee jatkossakin.

Komentokehote, joskus komentorivi tai komentoliittymä (engl. command line interface, CLI), on suorasukainen tapa järjestää tietokoneelle sitä käyttävän ihmisen viestintä. Näyttöpäätteiden tultua mukaan osaksi tietokoneiden kokoonpanoa 1970-luvulla komentokehoite kehittyi nykyisin yleisimmin miellettyyn muotoonsa näytölle tulostuvina riveinä ja käyttäjän koneen näytölle kirjoittamina komentoina. Viime viikon oppitunnilla nousikin esiin varsin tyhjentävä huomio, että komentokehote eri muodoissaan on osaltaan näytellyt merkittävää roolia tietotekniikassa jo paljon ennen graafisia käyttöliittymiä, internettiä tai mobiililaitteita. Tänä päivänä komentokehotteen rooli on ehkä merkittävämpi kuin koskaan sen koko pitkän olemassa olonsa historian aikana.

Unixiin perustuvien käyttöjärjestelmien sietämätön keveys

“Unix on laitteistoriippumaton käyttöjärjestelmä, jonka kehityksen aloittivat AT&T:n Bell Labsin työntekijät, ml. Ken Thompson ja Dennis Ritchie vuonna 1969.” ¹

Linux eri jakelupaketteineen sekä Applen MacOs pohjaavat molemmat Unixiin. Näin ollen voisikin todeta, että molempien käyttöjärjestelmien varsin kauas edennyt tarina jakaa saman “dna:n”. Tämä “Unix-dna” takaa molemmissa ympäristöissä lähes kaikessa yhtenevät komentokehote-komennot ja koska komentokehoite on alunperinkin suunniteltu käyttöjärjestelmän äärimmäisen tehokkaaksi työhevoseksi siihen tukeudutaan vuosikymmen vuosikymmenien perään. Komentokehoiteen eduiksi graafisiin käyttöliittymiin nähden voidaan lukea esimerkiksi varsin helposti hoituva komentojen automatisointi skriptaamalla sekä etäyhteyksien luonti SSH:lla. ²

Kuvankäsittelymaailmasta periytyneiden alan standartien vuoksi vuosia mäkkikäyttäjäksi tunnustautuneen onkin ollut ilahduttavaa huomata, että vuosien varrella kertyneestä Linux-jakeluiden (tällä hetkellä käytössä Ubuntu 16.04 LTS) tehokäytöstä on ollut suurenmoista hyötyä myös mäkin puolella.

Tehtävä

Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

apt-get install npm
E: Could not open lock file /var/lib/dpkg/lock – open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

Rivillä 1 komennolla apt-get install npm yritetään asentaa paketinhallintajärjestelmästä npm niminen ohjelma.
Rivillä 2 komentokehoite printtaa esiin virheen, koska käyttäjällä ei ole suoraan oikeuksia avata /var/lib/dpkg hakemistossa sijaitsevaa lock -tiedostoa.
Rivillä 3 komentokehote virheilmoittaa, ettei voi avata hakemistoa /var/lib/dpkg/ ja kysyy ystävällisesti olisiko käyttäjä mahdollisesti unohtanut syöttää tekstikentän alussa määritelmän pääkäyttäjätasolla suoritettavaksi tarkoitetusta komennosta.

sudo !!
sudo apt-get install npm
[sudo] password for mehto:
Reading package lists… Done
Building dependency tree
Reading state information… Done
npm is already the newest version (3.5.2-0ubuntu4).
The following packages were automatically installed and are no longer required:
gcc-5-base:i386 libasound2:i386 libasound2-plugins:i386 libasyncns0:i386 libdbus-1-3:i386 libfftw3-single3:i386
libflac8:i386 libgles1-mesa libgomp1:i386
libice6:i386 libjack-jackd2-0:i386 libjson-c2:i386 libltdl7:i386 libogg0:i386 liborc-0.4-0:i386 libpam-systemd:i386
libpulse0:i386 libpulsedsp:i386
libsamplerate0:i386 libsm6:i386 libsndfile1:i386 libspeexdsp1:i386 libstdc++6:i386 libtdb1:i386 libvorbis0a:i386
libvorbisenc2:i386
libwebrtc-audio-processing-0:i386 libwrap0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386 libxcb1:i386
libxdmcp6:i386 libxext6:i386 libxtst6:i386 snap-confine
Use ‘sudo apt autoremove’ to remove them.
0 upgraded, 0 newly installed, 0 to remove and 147 not upgraded.

sudo !! komento ajaa “Super User DO”:na aina käyttäjän edellisen komentoriville syötetyn komennon.
Se on siis yhdensorttinen oikotie todeta tässä tapauksessa komento sudo apt-get install npm mikä printtaantuukin riville 2.
Rivillä 3 komentokehote pyytää käyttäjän salasanaa admin oikeuksien varmentamiseksi.
Rivillä 4 luetaan paketinhallinnan listat ja etsitään kyseinen npm-ohjelma.
Rivillä 5 rakennetaan tiedot ohjelman mahdollisista riippuvuussuhteista (käyttääkö jotain muuta tarvittavaa ohjelmaa yms.)
Rivillä 7 komentokehoite toteaa, että npm on jo asennettu koneelle viimeisimpänä päivitettynä versiona.
Riveillä 8-16 printtaantuu tieto aikanaa automaattisesti asennetuista paketeista, joita ei ohjelman käytön kannalta tarvita.
Rivillä 17 komentokehote neuvoo ajamaan komennon “sudo apt autoremove” edellä mainittujen pakettien siivoamiseksi.
Lopuksi rivillä 18 komentokehote vetää yhteen komennon lopputuleman päivitettyjen, uutena asennettujen, poistettujen, sekä vaille toimenpiteitä jääneiden ohjelmien suhteen.

Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.

sudo apt-get install nodejs npm sublime-text firefox vlc

Node.js on JavaScript-sovellusalusta, npm varsin mutkattomasti edelliseen liittyvä paketinhallintajärjestelmä, Sublime Text fronttipuolen koodailuun käyttämäni tekstieditori, Firefox nettiselain testaamista varten sekä VLC videoiden ja tässä tapauksessa ennen kaikkea tekemisen ohessa kuunneltavan musiikin toistamiseen.

Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

Asennukseen valikoitui ohjelmista curl, oh-my-zsh sekä realpath.

curl on komentorivillä ajettava ohjelma jolla voidaan helposti vastaanottaa ja lähettää tiedostoja url-osoitteita hyödyntäen.

oh-my-zsh on framework komentokehotteen toiminnallisuuksien ja ulkoasun räätälöintiin.

realpath on kätevä pikku ohjelma, jonka ajamalla komennon loppuosaan liitetyn tiedostonimen kanssa komentokehotteeseen tulostuu kyseisen tiedoston koko juurihakemisto.

Tämä blogipostaus liittyy Haaga-Helian tietojenkäsittelyn opintoihini ja ennen kaikea Linux palvelimet ict4tn021 -kurssiin, jonka rakenteesta, oppimistavoitteista ja aikataulusta voit lukea lisää täältä.

No Comments

Post A Comment