Om kommandoraden / Cygwin
Kort om kommandoraden / Cygwin
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.
Terminalen startas genom att köra programmet "Cygwin64 Terminal" som finns i start-menyn
under "All programs->Cygwin->Cygwin64 Terminal"
Navigering av filsystemet
Det skal som finns i Cygwin-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" - 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
- De olika enheterna i Windows-filsystemet syns i Cygwin under
/cygdrive/<enhetsbokstav>
. Till exempel så finns "C:" under/cygdrive/c
, och motsvarigheten till DOS-kommandotcd D:\foo
ärcd /cygdrive/d/foo
- För att komma åt er användarprofil behöver den mappas till en enhetsbokstav. Det finns en .bat-fil (mount_home.bat), som gör att er filarea på nätverket får enhetsbokstaven "X", och därmed kan nås i cygwin under
/cygdrive/x
Kommandot för att göra denna till aktuell katalog är dåcd /cygdrive/x
- Ladda ner mount_home.bat och lägg den lätt tillgänglig -- du behöver köra denna varje gång du loggar in för att komma åt dina filer från cygwin-terminalen.
Att editera filer
För att editera filer kan man antingen göra det direkt i terminalen eller med en Windows-texteditor.
Under 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 att köra mount_home.bat
I cygwins kommandorad:
- gå till skrivbordet med
cd /cygdrive/x/Desktop
- 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 en annan terminal 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
- öppna filen med Notepad++ (
högerklick på hello.cpp->Edit with Notepad++
)
Öppna en cygwin-terminal, och kompilera och testa:
- gå till mappen lab1 på skrivbordet med
cd /cygdrive/x/Desktop/lab1
- 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).