Ubuntu logo

Grunnleggende Linux-kommandoer

De viktigste kommandoene du trenger å kunne i Linux

Navigering

pwd Vis nåværende mappe
ls List filer og mapper
cd mappnavn Bytt til spesifisert mappe
cd .. Gå opp ett nivå
cd ~ Gå til hjemmemappen

Praktiske eksempler

Disse kommandoene viser hvordan du navigerer i filsystemet. pwd (print working directory) viser gjeldende mappe, ls -l gir en detaljert liste over filer med rettigheter og størrelser, og ls -la viser også skjulte filer (som starter med .). cd brukes for å bytte mappe.
$ pwd
/home/bruker/dokumenter
$ ls -l

total 4
drwxr-xr-x 2 bruker bruker 4096 Feb 12 10:00 bilder
-rw-r--r-- 1 bruker bruker  123 Feb 12 09:55 notat.txt

$ ls -la

total 8
drwxr-xr-x 3 bruker bruker 4096 Feb 12 10:00 .
drwxr-xr-x 4 bruker bruker 4096 Feb 12 09:00 ..
-rw-r--r-- 1 bruker bruker    0 Feb 12 09:50 .skjult-fil

$ cd bilder
$ pwd
/home/bruker/dokumenter/bilder

$ cd ..
$ pwd
/home/bruker/dokumenter

Filhåndtering

cp kilde mål Kopier fil eller mappe
mv kilde mål Flytt eller gi nytt navn til fil/mappe
rm filnavn Slett fil
rm -r mappe Slett mappe og innhold
mkdir mappenavn Opprett ny mappe
touch filnavn Opprett tom fil

Praktiske eksempler

Her ser vi hvordan vi kan opprette en mappestruktur med mkdir -p (lager også foreldremapper hvis de ikke finnes). Kommandoen tree viser mappestrukturen visuelt. cp brukes til å kopiere filer (med wildcards *.txt) og mapper (-r for rekursivt). mv brukes for å flytte/gi nytt navn til filer, og rm for å slette (med -i for interaktiv modus som ber om bekreftelse).
$ mkdir -p prosjekt/{kildekode,dokumenter,ressurser}
$ tree prosjekt

prosjekt/
├── kildekode/
├── dokumenter/
└── ressurser/

