lu.se

Datavetenskap

Lunds Tekniska Högskola

Denna sida på svenska This page in English

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ä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"
  • 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 skolans datorsalar).

I terminalen:

  1. gå till katalogen där du ska ha dina filer
  2. gå till skrivbordet med cd Desktop (kolla med ls vad skrivbordskatalogen heter)
  3. skapa katalogen "lab1" med mkdir lab1
  4. gå ner i katalogen med cd lab1
  5. öppna filen med t ex nano: nano hello.cpp
  6. skriv kod, och spara med ctrl-O (de vanligaste kommandona visas nederst på skärmen)

Därefter, öppna en annan terminal för att kompilera och testa

I windows skrivbordsmiljö:

  1. skapa en mapp på skrivbordet som heter lab1
  2. öppna mappen
  3. 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)
  4. öppna filen med Notepad++ (högerklick på hello.cpp->Edit with Notepad++)

Öppna en bash-terminal, och kompilera och testa:

  1. gå till mappen lab1 på skrivbordet med cd (enl ovan)
  2. lista filer och verifiera att filen hello.cpp finns i mappen: ls
  3. 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 skolans datormiljö

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.

Öppna ett kommando-fönster (CMD).

Skriv in följande:

lxrun /install /y

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

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

Om du vill använda git för versionshantering installeras det med

sudo apt-get install git

Mer info om de Windows-specifika delarna finns här: docs.microsoft.com/en-us/windows/wsl/install-win10

Specifik information för skolans datorer

Nedanstående gäller bara skolans datorer. Om du kör på en egen windows-dator kan du bortse från detta.

För 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