Linux-kommandolinje for nybegynnere - PVV

Download Report

Transcript Linux-kommandolinje for nybegynnere - PVV

Linux-kommandolinje for
nybegynnere
PVV-kurs 2013-09-19
Linux-kommandolinje for
Unix nybegynnere
PVV-kurs 2013-09-19
Oversikt over kurset
Innledning
Grunnleggende konsepter
Filer og kataloger
Prosesser
Skallet
Kommandoer
Filbehandling
Tekstbehandling
Prosessbehandling
Nettverk
Dokumentasjon
Hva er PVV?
I
Forening for datainteresserte studenter og ansatte ved NTNU
I
Stiftet i 1987 med tilknytning til NTH
I
Har to rom i andre etasje i Sentralbygg 2 (gå opp trappen like ved
kiosken på Stripa)
I
Sosialt og lærerikt
Linux-kommandolinje for nybegynnere
2013-09-19
3 / 82
Hvem er jeg?
I
Øystein Skartsæterhagen
I
PVV-medlem siden 2004
I
Studerte på NTNU 2004–2011 og endte til slutt opp med mastergrad i
matematikk
I
Stipendiat ved Institutt for matematiske fag
Linux-kommandolinje for nybegynnere
2013-09-19
4 / 82
Hvem er du?
?
Linux-kommandolinje for nybegynnere
2013-09-19
5 / 82
Innledning
Plan
Innledning
Grunnleggende konsepter
Filer og kataloger
Prosesser
Skallet
Kommandoer
Filbehandling
Tekstbehandling
Prosessbehandling
Nettverk
Dokumentasjon
Linux-kommandolinje for nybegynnere
2013-09-19
6 / 82
Innledning
Hva er Unix?
I
Unix var et operativsystem.
I
Etter hvert som Unix spredde seg, ble det modifisert og videreutviklet
av mange folk på forskjellige steder, og det ble til mange forskjellige
operativsystemer som ligner mye på hverandre.
I
Linux (mer korrekt: GNU/Linux) er et operativsystem som er laget for
å ligne på Unix.
I
Vanligvis brukes «Unix» som fellesbetegnelse på alle disse systemene.
I
For mer informasjon, gå på kurset «Introduksjon til Unix» for to uker
siden.
Linux-kommandolinje for nybegynnere
2013-09-19
7 / 82
Innledning
Hva er en terminal?
I
I
I
En terminal er en dings som brukes til tekstlig kommunikasjon med en
datamaskin.
Det man skriver på tastaturet blir sendt til datamaskinen, og den
sender tekst tilbake.
Datamaskinen kjører et program som kalles et skall. Skallet tolker og
utfører kommandoene som kommer fra terminalen.
Linux-kommandolinje for nybegynnere
2013-09-19
8 / 82
Innledning
Virtuelle terminaler
I
Nå for tiden bruker vi vanligvis virtuelle terminaler.
I
En virtuell terminal er et program som etterligner en fysisk terminal.
I
Det er fremdeles et skall-program som tolker kommandoene som
skrives i terminalen.
Linux-kommandolinje for nybegynnere
2013-09-19
9 / 82
Innledning
Hvordan få tak i en terminal og et skall
Hvis du har en Unix-variant (f.eks. Linux eller Mac OS X):
I
Finn et program som heter «Terminal» eller noe som ligner.
Hvis du har Windows:
I
Last ned programmet PuTTY:
http://www.chiark.greenend.org.uk/~sgtatham/putty/
I
Bruk PuTTY til å logge inn på en Unix-maskin du har brukerkonto på.
I
Hvis du er NTNU-student, har du brukerkonto på
login.stud.ntnu.no
Linux-kommandolinje for nybegynnere
2013-09-19
10 / 82
Innledning
PuTTY (1): Velg tegnkoding
I
Velg «Translation» fra menyen til venstre, og sett «Remote character
set» til «UTF-8».
Linux-kommandolinje for nybegynnere
2013-09-19
11 / 82
Innledning
PuTTY (2): Hvor vil du?
I
I
Gå tilbake til «Session».
I feltet «Host name» skriver du navnet på maskinen du vil koble til.
I
I
I
Hvis du er NTNU-student, kan du skrive login.stud.ntnu.no
Hvis du er PVV-medlem, kan du skrive login.pvv.ntnu.no
Trykk på «Open»-knappen.
Linux-kommandolinje for nybegynnere
2013-09-19
12 / 82
Innledning
PuTTY (3): Fare! Fare!
I
Hvis du ikke har logget inn på samme maskin før, får du en advarsel
om at PuTTY ikke kan være sikker på at maskinen er den den utgir
seg for å være.
I
Med mindre du er veldig paranoid, kan du svare «Ja» her.
Linux-kommandolinje for nybegynnere
2013-09-19
13 / 82
Innledning
PuTTY (4): Logg inn
I
Hvis du logger inn på login.stud.ntnu.no, er brukernavn/passord
det samme som til for eksempel NTNU-epostkontoen din og Innsida.
Linux-kommandolinje for nybegynnere
2013-09-19
14 / 82
Innledning
PuTTY (5): Hurra, vi har et skall!
I
Happy happy joy joy
Linux-kommandolinje for nybegynnere
2013-09-19
15 / 82
Innledning
En liten demonstrasjon
(Her skal jeg hoppe til en terminal og demonstrere noen enkle
kommandoer.)
Linux-kommandolinje for nybegynnere
2013-09-19
16 / 82
Grunnleggende konsepter
Plan
Innledning
Grunnleggende konsepter
Filer og kataloger
Prosesser
Skallet
Kommandoer
Filbehandling
Tekstbehandling
Prosessbehandling
Nettverk
Dokumentasjon
Linux-kommandolinje for nybegynnere
2013-09-19
17 / 82
Grunnleggende konsepter
Filer og kataloger
Filer og kataloger
Linux-kommandolinje for nybegynnere
2013-09-19
18 / 82
Grunnleggende konsepter
Filer og kataloger
Om filer i Unix
I
«Alt er en fil»
I
Alle filene er ordnet i ett katalogtre, selv om de kan befinne seg på
forskjellige disker
Linux-kommandolinje for nybegynnere
2013-09-19
19 / 82
Grunnleggende konsepter
Filer og kataloger
Forskjellige former for filer
I
Vanlig fil (regular file): Inneholder data lagret på et lagringsmedium
(harddisk, SSD, CD e.l.)
I
Katalog (directory ): Inneholder andre filer
I
Spesiell fil (special file eller device file): Knyttet til en
maskinvareenhet
I
Symbolsk lenke (symbolic link): Peker på en annen fil
Linux-kommandolinje for nybegynnere
2013-09-19
20 / 82
Grunnleggende konsepter
Filer og kataloger
Katalogtreet
/
bin
cp
ls
dev
mkdir
sda
home
sda1
lib
oystein
test
hallo.txt
Linux-kommandolinje for nybegynnere
2013-09-19
fisk
fugl
21 / 82
Grunnleggende konsepter
Filer og kataloger
Absolutte stier
I
Vi kan spesifisere en fil i treet ved hjelp av en absolutt sti
I
En absolutt sti starter alltid med /, og angir alle katalogene i veien fra
roten og ned til den aktuelle filen
Linux-kommandolinje for nybegynnere
2013-09-19
22 / 82
Grunnleggende konsepter
Filer og kataloger
Absolutte stier: Eksempler
/
bin
cp
ls
dev
mkdir
sda
home
sda1
lib
oystein
test
I
/
I
/bin/ls
I
/dev/sda1
I
/home
I
/home/oystein/test/hallo.txt
Linux-kommandolinje for nybegynnere
hallo.txt
2013-09-19
fisk
fugl
23 / 82
Grunnleggende konsepter
Filer og kataloger
Relative stier
I
En relativ sti angir hvor en fil er i forhold katalogen vi befinner oss i
I
En relativ sti starter ikke med /
Linux-kommandolinje for nybegynnere
2013-09-19
24 / 82
Grunnleggende konsepter
Filer og kataloger
Relative stier: Eksempel
$ ls /home/oystein/test/fugl
albatross.txt
and.txt
$ cd /home/oystein
$ ls test/fugl
albatross.txt
and.txt
$ cd test/fisk
$ ls ../fugl
albatross.txt
and.txt
Linux-kommandolinje for nybegynnere
2013-09-19
25 / 82
Grunnleggende konsepter
Filer og kataloger
Hjemmekatalogen
I
Hver bruker har en hjemmekatalog til å lagre filene sine i
I
Når man åpner en ny terminal, starter man vanligvis i
hjemmekatalogen sin
I
Hjemmekatalogene har ofte navn som /home/oystein, men de kan
også ligge andre steder
I
Uansett hvor hjemmekatalogene ligger, kan vi skrive ~oystein for
hjemmekatalogen til brukeren oystein
I
For sin egen hjemmekatalog kan man skrive bare ~
Linux-kommandolinje for nybegynnere
2013-09-19
26 / 82
Grunnleggende konsepter
Filer og kataloger
To spesielle filnavn: . og ..
I
De to filnavnene . og .. finnes i enhver katalog
I
. står for katalogen den befinner seg i
I
.. står for katalogen over
Linux-kommandolinje for nybegynnere
2013-09-19
27 / 82
Grunnleggende konsepter
Filer og kataloger
Skjulte filer
I
Filer med navn som begynner med punktum er skjulte filer
I
Disse tas vanligvis ikke med når vi lister opp filer med ls (bruk ls -a
for å se dem)
I
Skjulte filer i hjemmekatalogen brukes ofte av forskjellige programmer
som konfigurasjonsfiler eller til å lagre brukerdata i (for eksempel
.bashrc, .emacs, .mozilla, .ssh)
Linux-kommandolinje for nybegynnere
2013-09-19
28 / 82
Grunnleggende konsepter
Filer og kataloger
Hvilke tegn kan brukes i filnavn?
I
Du kan bruke de fleste tegn i filnavn
I
Du bør bare bruke bokstavene i det engelske alfabetet, tall, punktum,
bindestrek og understrek:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
.-_
I
Første tegn i filnavnet bør ikke være bindestrek.
Linux-kommandolinje for nybegynnere
2013-09-19
29 / 82
Grunnleggende konsepter
Prosesser
Prosesser
Linux-kommandolinje for nybegynnere
2013-09-19
30 / 82
Grunnleggende konsepter
Prosesser
Prosesser
I
En prosess er et kjørende program
I
Når vi utfører en kommando i skallet, startes (vanligvis) en ny prosess,
og når den prosessen er ferdig, kan vi skrive en ny kommando
Linux-kommandolinje for nybegynnere
2013-09-19
31 / 82
Grunnleggende konsepter
Prosesser
Standardstrømmene: stdin, stdout og stderr
I
En prosess har tre tilhørende tekststrømmer:
I
I
I
I
Disse er i utgangspunktet satt opp slik:
I
I
I
Standard in (stdin): tekst som gis inn til programmet
Standard out (stdout): tekst som produseres av programmet
Standard error (stderr): feilmeldinger og andre spesielle beskjeder fra
programmet
stdin får teksten vi skriver på tastaturet mens prosessen kjører
stdout og stderr havner i terminalen
Mange programmer som leser stdin vil fortsette å lese til de kommer
til et spesielt tegn som markerer slutten (EOF, end of file). Vi kan
produsere dette tegnet ved å trykke Ctrl-d.
Linux-kommandolinje for nybegynnere
2013-09-19
32 / 82
Grunnleggende konsepter
Prosesser
Omkobling av standardstrømmene
I
Når vi starter en prosess, kan vi bestemme at én eller flere av
standardstrømmene skal kobles til filer istedenfor til terminalen
I
Vi kan også koble én prosess sin stdout til en annen prosess sin stdin
Linux-kommandolinje for nybegynnere
2013-09-19
33 / 82
Grunnleggende konsepter
Prosesser
Omkobling av standardstrømmene
Syntaks
kommando >fil
kommando >>fil
kommando <fil
k1 | k2
Betydning
Send kommandos stdout til fil
(om den finnes fra før, blir den overskrevet)
Send kommandos stdout til fil
(behold innholdet i filen og legg til det nye til slutt)
Bruk innholdet fra fil som stdin til kommando
Bruk stdout fra k1 som stdin til k2
I
Alle disse kan kombineres
I
Vi kan kjede sammen vilkårlig mange kommandoer med pipe (|)
Linux-kommandolinje for nybegynnere
2013-09-19
34 / 82
Grunnleggende konsepter
Prosesser
Eksempel: Vi lager en fil med cat
$ cat >katt
Mjau
mjau mjau
mjau.
$ cat katt
Mjau
mjau mjau
mjau.
(Husk å trykke Ctrl-d etter den siste linjen, for å fortelle cat at det ikke
kommer mer tekst på stdin.)
Linux-kommandolinje for nybegynnere
2013-09-19
35 / 82
Grunnleggende konsepter
Prosesser
Pipeeksempel
$ echo ’ibsens ripsbusker’ | tr a-z A-Z
IBSENS RIPSBUSKER
I
echo skriver på sin stdout
I
tr leser fra sin stdin, som er koblet sammen med echo sin stdout
I
tr skriver på sin stdout, som går til terminalen
Linux-kommandolinje for nybegynnere
2013-09-19
36 / 82
Grunnleggende konsepter
Skallet
Skallet
Linux-kommandolinje for nybegynnere
2013-09-19
37 / 82
Grunnleggende konsepter
Skallet
Hvordan en kommando tolkes
ls -l fjas.txt
I
Kommandonavnet er ls, argumentene er -l og fjas.txt
I
Skallet sjekker først om ls er en innebygd kommando (det er den ikke)
I
Så leter skallet i noen bestemte kataloger etter en fil ved navn ls, og
finner filen /bin/ls, som inneholder programmet vi er ute etter
I
Skallet starter programmet /bin/ls som en ny prosess og mater den
med argumentene -l og fjas.txt
I
Skallet venter på at den nye prosessen skal avslutte
Linux-kommandolinje for nybegynnere
2013-09-19
38 / 82
Grunnleggende konsepter
Skallet
Globbing
I
I
Hvis vi vil gi mange filer som argumenter til en kommando, kan det
være lurt å bruke globbing
Et kommandolinjeargument som inneholder asterisk (*) eller
spørsmålstegn (?) erstattes med alle filer i nåværende katalog som
passer etter følgende regler:
I
I
* står for vilkårlig mange vilkårlige tegn
? står for ett vilkårlig tegn
Hvis vi skriver . . .
*
a*
*.txt
???.txt
. . . får vi
alle filene (unntatt de skjulte) i katalogen
alle filer med navn som starter med «a»
alle filer med navn som slutter med «.txt»
alle filer med navn som er tre tegn, og så «.txt»
Linux-kommandolinje for nybegynnere
2013-09-19
39 / 82
Grunnleggende konsepter
Skallet
Globbing: eksempel og advarsel
$ ls *.txt
albatross.txt
and.txt
$ ls albatross.txt and.txt
albatross.txt
and.txt
I
Advarsel: globbingen gjøres av skallet, før kommandoen utføres.
Programmet som får argumentene ser bare resultatet av globbingen
(en liste med filer), ikke selve glob-uttrykket.
I
I eksempelet over ser ikke ls forskjell på om vi skriver *.txt eller
albatross.txt and.txt.
Linux-kommandolinje for nybegynnere
2013-09-19
40 / 82
Grunnleggende konsepter
Skallet
Tab-komplettering
I
Vi kan bruke TAB-tasten til å fullføre kommandonavn og filnavn.
I
Hvis vi trykker TAB mens vi skriver et kommandonavn, vil skallet
prøve å fullføre navnet til en gyldig kommando.
I
Hvis vi trykker TAB mens vi skriver et argument, vil skallet prøve å
fullføre argumentet til navnet på en eksisterende fil.
I
(Noen skall har ekstra finesser, og kan tab-komplettere andre ting
også, for eksempel opsjoner til programmer.)
Linux-kommandolinje for nybegynnere
2013-09-19
41 / 82
Grunnleggende konsepter
Skallet
Kommandohistorie
I
Skallet husker de forrige kommandoene vi skrev.
I
Vi kan velge mellom de forrige kommandoene med opp- og
ned-piltastene.
I
Vi kan søke etter en tidligere kommando ved å trykke Ctrl-r.
Linux-kommandolinje for nybegynnere
2013-09-19
42 / 82
Kommandoer
Plan
Innledning
Grunnleggende konsepter
Filer og kataloger
Prosesser
Skallet
Kommandoer
Filbehandling
Tekstbehandling
Prosessbehandling
Nettverk
Dokumentasjon
Linux-kommandolinje for nybegynnere
2013-09-19
43 / 82
Kommandoer
Kommandoene vi skal se på
Filbehandling
cd
pwd
ls
mkdir
rmdir
mv
cp
rm
find
Linux-kommandolinje for nybegynnere
Tekstbehandling
echo
cat
less
grep
sed
tr
wc
Prosessbehandling
top
ps
Nettverk
ssh
wget
Dokumentasjon
man
2013-09-19
44 / 82
Kommandoer
Filbehandling
Filbehandling
Linux-kommandolinje for nybegynnere
2013-09-19
45 / 82
Kommandoer
Filbehandling
Hold styr på hvor du er: cd og pwd
I
cd (change directory): Gå til en annen katalog
I
pwd (print working directory): Vis hvilken katalog du er i
$ pwd
/home/oystein
$ cd test/katt
$ pwd
/home/oystein/test/katt
$ cd ..
$ pwd
/home/oystein/test
Linux-kommandolinje for nybegynnere
2013-09-19
46 / 82
Kommandoer
Filbehandling
Mer om cd
I
cd uten argument går til hjemmekatalogen.
$ pwd
/home/oystein/test/katt
$ cd
$ pwd
/home/oystein
Linux-kommandolinje for nybegynnere
2013-09-19
47 / 82
Kommandoer
Filbehandling
Liste av filer: ls (list)
I
Kan gi ett eller flere filnavn som argument; da vises de filene.
I
Hvis et argument er navnet på en katalog, vises filene som ligger i den
katalogen.
I
Uten argumenter vises alle filene i katalogen vi befinner oss i.
I
Mange opsjoner for å styre hvordan filene vises.
Linux-kommandolinje for nybegynnere
2013-09-19
48 / 82
Kommandoer
Filbehandling
Opsjoner for ls
Noen av de nyttigste opsjonene til ls:
I
-a: vis alle filene (også skjulte filer)
I
-l: vis mye informasjon om hver fil
I
-h: vis filstørrelse i mer leselig form
I
-S: sorter filene etter størrelse
I
-t: sorter filene etter tidspunkt for siste endring
I
-X: sorter filene etter endelse
I
-1: vis bare én fil på hver linje
Linux-kommandolinje for nybegynnere
2013-09-19
49 / 82
Kommandoer
Filbehandling
mkdir og rmdir
mkdir (make directory): Lager en katalog
I
Navnet på den nye katalogen gis som argument
rmdir (remove directory): Fjerner en katalog
I
Navnet på katalogen gis som argument
I
Katalogen må være tom
Linux-kommandolinje for nybegynnere
2013-09-19
50 / 82
Kommandoer
Filbehandling
Flytting av filer: mv
mv (move): Gi en fil nytt navn, eller flytt den til en annen katalog
I
mv fil nytt-sted
I
fil er en eksisterende fil eller katalog
I
nytt-sted er enten det nye navnet på filen eller en katalog den skal
flyttes inn i
I
Kan også flytte flere filer samtidig: mv fil1 fil2 fil3 katalog
Linux-kommandolinje for nybegynnere
2013-09-19
51 / 82
Kommandoer
Filbehandling
Kopiering av filer: cp
cp (copy): Kopier filer
I
Brukes på samme måte som mv, men filen(e) blir kopiert, ikke flyttet.
I
Hvis vi vil kopiere en katalog (og alle filene inni den), må vi bruke
opsjonen -r (recursive).
Linux-kommandolinje for nybegynnere
2013-09-19
52 / 82
Kommandoer
Filbehandling
Sletting av filer: rm
rm (remove): Slett filer
I
rm tar en eller flere filer som argument, og sletter disse filene.
I
Vær forsiktig med denne kommandoen! rm gjør nøyaktig det du ber
den om, uten å stille spørsmål (vanligvis).
I
rm vil i utgangspunktet ikke slette kataloger. Hvis vi vil slette en
katalog og alle filene inni den, kan vi bruke opsjonen -r (recursive).
Alternativt kan vi slette filene først, og deretter slette katalogen med
rmdir.
Linux-kommandolinje for nybegynnere
2013-09-19
53 / 82
Kommandoer
Filbehandling
find: Finn filer
I
find leter i en gitt katalog og dens underkataloger etter filer som
passer til kriteriene vi oppgir
I
Alle de passende filnavnene blir skrevet ut på stdout, ett på hver linje
I
I utgangspunktet tas alle typer filer med, inkludert kataloger
I
I eksemplene under betyr punktumet at søket skal starte i katalogen vi
står i
Kommando
find .
find . -name
find . -name
find . -name
find . -type
find . -type
find . -type
’hei.txt’
’a*’
’*.txt’
f
d
d -name ’ka*’
Linux-kommandolinje for nybegynnere
2013-09-19
Finner
alle filer
alle filer med navn hei.txt
alle filer med navn som starter med a
alle filer med navn som slutter med .txt
alle vanlige filer
alle kataloger
alle kataloger med navn som starter med ka
54 / 82
Kommandoer
Filbehandling
finds gode venn xargs
I
Vi kan sende resultatet av find som input til et annet program med
pipe (|)
I
Men resultatet av find er en liste med filer, og vi vil ofte gi dem som
argumenter til et annet program
I
Redningen er xargs
I
xargs kommando leser linjer fra stdin og gir dem som argumenter til
kommando
I
Eksempel: find . -name ’*.txt’ | xargs ls -l
Linux-kommandolinje for nybegynnere
2013-09-19
55 / 82
Kommandoer
Filbehandling
Filtyper: file
file: Finner ut hvilken type innhold det er i en fil.
I
file tar et filnavn som argument, og skriver ut en beskrivelse av
filtypen
I
file ser ikke på endelsen i filnavnet (.txt, .pdf, .jpg etc), men på
innholdet i filen
Linux-kommandolinje for nybegynnere
2013-09-19
56 / 82
Kommandoer
Tekstbehandling
Tekstbehandling
Linux-kommandolinje for nybegynnere
2013-09-19
57 / 82
Kommandoer
Tekstbehandling
echo
Skriver ut argumentene sine på stdout.
$ echo hallo
hallo
$ echo ’Er det ekko her?’
Er det ekko her?
Linux-kommandolinje for nybegynnere
2013-09-19
58 / 82
Kommandoer
Tekstbehandling
cat
cat (concatenate): Les filer og skriv innholdet deres på stdout
I
cat fil1 fil2 fil3
I
Hendig for å se innholdet i en fil: cat filnavn
I
Hvis vi ikke gir noen filnavn som argumenter, leser cat fra stdin
isteden.
I
Med opsjonen -n blir linjene nummerert.
Linux-kommandolinje for nybegynnere
2013-09-19
59 / 82
Kommandoer
Tekstbehandling
less
less: Vis en fil, én skjermfull om gangen
I
less filnavn
I
Med less kan vi bla opp og ned i filens innhold med PageUp- og
PageDown-tastene. For å avslutte, trykk på q.
I
Hvis vi ikke gir noen filnavn som argumenter, leser less fra stdin
isteden.
Linux-kommandolinje for nybegynnere
2013-09-19
60 / 82
Kommandoer
Tekstbehandling
Søk etter tekst: grep
I
Enkel variant: grep -F tekst fil(er)
I
Eksempel: grep -F ’Watson’ a-study-in-scarlet.txt
I
Skriver ut alle linjer fra filen(e) som inneholder teksten.
I
Hvis vi ikke bruker opsjonen -F, tolkes søketeksten som et regulært
uttrykk.
Linux-kommandolinje for nybegynnere
2013-09-19
61 / 82
Kommandoer
Tekstbehandling
Regulære uttrykk
I
Et regulært uttrykk beskriver en samling med tekststrenger på en
konsis måte
I
fugl beskriver strengen «fugl»
I
fugl\|fisk beskriver de to strengene «fugl» og «fisk»
I
fl[aiu]bb beskriver strengene «flabb», «flibb» og «flubb»
I
Realfags?bygget beskriver strengene «Realfagbygget» og
«Realfagsbygget»
I
mor+o beskriver strengene «moro», «morro», «morrro» og så videre
I
\(kontra-\)*spion beskriver strengene «spion», «kontra-spion»,
«kontra-kontra-spion», og så videre
Linux-kommandolinje for nybegynnere
2013-09-19
62 / 82
Kommandoer
Tekstbehandling
Regulære uttrykk: tegnklasser
Uttrykk
.
[0-9]
[a-z]
[A-Z]
[c-f]
[afD8]
Står for
et vilkårlig tegn
et siffer
en liten bokstav
en stor bokstav
«c», «d», «e» eller «f»
«a», «f», «D» eller «8»
Linux-kommandolinje for nybegynnere
2013-09-19
63 / 82
Kommandoer
Tekstbehandling
Regulære uttrykk: gjentagelse
Gjentagelsestegn
?
*
+
Betyr
det som står foran forekommer én eller null ganger
det som står foran forekommer null eller flere ganger
det som står foran forekommer én eller flere ganger
Linux-kommandolinje for nybegynnere
2013-09-19
64 / 82
Kommandoer
Tekstbehandling
grep med regulære uttrykk
I
grep uttrykk fil(er)
I
Eksempel: grep ’[0-9]’ a-study-in-scarlet.txt
I
Skriver ut alle linjer fra filen(e) som inneholder en streng beskrevet av
det regulære uttrykket
I
Hvis vi ikke gir noen filer, leser grep fra stdin
Linux-kommandolinje for nybegynnere
2013-09-19
65 / 82
Kommandoer
Tekstbehandling
Opsjoner for grep
Noen av de nyttigste opsjonene til grep:
I
-F: se på søkeuttrykket som vanlig tekst, ikke et regulært uttrykk
I
-i: ignorer forskjellen på store og små bokstaver
I
-v: omvendt av vanlig – skriver ut linjene som ikke passer til
søkeuttrykket
Linux-kommandolinje for nybegynnere
2013-09-19
66 / 82
Kommandoer
Tekstbehandling
sed (stream editor)
I
sed leser tekst fra en fil eller stdin, endrer teksten, og skriver
resultatet på stdout
I
Man kan gjøre mye rart med sed. Vi skal se på hvordan man den kan
brukes til «søk-og-erstatt».
I
Erstatt middag med kake: sed ’s/middag/kake/’
Linux-kommandolinje for nybegynnere
2013-09-19
67 / 82
Kommandoer
Tekstbehandling
Kake til middag
$ echo ’Nå
Nå skal vi
$ echo ’Nå
Nå skal vi
skal vi spise middag!’
spise middag!
skal vi spise middag!’ | sed ’s/middag/kake/’
spise kake!
Linux-kommandolinje for nybegynnere
2013-09-19
68 / 82
Kommandoer
Tekstbehandling
Alle skal med: /g
I
Med ’s///’ erstattes bare første treff i hver linje. For å få med alle
treffene, bruker vi ’s///g’.
$ echo ’ostekake og sjokoladekake’ | sed ’s/kake/glefser/’
osteglefser og sjokoladekake
$ echo ’ostekake og sjokoladekake’ | sed ’s/kake/glefser/g’
osteglefser og sjokoladeglefser
Linux-kommandolinje for nybegynnere
2013-09-19
69 / 82
Kommandoer
Tekstbehandling
Kommando: sed
I
Søketeksten i ’s///’ er et regulært uttrykk.
$ cat >kinesere.txt
Tre små kinesere på Høybroplass
satt og spilte på en kontrabass.
Så kom en konstabel, spurte hva det var.
Tre små kinesere på Høybroplass.
$ sed ’s/[aeiouyæøå]/a/g’ kinesere.txt
Tra sma kanasara pa Haabraplass
satt ag spalta pa an kantrabass.
Sa kam an kanstabal, sparta hva dat var.
Tra sma kanasara pa Haabraplass.
Linux-kommandolinje for nybegynnere
2013-09-19
70 / 82
Kommandoer
Tekstbehandling
tr (translate): Bytt ut tegn
I
tr leser fra stdin, erstatter noen tegn med andre, og skriver resultatet
på stdout
I
tr ’tpk’ ’dbg’ erstatter «t» med «d», «p» med «b» og «k» med
«g».
I
tr ’mn’ ’nm’ bytter om «m» og «n»
I
tr ’a-z’ ’A-Z’ erstatter små bokstaver med store
I
tr ’0-9’ ’ A-I’ erstatter 0 med mellomrom og de andre sifrene
med bokstaver
I
tr ’A-Za-z’ ’N-ZA-Mn-za-m’ utfører rot13-kryptering
Linux-kommandolinje for nybegynnere
2013-09-19
71 / 82
Kommandoer
Tekstbehandling
wc
wc (word count, ikke water closet): tell linjer/ord/bytes i filer eller stdin
I
wc fil: skriver ut antall linjer, antall ord og antall bytes i filen
I
Hvis vi ikke gir noen fil som argument, brukes stdin isteden
I
Med opsjonen -l vises bare antall linjer
I
Eksempel: ls -1 | wc -l forteller hvor mange filer det er i katalogen
vi står i
Linux-kommandolinje for nybegynnere
2013-09-19
72 / 82
Kommandoer
Tekstbehandling
Andre hendige kommandoer for tekst
I
head: skriv ut begynnelsen av en fil (eller stdin)
I
tail: skriv ut slutten av en fil (eller stdin)
I
cut: plukk ut en bestemt bit av hver linje
I
sort: sorter linjene
I
uniq: fjern duplikatlinjer
I
diff: vis forskjellene mellom to filer
Linux-kommandolinje for nybegynnere
2013-09-19
73 / 82
Kommandoer
Prosessbehandling
Prosessbehandling
Linux-kommandolinje for nybegynnere
2013-09-19
74 / 82
Kommandoer
Prosessbehandling
Prosesslister: top og ps
I
top viser en kontinuerlig oppdatert liste av prosesser.
I
I
I
Listen inneholder mye informasjon om hver prosess, og den oppdateres
automatisk så lenge top kjører.
Trykk på q for å avslutte top.
ps skriver ut informasjon om et utvalg prosesser.
I
I
I
Alle prosessene til brukeren oysteini: ps -u oysteini
Samme, med mer informasjon om hver prosess: ps -f -u oysteini
Mye informasjon om alle prosesser: ps -f -e
Linux-kommandolinje for nybegynnere
2013-09-19
75 / 82
Kommandoer
Prosessbehandling
kill
I
kill sender et signal til en prosess
I
Prosessen spesifiseres med prosess-id (PID), som er et tall
I
ps eller top kan hjelpe deg med å finne riktig PID
I
kill 13662 ber prosess nummer 13662 pent om å avslutte seg selv
I
kill -s KILL 13662 kverker prosess nummer 13662 brutalt og
nådeløst
Linux-kommandolinje for nybegynnere
2013-09-19
76 / 82
Kommandoer
Nettverk
Nettverk
Linux-kommandolinje for nybegynnere
2013-09-19
77 / 82
Kommandoer
Nettverk
ssh (secure shell)
I
ssh brukes til å logge inn på en annen Unix-maskin via Internett, med
en kryptert forbindelse
I
Logg inn som brukeren oysteini på maskinen login.stud.ntnu.no:
ssh [email protected]
Linux-kommandolinje for nybegynnere
2013-09-19
78 / 82
Kommandoer
Nettverk
wget
I
wget laster ned en fil (eller mange filer) via HTTP eller FTP
I
Enkel bruk: wget URL
I
Mange opsjoner for å gjøre avanserte ting som å laste ned mange filer
ved å følge linker
Linux-kommandolinje for nybegynnere
2013-09-19
79 / 82
Kommandoer
Dokumentasjon
Dokumentasjon
Linux-kommandolinje for nybegynnere
2013-09-19
80 / 82
Kommandoer
Dokumentasjon
man (manual)
I
man brukes til å se på «man-sider» (man pages)
I
De fleste programmer har sin egen man-side
I
For å se på man-siden til et program, gir vi programnavnet som
argument til man
I
Eksempel: man ls
Linux-kommandolinje for nybegynnere
2013-09-19
81 / 82
Slutten ...
I
Spørsmål?