Göm menyn

TDP001 Handhavande av datormiljö

Terminalkommandon v34


Här presenteras det första mailet då alla ännu inte fått sin epostadress. Denna vecka ger jag inga uppgifter att lösa, första veckorna brukar vara nog hektiska, men det finns lite övningsuppgifter som jag rekommenderar om du inte använt ett linux-system tidigare.

Terminalen (även ibland kallad skalet ("shell")) är ett verktyg som kan användas för att köra program som finns installerade på systemet. Vi kommer genom kursens gång titta på flera av de som finns tillgängliga, men vi kommer senare även kunna programmera lite i terminalen. Den terminalemulator som finns installerad i ert Mint-system styrs nämligen av ett Turingkomplett programmeringsspråk!

Det finns flera olika terminalemulatorer installerade på systemet och den som används som standard heter dash. Några av er har säkert använt bash tidigare. Dash säger sig vara snabbare och kräva mindre resurser och används därför som standard i Debian-baserade linux-system. För en normal användare är det dock ingen direkt skillnad mellan de två.

Vi börjar med en kort överblick av filsystemet ni får i ert operativsystem.

Filsystemet i Linux är ett trädbaserat system där vi längs upp har roten (alltså ett upp och nedvänt träd...). Roten symboliseras med sökvägen "/". I mappen (även kallad katalog) / finns det flera kataloger som just är mer eller mindre intressanta. Här listas några som kan vara intressanta:

  • En användares hem-mapp, dvs katalogen där användarens filer bör ligga alltid hittas på sökvägen "/home/<användarnamn>" (där <användarnamn> byts ut mot användarens faktiska användarnamn). Exempelvis har användaren Kim sin hemkatalog på sökvägen "/home/Kim".
  • Katalogen "/etc" innehåller konfigurationsfiler för diverse program som finns installerade på systemet.
  • I "/bin" finns programvara systemet behöver för att fungera
  • "/sbin" innehåller administrativ programvara
  • Katalogen "/usr" innehåller sådant som inte är vitalt, exempelvis programvara användare har installerat eller annat som följde med installationen
  • I "/media" hittar man oftast exempelvis usb-minnen och andra externa enheter

Så, då har vi lite koll på katalogerna som finns. Hur ser vi dem då? Till att börja med är det bra att starta en terminal. Tryck på menyknappen nere till vänster, skriv terminal och tryck på enter (eller tryck på genvägen "Terminalfönster" till vänster i menyn). Nu får du förhoppningsvis upp en svart ruta med lite text som ser ut likt detta:

    <uid>@localhost:~$
Detta betyder att du är inloggad med användarnamn <uid> på dator "localhost". Du står i mapp ~ (din hemmapp, beskrivs nedan) och du är inloggad som en normal användare. Om det står ett #-tecken istället för $ betyder det att du har root-rättighet. I dokumentationer inleds oftast kommandon som ska köras som vanlig användare med $ och kommandon som måste köras med root-rättighet inleds med #. Detta betyder INTE att dessa tecken ska skrivas in i terminalen.

Här kommer en kort lista på kommandon som kan vara bra för att navigera i och hantera filsystemet:

kommando Betydelse Beskrivning
ls List Structure Lista filer och mappar i nuvarande mapp
ls sökväg Lista filer och mapppar i sökvägen "sökväg"
pwd Print Working Directory Nuvarande position (var är jag)
cd sökväg Change Directory Gå till given sökväg
cd Gå till hem-mappen
cd - Gå till föregående mapp (den jag stog i innan jag flyttade mig)
cp orginal målCopy Kopiera filen(sökvägen) orginal till mål
mv orginal målMove Flytta orginal till mål
rm sökväg Remove Tag bort filen "sökväg"
rmdir sökväg Remove Directory Tag bort den tomma mappen "sökväg"
mkdir sökväg Make Directory Skapa katalogen "sökväg"
touch sökväg Uppdatera tidsstäpeln för "sökväg" (skapar en tom fil om den inte finns)

Katalogen .. är intressant. Det är alltid katalogen ett steg uppåt i filstrukturen. Står du exempelvis i din hemkatalog kommer du efter att du kört kommandot "cd .." stå i katalogen "/home". Tag som övning reda på vad som händer om du går uppåt när du står i rot-katalogen ("/"). Var hamnade du?

