Mål for kvelden
Kurere terminalskrekk.
Å få et ekstra verktøy i verktøykassa.
Å få et grunnlag for videre utforskning og læring.
Slide 3
Slide 3 text
Agenda
16:30 Pizza
16:45 Introduksjon
16:50 Komme i gang
17:00 Grunnleggende filhåndtering
17:20 Tilgangskontroll
17:45 Søk etter filer
18:00 Søk etter innhold (med regexp)
18:20 Kombinering av kommandoer
18:30 Eksekvering
18:45 Prosesskontroll
18:55 Spørsmål
Slide 4
Slide 4 text
Hvorfor terminal?
Tilgjengelighet
Et kraftig verktøy
Mer effektivt enn pek og klikk
Ofte nødvendig for deployment
Enkelt å dokumentere fremgangsmåte
Slide 5
Slide 5 text
Hva er en "terminal"?
Programmet du kjører på din maskin
Terminal i Mac OS X
PuTTY i Windows
Kommandogrensesnittet til maskinen
Terminalen kjører et "shell"
Slide 6
Slide 6 text
Hva er et "shell"?
Programmet som tolker kommandoene dine
Finnes ulike varianter
Mye felles funksjonalitet
"bash" er det mest vanlige
Slide 7
Slide 7 text
Komme i gang
De fleste kommandoer støtter "--help" som argument
De fleste kommandoer har mer dokumentasjon i
"man "
Oppgave:
Logg inn på login.iterate.no med SSH
Finn enlinjersbeskrivelsen til kommandoen "cat"
Grunnleggende filhåndtering
Oppgave:
Bruk kommandoen "pwd" til å finne arbeidskatalogen din.
Lag mappen "terminalkurs" på hjemmeområdet ditt.
Bytt navn på mappen fra "terminalkurs" til "public_html".
Gå inn i mappen.
List innholdet i mappen.
Slide 10
Slide 10 text
Tilgangskontroll
Alle filer/kataloger har en eier, en gruppe og rettigheter
Rettigheter gis til eier, gruppe og røkla
Rettigheter gis for å lese (r), skrive (w) eller eksekvere (x)
Fire viktige kommandoer:
chown: endrer bruker (og evt. gruppe)
chgrp: endrer gruppe
chmod: endrer rettigheter
ls -l: viser alle tilgangsdetaljer
Slide 11
Slide 11 text
Tilgangskontroll
Rettigheter angis ofte som bitmasker til "chmod":
"750" eller "rwxr-x---" gir:
Eier: lese, skrive, og eksekvering (4 + 2 + 1 = 7)
Gruppe: Lese og eksekvering (4 + 0 + 1 = 5)
Røkla: Ingen tilgang (0 + 0 + 0 = 0)
"755" er vanlig på kataloger lesbare for alle
"644" er vanlig på filer lesbare for alle
"777" er aldri rett løsning
Slide 12
Slide 12 text
Tilgangskontroll
"chmod" støtter også følgende:
u+rw: Lese- og skrivetilgang til eier (user)
g+rx: Lese og eksekvering for gruppe
o-rwx: Ingen tilganger til røkla (others)
a+r: Lesetilgang til eier, gruppe og røkla
Se "man chmod" for mer detaljer.
Slide 13
Slide 13 text
Tilgangskontroll
Oppgave:
Gi røkla eksekveringstilgang på hjemmekatalogen din.
Slide 14
Slide 14 text
Søk etter filer
Oppgave:
Bruk kommandoen "find" til å liste alle filer i "/etc" som har
"ldap" i filnavnet sitt.
Slide 15
Slide 15 text
Søk i innhold (med regexp)
"grep" returnerer linjer som matcher en streng
"egrep" returnerer linjer som matcher en regexp
Regexp, eller RE, eller regular expressions er "regulære
uttrykk" som bl.a. er nyttige for å matche mønstre i innhold
Eksempel på regexp:
"\d?" matcher null eller ett heltall.
"\s+" matcher ett eller flere tegn.
"\w*" matcher null eller flere ord.
"[0-2]{3,4}" matcher tre eller fire siffer med verdi 0, 1 eller 2
"(a|b)*b" matcher en streng med vilkårlig antall "a" og "b"
som slutter på "b" (aaaab, b, babababab, men ikke abba)
Slide 16
Slide 16 text
Søk i innhold (med regexp)
Oppgaver:
Finn alle linjer i "/etc/services" som inneholder "http"
Finn hvilke filer under "/etc/init.d" som inneholder "http"
Slide 17
Slide 17 text
Kombinering av kommandoer
Output (stdout) fra en kommando kan brukes som input (stdin)
til neste ved hjelp av pipe ("|"):
curl http://www.iterate.no/ | grep integrasjon | tee result.
txt
find . -type d | xargs chmod a+x
Stdout kan redirectes til en fil:
echo "hello, world" > hello.txt
Stdout kan appendes til en fil:
echo "hello, world" >> hello.txt
Slide 18
Slide 18 text
Kombinering av kommandoer
Semikolon kjører en rekke kommandoer sekvensielt:
cd /etc; ls; cd /home; ls
Dobbel ampersand kjører en rekke kommandoer sekvensielt,
men kun dersom forrige kommando avsluttet uten feil:
cd /etc && ls && cd /home && ls
cd /finnes/ikke && ls && cd /home && ls
Slide 19
Slide 19 text
Eksekvering
En fil som er eksekverbar kan kjøres i shellet med ".
/filnavn"
Dersom det er et script fremfor et binært program må filen
ha en "shebang"-deklarasjon på første linje.
"shebang"-linjen forteller hvordan filen skal eksekveres.
Eksempel:
#! /bin/bash
#! /usr/bin/env python
Oppgave:
Lag "helloworld.sh" og kjør den som "./helloworld.sh"
Slide 20
Slide 20 text
Prosesskontroll
ps: Lister kjørende prosesser, prøv "ps auf" og "ps auxf"
top/htop: Lister kjørende prosesser interaktivt
kill : Avslutter prosessen med prosess-ID
killall : Avslutter alle prosesser med navn
pkill : Avslutter prosesser basert på diverse
kill -9 : Avslutter prosessen øyeblikkelig
Program kan kjøres i bakgrunnen ved å kjøre "program &"
Program som allerede kjører kan flyttes til bakgrunnen ved
å trykke CTRL+Z
Program som er i bakgrunnen kan hentes frem med "fg"
Slide 21
Slide 21 text
Prosesskontroll
Kommandoen "screen" kan brukes til å ha program
kjørende selv om du logger ut av terminalen.
Trykk CTRL+A+D for å koble fra screenen (deattach).
Neste gang du kobler til maskinen kan du koble til screenen
og programmet igjen med "screen -r" (reattach).