For at selv helt nybegynnere skal kunne henge med, tenkte jeg å avklare noen begreper aller først.

Kommandolinja («Command Line Interface» eller CLI på engelsk) baserer seg, i motsetning til grafiske brukergrensesnitt («Graphical User Interface» eller GUI på engelsk), utelukkende på tekst. For å bruke kommandolinja trenger man et shell, som er grensesnittet som tolker det du skriver, og overleverer det til datamaskinen. Det finnes flere forskjellige shell, men jeg tror vi for enkelhets skyld forholder oss til bash på Linux og kommandolinja på Windows.

For å nå et shell bruker man en terminalemulator. Dette er rett og slett vinduet du åpner når du skal skrive inn kommandoer i shellet. På Windows ligger CMD inne som standard, så vi benytter oss av den. Igjen finnes det mange forskjellige varianter på Linux, men de mest kjente er gnome-terminal, xterm og konsole. De gjør stort sett det samme, så det har ikke så stor betydning hvilken du bruker.

Hvor finner jeg kommandolinja?

Jeg kommer til å dekke noen kommandoer for Windows også, så vi kan jo begynne med den. Du går kort og godt i startmenyen, velger Kjør (Run) og skriver

cmd

og trykker enter.

På Linux finnes det som nevnt flere shell og terminalemulatorer å velge mellom. Som oftest får du terminalen i fullskjerm ved å trykke Ctrl-Alt-F1 (Ctrl-Alt-F7 for å komme tilbake til det grafiske brukergrensesnittet), men du kan også åpne den som et vindu ved å velge Konsole, Terminal eller xterm i programmenyen. Eksempelvis finner du Terminal under Programmer->Tilbehør på Ubuntu.

Det første du ser når du åpner kommandolinja er en ledetekst. Denne kan konfigureres til å vise forskjellig informasjon, men den kan for eksempel se slik ut:

audun@tjener:~$

I eksemplet viser den brukernavn, maskinnavn og filsti, etterfulgt av et $-tegn. Skriver du inn en kommando og trykker Enter, vil du få opp ledeteksten på nytt når kommandoen er ferdig med å kjøre.

Syntaks

Ettersom datamaskiner er dumme og må ha alt inn med teskje, er det laget en egen grammatikk for kommandolinja. I all hovedsak er den bygget opp slik:

verbal subjekt objekt --adverb --adjektiv

eller på Windows

verbal subjekt objekt /adverb /adjektiv

Det er kun verbal som alltid er påkrevet, og i mange tilfeller er de andre valgfrie eller fraværende. Den enkleste formen for kommando er altså

verbal

På fagterminologi kalles gjerne det jeg her refererer til som adverb og adjektiv brytere eller argumenter. Verbal kalles gjerne bare kommandoen eller programmet, men jeg synes likevel at det kan være greit å dra noen paralleller til et språk vi kjenner.

Da er det kanskje på tide at vi skriver vår første kommando. Åpne terminalen og skriv

ls

på Linux, eller

dir

på Windows. ls (list?) og dir (directory) er kommandoer for å liste opp filer og mapper. I dette tilfellet vises filer og mapper i gjeldende mappe, ettersom vi ikke har angitt noen filsti. For å illustrere en litt mer avansert variant, kan vi liste innholdet i en annen mappe med skjulte filer:

ls /home/audun --all

og på Windows:

dir "C:\Documents and Settings\audun" /ah

Standard inndata og utdata

Input og output Kommandoene er kraftige i seg selv, men det er først når man begynner å behandle output og input (heretter kalt utdata og inndata) med forskjellige kommandoer at det virkelig begynner å bli nyttig.

Som tegningen viser kan en kommando som regel ta inndata og levere utdata til forskjellige kilder, for eksempel en fil eller en annen kommando.

Pipe

Det kanskje mest nyttige med kommandolinja er muligheten for å sende resultatet fra en kommando til en annen.

For å ta et konkret eksempel: En ansatt i kommunen lurte på hvorfor han ikke har fått e-posten som fylkeskommunen har sendt ham. «cat» (Concatenate) er en kommando for å vise alt innholdet i en fil, så man kan skrive

cat /var/log/mail.log

for å få listet opp alt innholdet i e-postloggen.

Vil man hente ut bare linjer som inneholder @hedmark.org, kan man bruke kommandoen «grep». «-i» gjør at den ikke bryr seg om å skille mellom store og små bokstaver.

cat /var/log/mail.log | grep -i @hedmark.org

Resultatet fra cat-kommandoen blir med andre ord brukt som inndata til grep-kommandoen.

Filer som inndata og utdata

Man kan også bruke «krokodilletegn» for å hente data fra eller skrive data til en fil. For å gjøre nøyaktig det samme som i kommandoen over, kan man med andre ord bruke følgende kommando:

grep -i @hedmark.org < /var/log/mail.log

Bruker du krokodilletegnet andre veien, skrives output-en til en fil i stedet for til skjerm.

grep -i @hedmark.org < /var/log/mail.log > /home/audun/e-post_fylkeskommunen.log

Dersom du ønsker å ha en fortløpende logg uten å overskrive kan du bruke doble krokodilletegn. Resultatet blir da lagt til helt på slutten av fila.

grep -i @hedmark.org < /var/log/mail.log >> /home/audun/e-post_fylkeskommunen.log

I Kommandolinja #3 vil jeg å gå igjennom hvordan man som nybegynner kan begynne å bruke kommandolinja effektivt, og hvordan man skal bruke hjelpefunksjonene i kommandolinja.

Ref:

  1. Input/Output Redirection
  2. tuXfiles – Linux command line tutorial for newbies
  3. Learning the Shell