Om kommandoraden / WSL / bash
Kort om kommandoraden / WSL / bash
Laboration 1 fokuserar på utvecking av C++-program i kommandorads-miljö.
Här kommer en kort introduktion till en *nix-liknande kommandoradsmiljö. Mac-användare kommer att känna igen sig: detta är i princip samma miljö som i terminalen i MacOS X.
Information om hur man startar kommandoradsmiljön på skolans datorer finns längst ned på denna sida. Detta täcker även att köra WSL (Windows Subsystem for Linux, ett anpassningslager för att använda Linux-program under Windows) på egen Windows 10-dator.
Kort introduktion till kommandoraden
Navigering av filsystemet
Det skal (shell, kommandorads-interpretator) som finns bash-terminalen fungerar ganska likt MS-DOS-prompten för grundläggande navigering. De viktigaste skillnaderna är
- avdelare i sökvägar är tecknet / (i stället för \)
- optioner till kommandon brukar inledas med - (i stället för / som i DOS)
- kommandot för att flytta till en annan katalog är cd, och för att flytta upp en nivå används cd .. (notera att man måste ha mellanslag efter kommandot i cd ..)
- kommandot för att lista filer är ls -- kort för list (i stället för dir i DOS)
- kommandot för att kopiera en fil är cp -- kort för copy. För att copiera rekursivt ges optionen -r
(Exempel: cp -r katalog kopiaAvKatalog) - kommandot för att döpa om eller flytta en fil är mv -- kort för move (i stället för "rename")
- kommandot för att ta bort en fil är rm -- kort för "remove"
- kommandot för att skapa en ny katalog är mkdir -- "make dir"
- kommandot för att ta bort en katalog är rmdir -- "remove dir". Notera att man bara kan ta bort tomma kataloger.
- aktuell katalog ingår inte i sökvägen för kommandon. För att köra kommandot "kommando" i aktuell katalog skriver man "./kommando"
- skalet har kommando-historia, så man kan komma åt tidigare körda kommandon med piltangenterna
- skalet har tab-komplettering, så man behöver inte skriva hela filnamnet, utan man kan skriva de inledande bokstäverna (tills det blir unikt) och trycka <TAB> så fyller skalet i resten av namnet.
Åtkomst av windows-filsystemet
Enhetssökvägarna ser annorlunda ut i WSL och cygwin.
- Under WSL finns C: tillgänglig som /mnt/c
- Under cygwin finns C: tillgänglig som /cygdrive/c
Se längre ned på sidan för specifik information om montering av er hemkatalog på skolans datorer.
Att editera filer
För att editera filer kan man antingen göra det direkt i terminalen eller med en Windows-texteditor.
Under WSL/cygwin finns de vanliga editorerna vim och emacs (som är kraftfulla texteditorer för programmering, men har en viss inlärningströskel) samt nano (som är en enklare att använda men inte är lika kraftfull). För att öppna filen "test.cpp" i editorn nano ges kommandot nano test.cpp
I Windows i datorsalarna finns editorn Notepad++. En källkodsfil kan öppnas i Notepad++ från Windows explorer med [högerklick]->"edit with Notepad++"
Exempel: skapa hello.cpp
Två sätt att skapa en katalog för lab1 (på skrivbordet) och hello.cpp:
I båda fallen, börja med montera din hemkatalog (enligt information om datorsalar vid campus Helsingborg).
I terminalen:
- gå till katalogen där du ska ha dina filer
- under WSL på skolan: cd /mnt/home (se information om datorsalar vid campus Helsingborg)
- gå till skrivbordet med cd Desktop (kolla med ls vad skrivbordskatalogen heter)
- skapa katalogen "lab1" med mkdir lab1
- gå ner i katalogen med cd lab1
- öppna filen med t ex nano: nano hello.cpp
- skriv kod, och spara med ctrl-O (de vanligaste kommandona visas nederst på skärmen)
Därefter, öppna ett nytt terminalfönster för att kompilera och testa
I windows skrivbordsmiljö:
- skapa en mapp på skrivbordet som heter lab1
- öppna mappen
- skapa en ny textfil som heter hello.cpp (notera att filtypen inte ska vara "textfil" (.txt) utan "C++ källkod" med filändelse .cc eller .cpp)
- öppna filen med Notepad++ (högerklick på hello.cpp->Edit with Notepad++)
Öppna ett terminafönster, och kompilera och testa:
- gå till mappen lab1 på skrivbordet med cd (enl ovan)
- lista filer och verifiera att filen hello.cpp finns i mappen: ls
- kompilera och testa
I exemplen har jag lagt katalogen lab1 på skrivbordet, ni kan så klart lägga den var som helst.
Andra kommandon
Några andra kommandon som är användbara är
- man (för att visa manualsidan för ett visst kommando)
- less (för att titta på filer),
- cat (för att skriva ut innehållet av en fil i terminalen) och
- diff (för att jämföra två filer),
- pwd (för att skriva ut aktuell katalog "print working directory")
Till exempel kan man titta på manualsidan för kommandot cp genom att ge kommandot man cp (och motsvarande för de andra navigerings-kommandona, använd man om du undrar om något om t ex vilka options ett kommando har)
För att se de vanligaste optionerna till kompilatorn g++ ger man kommandot man g++
Kommandot man använder kommandot less för att visa manualsidan. För att avsluta trycker man q ("quit"). För att söka efter en sträng trycker man / (för sökning framåt) eller ? (för sökning bakåt), skriver söksträngen och trycker enter. För att upprepa sökningen (d v s gå till nästa träff) trycker man n (eller N för att gå till föregående träff).
Information om att göra labbarna på Windows-datorer
Nedan följer instruktioner som jag fått från LDC angående att starta kommandoradsmiljön på skolans Windows-datorer.
Den första delen av instruktionerna är generell för windows 10. Den senare (om montering av hemkatalog) gäller bara skolans datorer.
För att komma igång med WSL (Ubuntu distro)
Dessa instruktioner installerar en linux-miljö under din användarprofil och installerar de program som behövs för att bygga C++-program
(OBS! På skolans datorer är WSL installerat, men detta kräver även en omstart av datorn. Fungerar inget av nedanstående så kan datorn behöva en omstart. På egen dator behöver man först installera WSL enligt https://docs.microsoft.com/en-us/windows/wsl/install-win10.)
Att installera ubuntu under WSL och därefter installera kompilator etc.
Efter att WSL installerats måste en linux-distribution installeras med kommandot
wsl --install -d Ubuntu-20.04
I äldre versioner av WSL behövde man installera linuxdistributionen från Microsoft store. Öppna programmet microsoft store, antingen genom att söka efter "Store" och välja "Microsoft store" eller eventuellt gå till https://aka.ms/wslstore
I Windows Store, sök efter for "Ubuntu" eller "Ubuntu 20.04.05 LTS" och installera den. (klicka "Get", sen "Install", and then "Open").
Det är viktigt att du väljer version 20.04.5, vissa saker (t ex debuggern) fungerar inte under nyare versioner.
När du startar wsl kommer den att slutföra installationen och sen be dig välja användarnamn och lösenord. Lösen behöver du sen för att köra sudo som ger dig rätt att installera program.
Du kan nu starta linux-miljön genom att öppna ett kommandofönster ("Command Prompt") och ge kommandot
wsl
Då ändras prompten, och du är inte längre i Windows-kommandotalken (CMD), utan i kommandotolken bash.
wsl har många options, t ex kan du ha flera linux-distributioner installerade. Ge kommandot
wsl --help
för dokumentation om du är intresserad.
Installation av program
starta wsl
Börja med att uppdatera paketlistan genom att skriva kommandot
sudo apt-get update
Därefter, installera kompilator mm med
sudo apt-get install build-essential
sudo apt-get install gdb
sudo apt-get install cmake
sudo apt-get install git
Efter varje kommando kommer den att lista vilka paket som den kommer att installera och fråga om den ska fortsätta. ("Continue? Y/n"). Svara y.
Sen bör du uppgradera de installerade paketen till senaste version (detta tar några minuter) med
sudo apt-get upgrade
(Detta behöver du inte göra direkt på labben, och det är inte strikt nödvändigt.)
Mer info om de Windows-specifika delarna finns här: https://docs.microsoft.com/en-us/windows/wsl/install-win10
Om du vill använda clang++ och dess standardbibliotek i stället for GNUs kompilator, installera dessa med
sudo apt-get install clang
sudo apt-get install libc++-dev
Debuggern lldb verkar inte fungera under WSL på skolans datorer, men installeras med
sudo apt-get install lldb
Specifik information för datorsalarna på Campus Helsingborg
Nedanstående gäller bara skolans datorer. Om du kör på en egen windows-dator kan du bortse från detta.
Att komma åt den egna hemkatalogen:
På en dator med lokal disk kommer man åt disken C: i bash under sökvägen /mnt/c men på skolans nätverks-filsystem fungerar inte detta (eftersom din hemkatalog bara ser ut att ligga på C:), utan du behöver montera din hemkatalog någonstans i filsystemet. I detta exempel monteras hemkatalogen under /mnt/home.
Gå in i katalogen ("mappen") /mnt med kommandot
cd /mnt
Skapa en katalog som du vill montera din hemkatalog under
sudo mkdir home
Montera katalogen:
sudo mount -t drvfs '\\uwfpcluster03.uw.lu.se\LUCAT-Id$' /mnt/home
(där du ska använda ditt LUCAT-Id följt av ett dollartecken).
Gå till katalogen
cd home
(eller, med absolut sökväg som fungerar oavsett i vilken katalog du står)
cd /mnt/home
Lista katalogen
ls
För att ta bort moteringen av hemkatalogen:
sudo umount /mnt/home