Det finnes knapt noen grenser for hva man kan lære i Linux. Heldigvis er det en enorm delingskultur i dette universet. Verdensveven bugner av åpne frie ressurser man kan studere.
Her pirkes det litt i overflaten for noen få verktøy i Linux som kan være til nytte.
nano
Nano er en enkel tekstbehandler som er lett å komme i gang med. Før man vet ordet av det, trenger man å redigere tekst. Da er nano kjapp å bruke.
ˆ = Ctrl-tast
F eks ˆG betyr «Hjelp» og vi trykker da Ctrl+G
M = Alt-tast
F eks M-U betyr «Undo» og vi trykker da Alt+U
Det er litt uvant i starten, men man venner seg til det.
Navigere i tekst
En rutinert musebruker kan fort glemme at Linux ikke reagerer på musa. Vi prøver kanskje å scrolle, men nei, det går jo ikke.
Så da får vi bruke piltaster for eksempel. PgUp og PgDn flytter cursor helt opp eller helt ned i tekst. End og Home virker jo som forventet på en linje med tekst.
Markere tekst
Alt+A markerer start, og deretter kan piltaster markere. Dersom hele linjen skal markeres, kan man bruke End eller Home i stedet for å pile framover eller bakover.
Lime inn tekst
Shift+Insert eller Høyreklikk mus hvis tekst er kopiert fra Windows
Linjenummerering
Dette gir linjenumre i filen test:
nano -l test
Eller, i nano:
Slå på nummerering: Alt+Shift+#
Slå av nummerering: Alt+Shift+#
Slå på nummerering i statusbar: Alt+Shift+C
Slå av nummerering i statusbar: Alt+Shift+C
For mer info kan man se manualen; man nano, eller søke på Internett etter ressurser.
rsync
Det kan fort bli behov for å kopiere filer. rsync er et verktøy som egner seg spesielt godt fordi det kopierer kun endringene siden forrige kopi. I tillegg går det fort.
La oss ta et eksempel:
sudo rsync -Scavx nettstedadmin@nettstedet.no:www/ /var/www/nettstedet.no/public_html/
Her kopieres det fra nettstedet.no og katalogen www til /var/www/nettstedet.no/public_html på vår lokale utviklingsserver.
Kolon (:) forteller rsync at kopiering skjer over ssh. Altså opprettes en ssh-fobindelse mellom produksjonsserver og lokal utviklingsserver, slik at filer kan kopieres.
Slash (/) etter www forteller rsync at www-katalogen ikke skal opprettes, men at alt innholdet i katalogen www skal kopieres til public_html-katalogen på den lokale serveren.
Hadde vi tatt bort slash (/) fra www, så ville også katalognavnet www og alt innhold i www bli kopiert til public_html.
Da hadde vi fått /var/www/nettstedet.no/public_html/www og deretter alle underkataloger og filer. Det ønsket vi ikke. Vi ville ikke opprette katalogen www på utviklingsserveren, fordi det er public_html som er «document root» her, og i produksjon er det katalogen www som er «document root».
Altså:
Slash / etter source folder => rsync kopierer kun innholdet i source katalog, ikke katalogen selv.
Slash / etter destinasjonskatalog => rsync limer inn data i eksisterende destinasjonskatalog.
Ingen slash etter kildekatalog => rsync kopierer katalog + innholdet
Ingen slash etter destinasjonskatalog => rsync oppretter destinasjonskatalog + innhold.
I eksempelet over kopierer vi initielt fra produksjon til utvikling. Kilde- og destinasjonskataloger er allerede opprettet, så vi kopierer kun innholdet.
Kun endringer
rsync kopierer kun endringer siden forrige kopiering. Dette skjer ved at rsync sjekker hva som ligger i destinasjonskatalogen og sammenlikner det med hva som ligger i kildekatalogen. Deretter kopieres det som er endret.
Et eksempel på bruk av switcher
rsync -Scavx
-S Dette håndterer Sparse Files effektivt og tar opp mindre plass på destinasjonen. Sparse Files er utvidbare filer som i utgangspunktet kan vokse innenfor en romslig ramme.
-c Checksum. En metode for å sjekke om en fil er endret eller ikke. Standard metode er å sjekke filstørrelse og endringsdato. Men -c bruker 128 bits checksum. Hvis checksum for samme fil på begge sider er lik: Ingen kopiering. Ulik: Kopiering.
-a Archive mode med rekursjon. Så og si alle egenskaper ved filer og kataloger og innholdet i dem bevares. Det eneste som ikke tas med er hardlinks, fordi det er krevende å finne dem.
-v Verbose. Dette øker informasjon til bruker under overføringen. Gir info om hvilke filer som blir overført, og en kort oversikt til slutt etter overføring.
-x Dette gir beskjed til rsync om ikke å overskride filsystemets grenser når rekursjon kjøres. Antakelig for å stoppe en uendelig loop.
Om rekursjon i rsync
-a switch innebærer blant annet rekursjon. (Se man rsync)
Rekursjon innebærer at rsync løper gjennom hele fil- og katalogstrukturen som vi vil kopiere.
Rekursive kall stopper når en innebygget stoppbetingelse inntreffer. Likevel kan det være fornuftig å alltid bruke -x switch for å gardere seg mot en uendelig loop hvis f eks stoppbetingelsen ikke slår til.
Det er smart å lese manualen. Kommando: man rsync. Man bør sette seg godt inn i alle switcher man vil bruke og hva hver enkelt switch gjør. Feil bruk av switcher kan gi resultater man ikke ønsker.
rm
rm benyttes for å slette filer og kataloger. Her må man trå varsomt. Sletting er uopprettelig, og det er fort gjort å slette filer eller kataloger man ikke skulle slette.
Slette en fil
Står i samme katalog som filen:
rm test.txt
Står i home, filen test.txt er i dir1 i home:
rm dir1/test.txt
Står i home, filen test er ikke i home, men i /var/www/ som eksempel:
rm /var/www/test.txt
Slette alle filer med samme etternavn
Dette fjerner alle filer med extension txt i aktuell katalog:
rm *.txt
Tvinge sletting uten spørsmål for noen filer
rm -f *.txt
-f betyr force. Her slettes alle filer uten interaktive valg og spørsmål.
Slette en tom katalog med rm
rm -d tomkatalog
-d betyr her tom katalog (directory)
Slette flere tomme kataloger med én kommando
rm -d katalog1 katalog2 /sti/til/katalog3
Slette katalog med filer og/eller underkataloger m/filer ved bruk av rekursjon
rm -r katalog1
Dette fjerner rekursivt katalog1 og alle underliggende kataloger og filer under katalog1. Kan ikke gjenopprettes.
Hvis man vil ha litt bedre kontroll:
rm -rI katalog1
Switch –I skal gi mulighet for å avbryte.
Man bør vite hva rekursjon er før man bruker -r svitsj.
Om rekursjon
Et rekursivt kall innebærer at slettekommandoen løper gjennom hele fil- og katalogstrukturen som befinner seg i og under aktuell katalog og dermed også alle underkataloger og filer. Så hvis man kjører sletting av kataloger og filer med rekursjon på en katalog, blir alle filer og underkataloger slettet.
ls
ls benyttes for å se filer og kataloger, og informasjon for disse.
Se innholdet i gjeldende katalog
ls-kommandoen alene (uten svitsjer) vil vise alle elementer som ligger i gjeldende katalog, men ikke skjulte elementer. Kataloger kan være farget (blå) mens filer f eks er hvit tekst på sort bakgrunn.
Vi står i en vilkårlig katalog og vil se eventuelle filer og underkataloger som ligger der:
brukernavn@servernavn:~$ ls
fil1.txt katalog1
fil2.txt katalog2
Mer info om elementer vises ved bruk av svitsjer. ls kan kjøres med en rekke ulike svitsjer. Her omtales -a, -s og -l.
Vis alt, også skjulte elementer
brukernavn@servernavn:~$ ls -a
. fil1.txt katalog1
.. fil2.txt katalog2
.bash_aliases
-a switch (eng: -a betyr «all»)
Nå vises også skjulte elementer som f eks .bash_aliases. Skjulte elementer har en dot foran navnet.
Se filrettigheter, eier, gruppe mm
brukernavn@servernavn:~$ ls -l
-rw-rw-r– 1 brukernavn brukernavn 54 Dec 11 2021 fil1.txt
-rw-rw-r– 1 brukernavn brukernavn 49 Dec 15 2021 fil2.txt
drwxrwxr-x 2 brukernavn brukernavn 4096 Feb 25 22:36 katalog1
drwxrwxr-x 2 brukernavn brukernavn 4096 Dec 12 2021 katalog2
-l switch brukes for «long listing format» og viser:
- Filrettigheter
- Antall linker
- Eier
- Gruppe
- Filstørrelse
- Sist endret
- Fil/katalog-navn
Se allokert størrelse
brukernavn@servernavn:~$ ls -s
total 32
Se filstørrelser med -lh
Svitsjene -lh gir størrelser i «human readable» format.
brukernavn@servernavn:~/bin$ ls -lh
total 244K
-rwx—— 1 brukernavn brukernavn 1.2K Jan 30 2022 backup1
-rwx—— 1 brukernavn brukernavn 1.9K Feb 3 2022 backup2
-rwx—— 1 brukernavn brukernavn 867 Jan 30 2022 backup3
+ 39 elementer (utelatt her)
Kombinere svitsjer
Et eksempel:
ls -las
Dette vil vise all informasjon som svitsjene -l, -a og -s hver for seg gir oss.
Noen vanlige kommandoer
alias | En egendefinert tekststreng som referer til kommando(er) |
apt | Pakkehåndtering, som brukes til oppdateringer og oppgraderinger. apt update, apt upgrade mm. |
apt-get | Som apt, pakkehåndtering. |
bc | Kalkulator. Utfører regneoperasjoner på kommandolinjen. |
cat | Kommando for å se innhold i fil/filer. |
cd | For å skifte til en annen katalog. |
chgrp | For å endre eierskap for gruppe til en fil eller katalog |
chmod | For å endre tilgang til fil |
chown | For å endre eierskap til fil |
cp | For å kopiere fil/filer/kataloger |
cron | Brukes til å utføre jobber til definerte tidspunkt, f eks backup |
curl | Et verktøy for å overføre data over Internett med ulike protokoller som http, https, ftp mm. |
echo | Viser en tekststreng som angis som argument |
exit | Forlate shell vi står i. |
find | Finner filer og kataloger og kan utføre handlinger på funn. |
grep | Søker angitt tekstuttrykk i fil(er) og viser alle linjer med søketreff. |
groupadd | Opprette ny gruppe |
groupdel | Slette eksisterende gruppe |
groupmod | Endre eksisterende gruppe |
gunzip | Komprimere eller pakke ut filer |
help | Viser hjelp |
hostname | Finne vertsnavn, IP mm eller angi vertsnavn |
ifconfig | Konfigurere nettverkskort |
ip | Administrasjon av nettverk |
kill | Terminere angitt pågående prosess |
less | Lese innhold i en fil side for side i vinduet/skjerm |
ln | Opprette lenke mellom filer |
locate | Finne filer |
man | Brukes for å lese manual for en angitt kommando/verktøy |
mkdir | Opprette katalog(er) |
more | Se tekstfiler en side av gangen |
mv | Flytte filer og kataloger, men også endre navn på filer og kataloger |
netstat | Se nettverkrelatert info |
nslookup | Se DNS-relatert info |
ping | Sjekke nettverksforbindelse mellom datamaskiner (server/host) |
printf | For å vise en tekststreng i terminalvinduet |
ps | Viser prosesser som kjører |
pwd | Viser komplett filsti for katalogen man står i |
reboot | Kjører omstart av OS |
rm | Slette filer, kataloger og symlinks |
rmdir | Slette tomme kataloger |
route | Konfigurere routing tabeller |
rsync | Synkronisere filer mellom kilde og destinasjon |
scp | Kopiere filer mellom datamaskiner |
shutdown | Slå av server |
ssh | For sikker tilkobling mellom servere/maskiner over nettverk |
sudo | Sudobruker kan kjøre en kommando som root med sudo |
systemctl | For å undersøke og administrere tilstanden for systemd mm |
tar | For å opprette og pakke ut filarkiver |
touch | For å opprette navngitt fil uten innhold (tom). |
tree | For å se katalogstruktur og filer der som et tre med greiner og blader |
tty | Viser info om terminalen man arbeider på |
useradd | Legge til ny brukerkonto |
usermod | Modifisere egenskaper for en bruker |
users | Viser brukere som er logget inn |
userdel | Slette en bruker |
vi | Standard teksteditor |
wc | Teller antall linjer, ord etc i spesifisert(e) fil(er) |
wget | For å laste ned filer fra Internett |
whatis | Gir kort beskrivelse av hva et verktøy gjør |
who | Info om brukere om er logget inn |
whoami | Viser mitt brukernavn når jeg er logget inn |