$ cp *.txt dokumenter/
$ cp -r bilder/* backup/bilder/

$ mv gammel-rapport.txt dokumenter/rapport-2024.txt

$ rm -i viktig-fil.txt
rm: remove regular file 'viktig-fil.txt'? y

$ rm -rf temp/*

Tekstbehandling

nano filnavn Åpne eller opprett fil i Nano teksteditor
cat filnavn Vis innholdet av en fil
grep mønster fil Søk etter tekst i fil
head filnavn Vis første linjer av fil
tail filnavn Vis siste linjer av fil

Praktiske eksempler

Disse kommandoene viser vanlige tekstbehandlingsoperasjoner. nano er en enkel teksteditor, cat kombinerer filer, grep søker etter tekst i filer (-i for case-insensitive søk), og tail -f viser slutten av en fil og oppdaterer kontinuerlig - perfekt for å overvåke logfiler i sanntid.
$ nano config.txt
$ cat fil1.txt fil2.txt > kombinert.txt

$ grep "ERROR" /var/log/syslog
Feb 12 10:15:23 server1 apache2[1234]: [error] File not found: /var/www/404.html

$ grep -i "warning" /var/log/apache2/error.log
Feb 12 10:20:45 [warn] ModSecurity: Warning. Pattern match "(?i:(?:[\|\;\`]\s*?\bcc|\b(wget|curl))\b)" at REQUEST_COOKIES

$ tail -f /var/log/syslog
Feb 12 10:25:12 server1 systemd[1]: Started Apache HTTP Server.
Feb 12 10:25:13 server1 sshd[5678]: Accepted publickey for user1 from 192.168.1.100
Feb 12 10:25:14 server1 nginx[8901]: 192.168.1.50 - - [12/Feb/2024:10:25:14 +0100] "GET / HTTP/1.1" 200 2326

Systeminformasjon

uname -a Vis systeminformasjon
df -h Vis diskbruk
free -h Vis minnebruk
top Vis kjørende prosesser

Praktiske eksempler

Disse kommandoene gir viktig informasjon om systemet. uname -a viser kernel- og systemdetaljer, du -h viser diskbruk i lesbart format (med --max-depth=1 for bare ett nivå), df -h viser ledig diskplass, free -h viser minnebruk, og top viser prosesser sortert etter CPU-bruk (-o %CPU).
$ uname -a
Linux server1 5.15.0-91-generic #101-Ubuntu SMP x86_64 GNU/Linux

$ du -h --max-depth=1 /home/bruker | sort -hr
8.0G    /home/bruker
4.0G    /home/bruker/Downloads
2.0G    /home/bruker/Videos
1.0G    /home/bruker/Documents

$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   45G   55G  45% /

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.0Gi       8.0Gi       1.0Gi       3.0Gi        10Gi
Swap:         4.0Gi       0.0Gi       4.0Gi

$ top -o %CPU
top - 10:30:15 up 7 days, 15:02,  2 users,  load average: 0.75, 0.58, 0.54
Tasks: 231 total,   1 running, 230 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.9 us,  2.1 sy,  0.0 ni, 91.3 id,  0.7 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15951.3 total,   8234.5 free,   4123.4 used,   3593.4 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used

Nettverkskommandoer

ip a Vis nettverksgrensesnitt
ping adresse Test nettverksforbindelse
netstat -tuln Vis åpne porter

Praktiske eksempler

Disse kommandoene brukes for nettverksdiagnostikk. ip a viser nettverksgrensesnitt og deres IP-adresser, ping tester nettverksforbindelse og måler responstid (-c 4 begrenser til 4 ping), og netstat -tuln viser aktive nettverkstilkoblinger og lyttende porter (t=TCP, u=UDP, l=listening, n=numeriske adresser).
$ ip a show dev eth0
2: eth0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:15:5d:01:ca:05 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

$ ping -c 4 google.com
PING google.com (142.250.74.110) 56(84) bytes of data.
64 bytes from fra16s49-in-f14.1e100.net (142.250.74.110): icmp_seq=1 ttl=57 time=15.6 ms
64 bytes from fra16s49-in-f14.1e100.net (142.250.74.110): icmp_seq=2 ttl=57 time=15.8 ms
64 bytes from fra16s49-in-f14.1e100.net (142.250.74.110): icmp_seq=3 ttl=57 time=15.7 ms
64 bytes from fra16s49-in-f14.1e100.net (142.250.74.110): icmp_seq=4 ttl=57 time=15.7 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 15.648/15.713/15.816/0.061 ms

$ netstat -tuln
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN

Pakkebehandling

apt update Oppdater pakkelisten
apt install pakke Installer ny pakke
apt remove pakke Fjern pakke

Praktiske eksempler

Disse kommandoene håndterer programvareinstallasjon i Ubuntu/Debian. apt update oppdaterer pakkelisten, apt install installerer nye pakker (med automatisk håndtering av avhengigheter), og apt search søker etter tilgjengelige pakker. Legg merke til at mange apt-kommandoer krever sudo for å kjøre med administrative rettigheter.
$ sudo apt update
Hit:1 http://no.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://no.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://no.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

$ sudo apt install nginx php-fpm mysql-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  nginx-common nginx-core ...
Suggested packages:
  php-mysql mailx tinyca
The following NEW packages will be installed:
  nginx nginx-common nginx-core php-fpm mysql-server
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.6 MB of archives.
After this operation, 125 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

$ apt search ^php
Sorting... Done
Full Text Search... Done
php-cli/jammy-updates 2:8.1+92ubuntu1 all
  command-line interpreter for the PHP scripting language

php-common/jammy-updates 2:92ubuntu1 all
  Common files for PHP packages

Tillatelser og eierskap

chmod rettigheter fil Endre filtillatelser
chown bruker:gruppe fil Endre eier av fil
sudo kommando Kjør kommando som administrator

Praktiske eksempler

Kommandoen kjører chmod i superbrukermodus (-R for rekursivt) og setter alle filer og kataloger til 755. Dette gir eieren full tilgang (7: rwx), mens gruppe og andre får lese- og kjøretilgang (5: r-x). Dette er en vanlig tillatelse for webserver-mapper.
$ sudo chmod -R 755 /var/www/html
$ ls -l /var/www/html

total 4
drwxr-xr-x 2 www-data www-data 4096 Feb 12 10:35 images
-rwxr-xr-x 1 www-data www-data  345 Feb 12 10:35 index.php
For å kunne kjøre et script må det ha kjøretillatelse (executable). Kommandoen chmod +x legger til kjøretillatelse for alle (eier, gruppe og andre). ls -l viser deretter de nye rettighetene hvor x indikerer kjøretillatelse.
$ chmod +x script.sh
$ ls -l script.sh

-rwxr-xr-x 1 bruker bruker 235 Feb 12 10:36 script.sh
For å endre eier og gruppe på en mappe og alt innhold brukes chown med -R (rekursivt). Her endres både eier og gruppe til 'bruker' for hele prosjekt-mappen. Dette er nyttig når du trenger full kontroll over alle filer i et prosjekt.
$ sudo chown -R bruker:bruker ~/prosjekt/
$ ls -l ~/prosjekt/

total 12
drwxr-xr-x 2 bruker bruker 4096 Feb 12 10:37 dokumenter
drwxr-xr-x 2 bruker bruker 4096 Feb 12 10:37 kildekode
drwxr-xr-x 2 bruker bruker 4096 Feb 12 10:37 ressurser

Nyttige snarveier i terminalen

Ctrl + C Avbryt nåværende kommando
Ctrl + L Tøm terminalvinduet
Tab Autofullføring av kommandoer og filnavn
Pil opp/ned Bla gjennom kommandohistorikk

Praktiske eksempler

Her ser vi nyttige snarveier i terminalen. Tab-tasten brukes for autofullføring av kommandoer og filnavn, history | grep søker i kommandohistorikken, og !! (uttales "bang bang") gjentar forrige kommando - spesielt nyttig når du glemmer å skrive sudo foran en kommando som krever det.
$ cd /var/www/[Tab]
Autofullført til: cd /var/www/html/

$ history | grep "apt"
  498  sudo apt update
  499  sudo apt upgrade
  500  sudo apt install nginx
  501  sudo apt autoremove

$ !!
sudo apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.