Likaså är katalogen ~ spännande, ~ används nämligen för att nå en användares hemkatalog. Skriver jag "cd ~eriel" hamnar jag i användaren "eriel"s hemkatalog. Utelämnar jag användarnamnet och exempelvis skriver "cd ~" hamnar jag i min egen hemkatalog. Vad händer om jag skriver "cd ~/Desktop"? Vad händer om jag efteråt skriver "cd ../Documents"?

Kommandon i skalet är i grunden ganska enkla och gör de man hoppas, men ibland är det lite svårt att veta hur de fungerar. Som tur är finns det för de flesta program en dokumentation som man når med hjälp av kommandot "man". Om jag exempelvis vill se dokumentationen för kommandot "ls" skriver jag "man ls". Det finns oftast flera rubriker, överst står hur jag anropar det programmet, för ls ser det ut enligt nedan:

       ls [OPTION]... [FILE]...
Hur tolkar jag detta? Jo, du skriver ls och hakparenteserna betyder att de delarna inte krävs. "..." betyder att man kan ha flera. Jämför detta med "man cp":
   
       cp [OPTION]... [-T] SOURCE DEST
Här betyder det alltså att SOURCE och DEST krävs och att man får lägga till en eller flera OPTION (som beskrivs vidare i man-sidorna för cp). Man kan även lägga till väljaren -T.

I man-sidorna navigerar man normalt sätt genom att trycka på mellanslag för att bläddra en sida text. Man kan också söka efter ett visst ord genom att trycka på / (dvs shift+7), skriva in det man söker efter och trycka på enter. För att se nästa matchade ord kan man trycka på n (som i next). För fler kommandon tryck h (som i help). Tryck q för att avsluta.

ls listar normalt sätt endast filnamn som inte inleds med en punkt. Tag med hjälp av "man" reda på hur du använder ls för att visa en detaljerad lista över samtliga filer i nuvarande katalog ordnade med senast ändrad fil först.

Om man tycker man-sidorna är lite för utförliga har de flesta program väljaren -h eller --help för att kort beskriva programmet. Se vad skillnaden är mellan "man ls" och "ls --help". Varför får du inte hjälp när du skriver "ls -h"?

Med terminalen kan man som vi har sett starta massor av inbyggda program, men vi kan även starta andra program. När vi skriver ett kommando i terminalen letar den reda på installerade program som matchar detta och startar programmet vi ber om. I python-kursen (och även när ni jobbar med html-delen av denna kurs) rekommenderar vi att ni arbetar med en väldigt vanlig texteditor som heter emacs. För att starta emacs från terminalen skriver ni helt enkelt emacs i terminalen och trycker på enter. Nu får ni förhoppningsvis upp ett fönster där ni kan skriva text. Vi har dock ett problem, så fort du startade emacs blir terminalen "upptagen" och tar inte emot nya kommandon. Så fort du stänger av emacs kommer det dock börja fungera. Detta är lite tråkigt så det man kan göra för att starta emacs i bakgrunden är att köra kommandot "emacs &" i terminalen istället. &-tecknet lägger processen i bakgrunden så att vi kan fortsätta använda terminalen. Om vi råkat starta ett program utan att lägga det i bakgrunden och behöver vår terminal är det lite tråkigt att behöva stänga av programmet vi startade. Det man kan göra istället är att gå till terminalen och trycka Ctrl-Z. Detta gör att terminalen går att använda, men inte det program vi hade startat, det är också lite tråkigt. Därför kan vi efter att vi tryckt Ctrl-Z lägga programmet i bakgrunden genom att köra "bg" (som i background). Här kommer stegen i lite trevligare format:

     $ emacs
     ( Ett emacs-fönster öppnas )

     Ge fokus till terminalen genom att trycka Ctrl-Z i terminalfönstret
     ( nu kan du inte längre skriva i emacs, men terminalen går att använda )
    
     $ bg
     ( emacs läggs i bakgrunden på samma sätt som att det startats enligt "emacs &" )

Sidansvarig: Pontus Haglund
Senast uppdaterad: 2019-05-29