Denne side er skrevet som en manual du kan køre igennem fra start til slut.
I Linux er alt filer. Selv din harddisk bliver behandlet som om det var en fil. Sådan er det faktisk også i Windows, men det godt skjult for brugeren, og det er svært tilgængeligt.
Uanset om du sidder på en Ubuntu workstation eller server, så har de nøjagtig samme filstruktur. Filstrukturen følger FHS (Filesystem Hierarchy Standarden) som bliver vedligeholdt af Linux Foundattion. Alle Linuxsystemer har samme opbygning og placering af filer.
/ ├── bin -> usr/bin ├── boot ├── cdrom ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib32 -> usr/lib32 ├── lib64 -> usr/lib64 ├── libx32 -> usr/libx32 ├── lost+found ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── snap ├── srv ├── sys ├── tmp ├── usr └── varHer kommer en gennemgang af de mapper, som du mest sandsynligt vil komme til at arbejde i:
Til forskel fra Windows der har en registreringsdatabase, styres Linux af konfigurations filer. Så hvis der f.eks. skal ændres i opsætningen af et netværkskort, så skal man gå ind i filen og lave ændringer.
Fordelen er, at denne ene fil kan kopieres videre til andre computere, der skal sættes op på samme måde. Og det kan gøres over SSH, som er en tekstbaseret adgang til computere.
Man kan se filtypen når man kigger på det første tegn ved rettighederne
-rwx--x--x 1 tj tj 841 okt 26 2018 backup.shDe mest relevante typer er:
Du kan læse mere om Linux-filtyper her Wikipediaside om Linuxfiltyper
Herunder er mappestrukturen for /home på en Ubuntu workstation.
/ └── home └── tj ├── Billeder ├── Dokumenter ├── Hentet ├── Musik ├── Offentligt ├── Skabeloner ├── Skrivebord ├── Videoklip
Stien til mappen Hentet er: /home/tj/Hentet.
Linux skelner mellem store og små bogstaver. Det betyder at brugerne tj og TJ er forskellige og filen data er forskellig fra Data.
Der er 3 grundlæggende filrettigheder: read (r), write (w) og execute (x). Execute betyder at filen kan køres som et program. Rettighederne kan sættes på 3 niveauer: brugeren, gruppe og alle.
Vi kan se rettigehederne på de første 10 tegn. Vi tager eksemplet fra før.
-rwx--x--x 1 tj tj 841 okt 26 2018 backup.shTegnene skal læses på følgende måde:
Terminalen bruger vi til at udføre grundlæggende systemarbejde med filer. Det kan være at:
Når vi åbner en terminal står du i din personlige mappe. Den ligger i /home/*BRUGERNAVN*.
Det kan vi se når vi kigger på kommandolinien
tj@server1:~$Tegnet ~ (kaldes en tilde) viser at vi står i vores egen mappe
Lad os se hvor vi står. Det bruger vi pwd til.
pwd
/home/tj
Vi vil gerne flytte os til mappen med indstillinger. Den hedder /etc/apt
cd /etc/apt
tj@server1:/etc/apt$
Nu kan vi se at ~ har ændret sig til /etc/apt
Vi flytter os lige tilbage til vores egen mappe:
cd ~
tj@server1:~$
Bliver terminalvinduet for rodet kan man rense det med kommandoen clear
clear
Lad os se på indholdet i en mappe. Her vil vi kigge på mappen vi lige besøgte: /etc/apt
ls /etc/apt
apt.conf.d preferences.d sources.list.curtin.old trusted.gpg.d
auth.conf.d sources.list sources.list.d
De blå filer er mapper og de hvide er almindelige filer.
Læg mærke til at vi kigger på filerne i en anden mappe end den vi står i.
Der er ingen grund til at navigere til den mappe man vil se eller gøre noget i.
Vi vil gerne have flere deltaljer om den mappe vi kigger i, så vi bruger ls med optionen -ls
ls -al /etc/apt
total 36
drwxr-xr-x 7 root root 4096 Dec 14 09:02 .
drwxr-xr-x 94 root root 4096 Dec 17 09:51 ..
drwxr-xr-x 2 root root 4096 Dec 14 10:00 apt.conf.d
drwxr-xr-x 2 root root 4096 Apr 9 2020 auth.conf.d
drwxr-xr-x 2 root root 4096 Apr 9 2020 preferences.d
-rw-r--r-- 1 root root 2777 Dec 14 09:02 sources.list
-rw-r--r-- 1 root root 2743 Jul 31 16:30 sources.list.curtin.old
drwxr-xr-x 2 root root 4096 Apr 9 2020 sources.list.d
drwxr-xr-x 2 root root 4096 Jul 31 16:28 trusted.gpg.d
Dette er den udskrift du vil komme til at bruge oftest, da den giver dig information om filtype, rettigheder og ejerskab
Læg mærke til at der som første tegn er et d ved dokumenter og en - ved filerne. Så kan alle se hvad det er ;).
En smart ting som bliver gennemgået senere er at man kan pipe (en lodret streg)det og søge ud i resultaterne. Lad os sige vi kun vil have vist filer og mapper hvor ordet sources indgår.
ls -al /etc/apt | grep sources
-rw-r--r-- 1 root root 2777 Dec 14 09:02 sources.list
-rw-r--r-- 1 root root 2743 Jul 31 16:30 sources.list.curtin.old
drwxr-xr-x 2 root root 4096 Apr 9 2020 sources.list.d
Så kan man designe sin visning til nøjagtigt det man leder efter.
Eksempler
En anden måde at få overblik er ved hjælp af tree. tree skal først installeres. tree bliver gennemgået senere.
sudo apt install tree -y
Lad os kigge på /etc/apt med tree
tree /etc/apt
/etc/apt
├── apt.conf.d
│ ├── 01autoremove
│ ├── 01autoremove-kernels
│ ├── 01-vendor-ubuntu
│ ├── 10periodic
│ ├── 15update-stamp
│ ├── 20archive
│ ├── 20auto-upgrades
│ ├── 20packagekit
│ ├── 20snapd.conf
│ ├── 50command-not-found
│ ├── 50unattended-upgrades
│ ├── 70debconf
│ └── 99update-notifier
├── auth.conf.d
├── preferences.d
├── sources.list
├── sources.list.curtin.old
├── sources.list.d
└── trusted.gpg.d
├── ubuntu-keyring-2012-archive.gpg
├── ubuntu-keyring-2012-cdimage.gpg
└── ubuntu-keyring-2018-archive.gpg
5 directories, 18 files
Her får vi en visning med træstruktur.
Vil vi kun have mapper sætter vi -d på.
tree -d /etc/apt
/etc/apt
├── apt.conf.d
├── auth.conf.d
├── preferences.d
├── sources.list.d
└── trusted.gpg.d
Et sidste eksempel er at begrænse visningen kun til undermapper.
tree -d /usr -L 1
/usr
├── bin
├── games
├── include
├── lib
├── lib32
├── lib64
├── libexec
├── libx32
├── local
├── sbin
├── share
└── share
Effekten kan du se ved at køre kommandoen med -L 2.
Visning med fulde stier:
tree -fid /etc/apt
/etc/apt
/etc/apt/apt.conf.d
/etc/apt/auth.conf.d
/etc/apt/preferences.d
/etc/apt/sources.list.d
/etc/apt/trusted.gpg.d
Visning med rettigheder, bruger og gruppe.
tree -fidpug /etc/apt
/etc/apt
[drwxr-xr-x root root ] /etc/apt/apt.conf.d
[drwxr-xr-x root root ] /etc/apt/auth.conf.d
[drwxr-xr-x root root ] /etc/apt/preferences.d
[drwxr-xr-x root root ] /etc/apt/sources.list.d
[drwxr-xr-x root root ] /etc/apt/trusted.gpg.d
læs mere om tree: http://manpages.ubuntu.com/manpages/focal/en/man1/tree.1.html
Eksempler
Piping er en metode der oftes anvendes i terminalen. Ved hjælp af piping kan vi overføre output en kommando til en anden kommando. Det skrives på følgende måde:
Kommando_1 | Kommando_2
Output fra Kommando_1 bliver brugt som input i Kommando_2.
Lad os se på eksemplet ovenfor
ls -al /etc/apt | grep sources
Kommando 1 siger: vis en liste over alle filer i /etc/apt
total 36 drwxr-xr-x 7 root root 4096 Dec 14 09:02 . drwxr-xr-x 94 root root 4096 Dec 17 09:51 .. drwxr-xr-x 2 root root 4096 Dec 14 10:00 apt.conf.d drwxr-xr-x 2 root root 4096 Apr 9 2020 auth.conf.d drwxr-xr-x 2 root root 4096 Apr 9 2020 preferences.d -rw-r--r-- 1 root root 2777 Dec 14 09:02 sources.list -rw-r--r-- 1 root root 2743 Jul 31 16:30 sources.list.curtin.old drwxr-xr-x 2 root root 4096 Apr 9 2020 sources.list.d drwxr-xr-x 2 root root 4096 Jul 31 16:28 trusted.gpg.dDette bliver overført til kommando 2
Kommando 2 siger: vælg alle linier hvor tekststrengen sources står
-rw-r--r-- 1 root root 2777 Dec 14 09:02 sources.list -rw-r--r-- 1 root root 2743 Jul 31 16:30 sources.list.curtin.old drwxr-xr-x 2 root root 4096 Apr 9 2020 sources.list.dMan kan gøre det i flere niveauer.
Kommando_1 | Kommando_2 | Kommando_3 | ... | Kommando_N
Vi tager eksemplet ovenfor, hvor vi kun vil have dem hvor der står .old ved. Den fulde kommando vil være:
ls -al /etc/apt | grep sources | grep .old
-rw-r--r-- 1 root root 2743 Jul 31 16:30 sources.list.curtin.old
Opretter mapper
Til at oprette mapper bruges kommandoen mkdir.
Vi starter med at oprette en øvemappe i vores egen mappe. den ligger i /home/*brugernavn*, men kan også tilgås med ~.
Her opretter vi en mappe til at lave vores øvelser i. Vi opretter den med den fulde sti, og flytter os op i mappen:
mkdir ~/øvelser
cd ~/øvelser
tj@server1:~/øvelser$
Alle eksemplerne her bliver installeret i mappen ~/øvelser. Derfor er der ikke en fuld sti på mappenavnene.
Her opretter vi mappe1.
mkdir mappe1
tree -d
.
└── mappe1
1 directory
Her opretter vi to mapper på en gang (mappe2 og mappe3).
mkdir mappe2 mappe3
tree -d
.
├── mappe1
├── mappe2
└── mappe3
3 directory
Her opretter vi vi en hel struktur: mappe4/um1/uum1
Læg mærke til at jeg tilføjer -p, for at kunne oprette mapper i flere niveauer
mkdir -p mappe4/um1/uum1
.
├── mappe1
├── mappe2
├── mappe3
└── mappe4
└── um1
└── uum1
7 directories
Med flere undermapper
Her opretter vi mappe5, med flere undermapperne i samme niveauum1, um2,um3.
mkdir -p mappe5/{um1,um2,um3}
.
├── mappe1
├── mappe2
├── mappe3
├── mappe4
│ └── um1
│ └── uum1
└── mappe5
├── um1
├── um2
└── um3
Med flere undermapper
Her opretter vi mappe5, med flere undermapperne i samme niveauum1, um2,um3.
mkdir -p mappe6/{um1,um2,um3}/{uum1,uum2,uum3}
.
├── mappe1
├── mappe2
├── mappe3
├── mappe4
│ └── um1
│ └── uum1
├── mappe5
│ ├── um1
│ ├── um2
│ └── um3
└── mappe6
├── um1
│ ├── uum1
│ ├── uum2
│ └── uum3
├── um2
│ ├── uum1
│ ├── uum2
│ └── uum3
└── um3
├── uum1
├── uum2
└── uum3
Opretter filer og opdaterer tidsstempel på allerede eksisterende filer og mapper
touch anvendes til 2 ting:
Her opretter vi filen testfil i vores personlige mappe. ~ er en smart måde at fortælle, at vi bruger /home/*brugernavn*
touch ~/testfil1
Vi kigger på file vi lige har oprettet
ls -al testfil1 | grep testfil
-rw-rw-r-- 1 tj tj 0 Dec 18 14:03 testfil1
Man kan også oprette en række af filer på en gang:
touch testfil2 testfil3
Vi kigger.
ls -al testfil1 | grep testfil
-rw-rw-r-- 1 tj tj 0 Dec 18 14:03 testfil1
-rw-rw-r-- 1 tj tj 0 Dec 18 14:10 testfil2
-rw-rw-r-- 1 tj tj 0 Dec 18 14:10 testfil3
Som vi kan se har filerne forskellige tidsstempler. Vi vil gerne have at de alle bliver opdatere til nu.
touch testfil*
Vi kigger.
ls -al testfil1 | grep testfil
-rw-rw-r-- 1 tj tj 0 Dec 18 14:16 testfil1
-rw-rw-r-- 1 tj tj 0 Dec 18 14:16 testfil2
-rw-rw-r-- 1 tj tj 0 Dec 18 14:16 testfil3
Sletter filer og mapper
Nar man sletter filer og mapper med kommandolinien, så bliver de slettet for alvor. Dvs. man kan ikke hente dem i en skraldespand. Filerne er væk.
Så kontroller at du sletter de rigtige filer.
Lad os slette testfil3
rm testfil3
Vi kigger.
ls -al testfil1 | grep testfil
-rw-rw-r-- 1 tj tj 0 Dec 18 14:16 testfil1
-rw-rw-r-- 1 tj tj 0 Dec 18 14:16 testfil2
Vi kan slette flere filer på engang ved at bruge samme fremgangsmåde som ovenfor:
rm testfil2 testfil3
Vi kigger.
ls -al testfil1 | grep testfil
Vi kan også slette ved hjælp af at bruge * (asterisk).
Vi starter med at oprette 3 filer igen:
touch testfil1 testfil2 testfil3
Vi kigger.
ls -al testfil1 | grep testfil
-rw-rw-r-- 1 tj tj 0 Dec 18 14:52 testfil1
-rw-rw-r-- 1 tj tj 0 Dec 18 14:52 testfil2
-rw-rw-r-- 1 tj tj 0 Dec 18 14:52 testfil3
For at slette alle laver vi følgende kommando
rm test*
Den kommando sletter alle filer der starter med test. Tjek selv efter.
For at slette mapper skal man tilføje -R. Når man sletter en mappe, så skal alt indholdet også slettes. Derfor skal det gøres recursivt (-R).
Lad os slette mappe6
rm -R mappe6
Lad os slette mappe3 til mappe5
rm -R mappe[3-6]
For at slutte af sletter vi øvelsesmappen
rm -R ~/øvelser
Nu sker der noget underligt ... vi står i en slettet mappe:
tj@server1:~/øvelser$ rm -R ~/øvelser tj@server1:~/øvelser$Så vi skifter tilbage til vores hjemmemappe
cd ~
Som skrevet ovenfor, så sletter rm alt. Hvis man nu kommer at skrive:
sudo rm -R /
... så beder man faktisk rm om at slette hele harddisken
tj@server1:~$ sudo rm -R / [sudo] password for tj: rm: it is dangerous to operate recursively on '/' rm: use --no-preserve-root to override this failsafeHeldigvis er systemet sat på så det forhindrer det ... men det betyder ikke at du ikke kan komme til at slette andre vitale dele af systemet med rm.
Brug rm med omtanke.
Kopiere filer og mapper
Først opretter vi en øvelsesmappe med en undermappe og en fil, for til sidst at navigere over til den.
mkdir -p øvelse2/mappe1
touch ~/øvelse2/fil1
ls -al ~/øvelse2
cd øvelse2
Vi tjekker mappen
tree
.
├── fil1
└── mappe1
1 directory, 1 file
Herunder laver vi følgende:
cp fil1 fil2
cp fil1 mappe1
cp -R mappe1 mappe2
Vi ser på resultatet
tree
.
├── fil1
├── fil2
├── mappe1
│ └── fil1
└── mappe2
└── fil1
2 directories, 4 files
Når man arbejder med systemfiler, så er det normalt, at man tager en backup af filen før man laver ændringer. På den måde kan man altid komme tilbage til en oprindelig opsætning.
Man plejer at gøre det ved at kopiere filen og sætte .backup bagpå -evt. med dato.
Så hvis vil skulle lave ændringer i fil1 ville vi først gøre følgende:
cp fil1 fil1.backup
Bruges til at flytte eller ændre navn på filer og mapper
Herunder laver vi følgende
mv fil2 fil3
mv mappe2 mappe3
trte
Vi ser på resultatet
tree
.
├── fil1
├── fil3
├── mappe1
│ └── fil1
└── mappe3
└── fil1
2 directories, 4 files
du bruges til at vise størrelsen på mapper.
Her undersøger vi /etc/apt
du -h /etc/apt
4.0K /etc/apt/sources.list.d
60K /etc/apt/apt.conf.d
4.0K /etc/apt/preferences.d
4.0K /etc/apt/auth.conf.d
16K /etc/apt/trusted.gpg.d
100K /etc/apt
For at se alle filer og det samlede pladsforbrug anvendes -ch
du -ch /etc/apt
4.0K /etc/apt/sources.list.d
60K /etc/apt/apt.conf.d
4.0K /etc/apt/preferences.d
4.0K /etc/apt/auth.conf.d
16K /etc/apt/trusted.gpg.d
100K /etc/apt
100K total
For kun at se mappens størrelsen bruger vi -hs
du -hs /etc/apt
100K /etc/apt
df bruges for at se den brugte plads på partitioner.
df -h /dev/sda
Filesystem Size Used Avail Use% Mounted on
udev 952M 0 952M 0% /dev
-ht ext4 giver et komplet overblik over alle partitioner med filsystemet ext4.
df -ht ext4
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 30G 4.9G 24G 18% /
/dev/sda2 976M 104M 806M 12% /boot
/dev/sdb2 69G 53M 66G 1% /srv/data
/dev/sdb1 30G 45M 28G 1% /srv/backup
Henter filer på Internettet
Der ligger en fil på min hjemmeside med følgende adresse.
http://www.vidas.dk/guides/files/wget_testfil
Vi vil nu hente den ned i øvelsesmappen, som vi står i.
wget -c http://www.vidas.dk/guides/files/wget_testfil
--2020-12-18 16:07:08-- http://www.vidas.dk/guides/files/wget_testfil
Resolving www.vidas.dk (www.vidas.dk)... 185.199.110.153, 185.199.108.153, 185.199.111.153, ...
Connecting to www.vidas.dk (www.vidas.dk)|185.199.110.153|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 63 [application/octet-stream]
Saving to: ‘wget_testfil’
wget_testfil 100%[===================>] 63 --.-KB/s in 0s
2020-12-18 16:07:08 (2.81 MB/s) - ‘wget_testfil’ saved [63/63]
-c sikrer, at filhentningen kan genoptages hvis der bliver afbrudt.
Overblik
Optionerne kan stackes. På den måde vil wget -cob minfil *filadresse* hente i baggrunden, gemme den som minfil og sikre at download kan genoptages ved afbrydelse.
man-page wget: http://manpages.ubuntu.com/manpages/focal/man1/wget.1.html
find bruges til at finde filer
Lad finde filer med navnet fstab, på computeren. Vi skal bruge sudo, så vi kan nå alle steder hen
sudo find / -type f -name fstab
/usr/share/doc/util-linux/examples/fstab
/etc/fstab
/snap/core/10577/etc/fstab
/snap/core/10444/etc/fstab
/snap/core18/1932/etc/fstab
/snap/core18/1944/etc/fstab
Overblik
Kommandoen kan også bruges til at udføre kommandoer filer der findes.
Her er et eksempel hvor alle filer med endelsen .log får opdateret deres tidsstempel.
find . -type f -name "*.log" -exec touch {} \;
man-page more: http://manpages.ubuntu.com/manpages/focal/en/man1/find.1.html
Anvendes til at finde tekststrenge i en fil.
grep backup /etc/passwd
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
Du kan også søge på mere end en tekststreng.
grep "*TEKSTSTRENG1* \| *TEKSTSTRENG2*"
Her vil jeg f.eks. finde både backup og tj
grep "backup\|tj" /etc/passwd
Der må ikke være mellemrum mellem i backup\|tj
Hvis du skal finde en tekststrenge i en række dokumenter (f.eks. i html-filer på din hjemmeside) kan du gøre følgende:
grep alert -r ~/hjemmeside --include=*.css
Erstattes stien med et . (punktum), så søges der i den mappe du laver kommandoen.
grep alert -r . --include=*.css
Her er en god artikel om find: http://www.jcgonzalez.com/ubuntu-find-string-files-example
man-page grep: http://manpages.ubuntu.com/manpages/focal/man1/grep.1.html
chown bruges til, at ændre ejer og gruppe på en fil eller en mappe.
Det er kun root der kan ændre ejerskab på filer.
Ændring af ejerskab
Her ændres ejeren af ~/testfil til brugeren tj.
sudo chown tj ~/testfil
Ændring af ejerskab og gruppe
Herunder ændres filen til at have ejeren og gruppen tj
sudo chown tj:tj ~/testfil
Man kan også anvende følgende "shorthand"
sudo chown tj: ~/testfil
Ved at sætte et kolon, så antager chown, at gruppen er den samme.
Ændring af ejerskab på mapper og undermapper
Skal man ændre rettigheder på alle filer i en mappe anvender man -R
(recursive). Nedestående kommando ændrer ejerskab på alle filer i mappen /data
sudo chown -R tj: /data
tj@server1:~$ sudo touch testfil
[sudo] adgangskode for tj:
tj@server1:~$ ls -al testfil
-rw-r--r-- 1 root root 0 jun 2 10:41 testfil
tj@server1:~$ udo chown tj:tj testfil
-rw-r--r-- 1 tj tj 0 jun 2 10:41 testfil
man-page chown: http://manpages.ubuntu.com/manpages/focal/man1/chown.1.html
chmod ændrer rettighederne på filen.
chmod [-R][rettigheder] [fil/mappe]
Skal det gælde alle undermapper indsættes -R (recursiv)
Når vi sætter rettigheder anvender vi en anden skrivemåde end rwx. Vi anvender binære værdier som du kan se herunder.
Her kan du se beregningerne for de binære værdier: beregninger af binære værdier.
På denne måde skal vi kun angive et tal for henholdsvis brugeren, gruppen og alle. Herunder er nogle praktiske eksempler.
Tallet 705 skal læses som syv nul fem, hvor det første tal sætter rettigheden for brugeren, det andet tal for gruppen og det sidste for alle.
Uanset hvordan du sætter rettigheder og ejerskab har root-brugeren altid mulighed for at ændre disse.
root kan give og fjerne adgang til alle filer.
Et eksempel, hvor rettighederne sættes til at brugeren har alle rettigheder (rwx) og alle har ret til at læse og udføre (r-w) svarende til rettigheder for html-filerne på en webserver:
chmod 705 testfil
tj@server1:~$ ls -al | grep testfil
-rw-rw-r-- 1 tj tj 0 jun 3 17:02 testfil'
tj@server1:~$ chmod 705 testfil
tj@server1:~$ ls -al | grep testfil
-rwx---r-x 1 tj tj 0 jun 3 17:02 testfil
Dette eksempel viser hvordan man omdøber alle filer og undermapper.
chmod -R 705 /var/www/html
705 kombinationen er meget anvendt på systemer hvor brugeren skal have alle rettigheder, men alle skal kunne se filerne og udføre programmerne UDEN at kunne ændre på dem. F.eks. på en webserver som har filerne i mappen /var/www/html og dennes undermapper.
man-page chmod: http://manpages.ubuntu.com/manpages/focal/man1/chmod.1.html
På en Linuxserver bliver alle tjenester og hardware initialiseret og konfigureret igennem tekstfiler. Derfor skal du kende nano, et effektiv terminal tekstredigeringsprogram. Programmet har også opmærkning med farver, hvis det genkender formatet. nano startes med kommandoen:
nano *filnavn*
Du navigerer i filen ved hjælp af piletasterne, og du kan bruge Ctrl og kd
Herefter bliver ændres terminalen til nedestående, hvor menuen ligger i bunden af skærmen.
GNU nano 2.2.6 New Buffer ^G Få hjælp ^O Gem ^W Hvor er ^K Klip ud ^J Ombryd ^C Position ^X Afslut ^R Læs fil ^\ Erstat ^U Indsæt tekst ^T Stavetjek ^_ Til linjeDu navigerer rundt i nano med piletaster ligesom i alle andre tekstbehandlingsprogrammer.
Herunder er de meste basale funktioner
^ står for Ctrl og m- for Alt
Når du har redigeret din tekst færdig afslutter du med Ctrl+x, hvorefter nano i bunden svarer:
Gem ændret buffer (AT SVARE "Nej" VIL ØDELÆGGE ÆNDRINGER)? J Ja N Nej ^C AnnullérNår du svarer y vil nano skrive filnavnet med den fulde sti, hvortil du taster Enter.
Får du en fejlmelding om at du ikke kan gemme skyldes det oftest, at man redigerer i en fil man ikke har rettigheder til. Oftes skyldes det at man glemmer at anvende sudo når man redigerer i systemfiler.
cat laver et output af filen, men stopper ikke når skærmen er fyldt. Derfor er cat ikke velegnet til at vise indholdet af store filer.
vi vil se indholdet af /etc/hosts
cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 server1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
man-page cat: http://manpages.ubuntu.com/manpages/focal/man1/cat.1.html
more laver en udskrift af filen, et skærmbillede ad gangen. Man fortsætter visningen ved at trykke Enter eller mellemrum.
Neders på siden står der hvor langt i filen man er angivet i procent.
more /etc/passwd
.... mange linier.....
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologi
n
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/n
ologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbi
--More--(63%)
man-page more: http://manpages.ubuntu.com/manpages/focal/man1/more.1.html
head viser de første 10 linier af en fil og tail viser de sidste 10
Kommandoen er god til at se om noget er blevet korrekt tilføjet til en fil.
tail /etc/passwd
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
tj:x:1000:1000:Thomas Jensen:/home/tj:/bin/bash
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
Overblik
man-page tail: http://manpages.ubuntu.com/manpages/focal/en/man1/tail.1.html
man-page head: http://manpages.ubuntu.com/manpages/focal/man1/head.1.html
sort sortere i outputtet.
Her bruger vi sort til at filtrere de sidste 5 linier af /etc/passwd
tail -5 /etc/passwd | sort
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
pollinate:x:110:1::/var/cache/pollinate:/bin/false
sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
tj:x:1000:1000:Thomas Jensen:/home/tj:/bin/bash
Som du kan se er lxd nu blevet flyttet øvers.
Det ændrer ikke på filen, men giver os et bedre overblik.
man-page sort: http://manpages.ubuntu.com/manpages/focal/man1/sort.1.html
Nogle gang kan vi have filer der har gentagelser i sig - det kan f.eks. være logfiler. uniq kan hjælpe os med det når filen er sorteret (se sort ovenfor)
Her har jeg en fil1 der viser hvem der har været inde i et rum
cat fil1
Hans
Grethe
Anders
Grethe
Anders
Grethe
Jeg vil gerne se hvem der har været derinde
sort fil1 | uniq
Anders
Grethe
Hans
Jeg vil gerne se hvor mange gange de har været derinde
sort fil1 | uniq -c2 Anders 3 Grethe 1 Hans
Jeg vil gerne se hvem der har været derinde mere end engang, og hvor mange gange.
sort fil1 | uniq -cd
2 Anders
3 Grethe
Jeg vil gerne se hvem der kun har været derinde 1 gang.
sort fil1 | uniq -u
Hans
man-page sort: http://manpages.ubuntu.com/manpages/focal/man1/uniq.1.html
I linux bruges tegnet > (større end) eller >> til at omdirigere indhold. I denne sammenhæng skal det ses som en pil der peger til højre.
Anvender vi 1 pil (>), så erstattes alt indholdet i filen med output. Anvendes der 2 pile (>>), så tilføjes ouput til slutningen af filen.
Som standard vises output i terminalen. Men det kan være at man gerne vil have output i en fil, så man kan arbejde videre med den.
Output kan have 2 former:
Det kan bruges på følgende måder:
Hvis man bare vil fjerne meddelelser fra kommandoer (f.eks. i scripts) kan man i stedet for en fil vælge /dev/null. Det er reelt en mappe på computeren der ikke er der - et sort hul.
Eksempel: Vi vil gerne have træstrukturen fra /etc/aptlagt ind i en fil.
tree -d > træstruktur
tj@server1:~$ tree -d > træstruktur
tj@server1:~$ cat træstruktur
/etc/apt
├── apt.conf.d
├── auth.conf.d
├── preferences.d
├── sources.list.d
└── trusted.gpg.d
5 directories
Eksempel: Vi vil gerne have lagt fejlmeddelser fra en kommando ind i en filen fejlmeddelelser:
cat fil_findes_ikke 2>fejlmeddelelser
tj@server1:~$ cat fil_findes_ikke 2>fejlmeddelelser
tj@server1:~$ cat fejlmeddelelser
cat: fil_findes_ikke: No such file or directory
Eksempler
Læs mere: http://askubuntu.com/questions/350208/what-does-2-dev-null-mean
echo er bashfortolkerens printfunktion
echo "Hej med dig"
Hej med dig
Vi kan f.eks. bruge den til at indsætte datoen i slutningen af en fil (fejlmeddelelser fra før)
echo $(date) >> fejlmeddelelser
tj@server1:~$ echo $(date) >> fejlmeddelelser
tj@server1:~$ cat fejlmeddelelser
cat: fil_findes_ikke: No such file or directory
Sun 20 Dec 2020 12:21:29 PM UTC
man-page echo: http://manpages.ubuntu.com/manpages/focal/man1/echo.1.html
tee bruges til omdirigering, og fungerer ligesom >. Ved at indsætte -a fungerer den lige som >> og indsætter i bunden af filen.
Tee skal bruges sammen med piping.
Eksempler
tee giver os mulighed for at indsætte tekstrenge i filer vi ikke selv ejer. Det kan vi gøre ved at indsætte sudo foran tee
man-page sort: http://manpages.ubuntu.com/manpages/focal/man1/tee.1.html
sed anvendes til at ændre tekst.
Kommandoen fungerer på følgende måde:
sed -i s/*NUVÆRENDE_TEKST*/*NY_TEKST*/g
Her vil vi ændre alle forekomster af Anders til Thomas:
touch sedfil
echo "Mit navn er Anders" > sedfil
cat sedfil
Mit navn er Anders
sed -i s/Anders/Thomas/g sedfil
cat sedfil
Mit navn er Thomas
Et eksempel på en kommando der erstatter en tekststreng
find . -type f | xargs sed -i 's/tocify({ selectors: "h1, h2, h3, h4" })/tocify({ selectors: "h2, h3, h4" })/g'
man-page tail: http://manpages.ubuntu.com/manpages/focal/en/man1/sed.1.html
På Linux pakker man filer ved hjælp af tar. De pakkede filer kaldes for tarballs.
Som standard pakker man mapper med filer. På den måde sikrer man sig også at filerne ligger i den samme mappestruktur, som det blev pakket ned i.
Når man pakker tarballs, så navngiver man den på følgende måde: *PAKKENAVN*.tar.*PAKKEFORMAT*
Tar anvendes på følgende måde:
tar *OPTIONER* *NAVN_PÅ_PAKKET_FIL* *FILER_DER_SKAL_PAKKES*
Eksempel
tar cvfz gif_backup.tar.gz gif
Optioner
Her vil vi gennemgå komprimeringsformaterne gzip og lzma.
Pakning med gzip
tar cvfz gif_backup.tar.gz gif
gzip-filer navngives tar.gz som afslutning.
Pakning med lzma
tar cvf gif_backup.tar.lz --lzma gif
lzma-filer navngives tar.lz som afslutning.
Til daglig brug bør du anvende gzip, som komprimere ca. til ⅓ (33%)af den oprindelige størrelse. gzip har den bedste størrelse/hastigheds ratio.
lzma anvendes til større backup opgaver. lzma pakker meget mere effektiv til ca. ¼ (25%) af den oprindelige størrelse, men bruger også længere tid på det. Selvom lzma bruger længere tid på at pakke, så pakker det ud hurtigt.
Her er et eksempel hvor jeg har har pakket Llibreoffice ned usr/lib/libreoffice. Det fylder ialt 316,6 MB
Algoritme | Størrelse | forskel i MB | forskel i % | Tid indpak | Tid udpak |
---|---|---|---|---|---|
gz | 111,4 | 205,2 | 35% | 11s | 1,7s |
lz | 84 MB | 232,6 MB | 26% | 1m37s | 4,8s |
For at se indholdet af tar filer anvendes optionerne tvf
tar tvf gif_backup.tar.gz
drwxr-xr-x tj/tj 0 2016-07-10 12:26 gif/
-rw-r----- tj/tj 805949 2016-07-10 12:26 gif/slow_clap_citizen_kane.gif
drwxr-xr-x tj/tj 0 2016-07-10 12:26 gif/tegnefilm/
-rw-r----- tj/tj 986614 2016-07-10 12:26 gif/tegnefilm/run_simpson_run.gif
drwxr-xr-x tj/tj 0 2016-07-10 12:26 gif/the bird/
-rw-r----- tj/tj 3080999 2016-07-10 12:26 gif/the bird/thebird02.gif
-rw-r----- tj/tj 1890379 2016-07-10 12:26 gif/the bird/thebird01.gif
-rw-r----- tj/tj 121990 2016-07-10 12:26 gif/the bird/thebird03.gif
-rw-r----- tj/tj 6313886 2016-07-10 12:26 gif/the bird/thebird04.gif
-rw-r----- tj/tj 954706 2016-07-10 12:26 gif/mordor.gif
-rw-r----- tj/tj 137685 2016-07-10 12:26 gif/lachifre.gif
Man kan også bruge grep
tar tvf gif_backup.tar.gz | grep simpson
-rw-r----- tj/tj 986614 2016-07-10 12:26 gif/tegnefilm/run_simpson_run.gif
Man kan vælge mellem at udpakke alle filer eller blot enkelte
Man udpakker filer på følgende måde - uanset komprimeringsformat.
tar xvf *PAKKEFIL*
Her udpakkes filen gif_backup.tar.lz
tar xvf gif_backup.tar.lz
gif/
gif/slow_clap_citizen_kane.gif
gif/tegnefilm/
gif/tegnefilm/run_simpson_run.gif
gif/the bird/
gif/the bird/thebird02.gif
gif/the bird/thebird01.gif
gif/the bird/thebird03.gif
gif/the bird/thebird04.gif
gif/mordor.gif
gif/lachifre.gif
For pakke en enkelt fil ud sætter man blot filnavnet til sidst med den fulde sti.
tar -xvf gif_backup.tar.gz gif/tegnefilm/run_simpson_run.gif
Hvis man vil udpakke flere filer sætter man blot hvert filnavn ind som en tekststreng:
tar -xvf gif_backup.tar.gz gif/tegnefilm/run_simpson_run.gif gif/mordor.gif
Du kan også udpakke alle filer der hedder noget med bird
tar -xvf gif_backup.tar.gz --wildcards *bird*
Læs mere: http://www.tecmint.com/18-tar-command-examples-in-linux/
reboot genstarter computeren. Den skal køres med root-rettigheder.
sudo reboot
man-page reboot: http://manpages.ubuntu.com/manpages/focal/man8/reboot.8.html
shutdown lukker computeren ned. Kommandoen fungerer på følgende måde
sudo shutdown [Optioner] tid [besked]
man-page shutdown: http://manpages.ubuntu.com/manpages/focal/en/man8/shutdown.8.html