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 som finns i Cygwin/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ändscd ..
(notera att man måste ha mellanslag efter kommandot icd ..
) - kommandot för att lista filer är
ls
-- kort för list (i stället fördir
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)
- under WSL på skolan:
- gå till skrivbordet med
cd Desktop
(kolla medls
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) ochdiff
(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.
Update 211109:
The command lxrun does not seem to be available, and running the command wsl prints a message that a linux must be installed from aka.ms/wslstore
Before installing a linux distribution, open a command prompt (from the windows menu, search for CMD and open the command prompt)
Then, enter the command
wsl --set-default-version 2
to use WSL version 2.
(This does currently not work in the labs @Campus Hbg, as WSL v2 is not yet supported there. WSL v1 (mostly) works. The only known issue with WSL1 is that lldb does not work, so if you can enable WSL2 it is recommended to do so.)
Then, open Windows Store, search for "Ubuntu" or "Ubuntu 20.04 LTS" and install it
(click Get, then Install, and then Launch -- you can skip signing in when prompted.)
After installing and launching the installed WSL, complete the setup by entering a linux username and password.
Then, continue with the instructions below, starting with sudo apt-get update
The first time you give the sudo command, you need to enter the password you chose above.
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.
Öppna ett kommando-fönster (CMD).
Skriv in följande:
lxrun /install /y
(updatering 2021: detta fungerar inte längre, se ovan)
Detta tar "a few minutes". När det är färdigt ("Installation successful!") startar du kommandotolken bash genom att skriva
bash
Nu ändras prompten, och du är inte längre i Windows-kommandotalken (CMD), utan i kommandotolken bash. Börja med att uppdatera paketlistan och installera kompilator mm med
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gdb
sudo apt-get install lldb
sudo apt-get install cmake
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.
Om du vill använda git för versionshantering installeras det med
sudo apt-get install git
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
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
mkdir home
Montera katalogen:
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:
umount /mnt/home