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.