Komentorivi
1. Tarkoitus
Ennen integroidun ympäristön käyttöä pitää ymmärtää mitä vaiheita ohjelman editointiin, kääntämiseen ja ajamiseen liittyy. Siksi aluksi asiat tehdään mahdollisimman alkukantaisesti.
2. Komentorivin perusteita
Komentorivi on eräs (ja oikeastaan tärkein) mahdollisuus käyttöjärjestelmien ja muiden tietokoneohjelmien käyttöliittymäksi. Se on tapa olla vuorovaikutuksessa tietokoneohjelman kanssa syöttämällä tekstimuotoisia komentoja peräkkäin.
Komentorivi mahdollistaa erityisesti monimutkaisten tai toistuvien komentojen suorittamisen, joka graafisesta käyttöliittymästä käsin voi olla hankalaa tai mahdotonta. Vaikka "normaali käyttäjä" törmää komentoriviin harvemmin, on komentorivi tärkeä työkalu ohjelmoijille, järjestelmien ylläpitäjille ja edistyneille käyttäjille.
On olemassa useita erilaisia "kuoria", shellejä, joiden avulla komentorivikomentoja voidaan antaa. Shell on ohjelma, jonka tarkoitus on tulkita kirjoitettu komento ja sen perusteella usein käynnistää toinen ohjelma. Osa komentorivin komennoista on sisäänrakennettuja, mutta toimintaa laajennetaan ulkoisilla ohjelmilla kuten esim grep
, awk
ja sed
. Ulkoinen ohjelma voi olla myös esim calc
tai word
. Ohjelmointikursseilla ulkoinen komentoriviltä käynnistettävä ohjelma on esimerkiksi ohjelmointikielen kääntäjä.
Komennot koostuvat komentojen (tai ohjelmien) nimestä komennon (tai ohjelman) parametreista.
Useissa shelleissä parametrit erotellaan toisistaan välilyöntien avulla. Siksi komentojen kirjoitettaessa on oltava tarkkana ja välilyönneillä on merkitystä.
Seuraavassa on esimerkkejä eri shelleistä eri käyttöjärjestelmissä. Esimerkeissä on isolla kirjaimilla se osa, jonka tilalle käyttäjä joutuu kirjoittamaan tilanteeseen sopivan parametrin. Ja "Syntaksin" jälkeen seuraavissa esimerkeissä käyttäjä kirjoittaa väkäsen tai $ jälkeisen osan, ei sitä edeltävää, jonka kone on kirjoittanut merkiksi edellisestä komennosta.
Windows käyttäjille suositellaan 2021 alkaen Ohj1 ja Ohj2 kursseilla Git Bashin käyttöä.
Lisätietoa:
- Unix-Shellin käyttöönotto (mm. Git Bash, WSL)
- Windows käyttäjille suositellaan vaihtoehtoa 2.1 Git Bash
- Oppimateriaali Bash-shellin käyttöön
- itkp1011 -kurssin komentorivin materiaali
Komentorivin ymmärtämiseksi pitäisi ensin ymmärtää hyvin mitä ovat levyt (Windowsissa), hakemistot ja tiedostot. Suuri osa komentorivin valmiista komennoista liittyy noiden käsittelyyn.
Windows käyttäjät hypätkää siis nyt Git Bash-kohtaan ja Linux/Mac käyttäjät vastaavaan kohtaan omaan kohtaanne.
2.1 Git Bash
Git Bash tulee Git-versionhallinta-ohjelmiston asennuksen myötä. Se on aito Windows ohjelma, joka matkii Unix-pohjaisen Bash-shellin toimintaa. Tämä riittää hyvin usein ja sen hyötynä esim WSL:ään on, että se kommunikoi paremmin itse Windowsin tiedostojärjestelmän kanssa. Aidot Unix-kommennot kuten chmod
ja sudo
eivät toimi, mutta se mikä toimii, riittää hyvin moneen kurssin tarpeiseen. Pienenä hankaluutena on, että hakemiston erotin merkkinä on Unix-tyyliin kauttaviiva, kun Windowsin luonnollinen erotinmerkki on takakautta \
. Eli pitää hypellä mielessään näiden eri merkintätapojen välillä.
2.3 Git Bash
Esimerkiksi Ohj1- ja Ohj2-kursseilla asennetaan versionhallintaohjelma GIT ja tämän mukana tulee Git Bash Shell, jota voidaan myös käyttää. Eli asenna ensin seuraavan linkin ohjeilla:
Git Bash ei ole täydellinen Linux, vaan se on "ohjelma", joka toteuttaa suuren osan Bash Shellin komennoista, mutta koska takana ei ole esimerkiksi aito Linux, niin vahvasti Linuxiin sidotut komennot kuten sudo
eivät toimi.
2.3.1 Erilainen hopute
Tätä käytettäessä "hopute", eli merkkijono jonka jälkeen on käyttäjän vuoro kirjoittaa, näyttää hieman erilaiselta, eli:
Eli "oikeasti" bash-shellistä poiketen hopute on aina pelkkä $
, mutta nykyinen käyttäjä, kone ja hakemisto näkyy edellisellä rivillä.
2.3.2 Levyt näkyvät hakemistoina
Git Bashissa Windowsin levyjä käsitellään hakemistoina. Esimerkiksi C:
-levy näkyy hakmeistona /c
ja E:
-levy näkyy hakemistona /e
.
2.3.3 Missä näkyy Bashin kotihakemisto Windows-ohjelmilla
Bashin kotihakemisto ~
on Windows-ohjelmista katsottuna
C:\Users\KAYTTAJATUNNUS
ja siis Git Bashin kannalta
/c/Users/KAYTTAJATUNNUS
Tämän näkee esimerkiksi seuraavasti
cd ~
pwd
2.3.4 Windowsin ohjelmat helpommin käyttöön
Git Bashin aluksi kannattaa tehdä asetustiedosto, jonka ansiosta voidaan Windows komentoja käynnistää kuten Windowsissa ilman tarkentimen antamista. Tämän saa kun copy/pasteaa seuraavan tekstin avattuun Git Bash-ikkunaan:
echo '
command_not_found_handle() {
cmd=$1
shift
case "$cmd" in
*.exe) echo "Command not found $cmd" >&2;;
*.com) "${cmd%.*}.exe" "$@";;
*.bat) "${cmd%.*}.com" "$@";;
*) "${cmd}.bat" "$@";;
esac
}
' > ~/.bashrc
2.3.5 Polkuun lisääminen
Jos teet esimerkiksi Ohjelmointi 1 .kursilla ehdotettuja .bat
-komentoja c:\bin
-hakemistoon ja haluat tämän hakupolkuun, onnistuu se komennolla:
export PATH="/c/bin:$PATH"
2.3.6 Tab-näppäin täydentämään
Jos annat komennon
bind "TAB":menu-complete
niin sen jälkeen TAB-näppäimen painaminen pyörittää vaihtoehtoisia "sanoja". Toimii silloin enemmän kuten Windowsin CMD tältä osin. Liitettävä näppäin voi olla muukin.
Asennusvinkit loppuivat tähän |
2.1.1 Git Bash ja C-levy sekä kotihakemisto
Avaa Git Bash. Toimii muuten kuten alempana Linux-ohjeissa, mutta:
cd /c - vaihtaa C-levyn juureen
cd ~ - vaihtaa kotihakemistoon
Jos sinulla on editori asennettuna, niin voit jatkaa lukuun 2.3 Linux ja macOS sekä GitBash. Muuten muistinvirkistykseksi editorin asennus:
2.2 WSL
WSL 2.0 (Windows Subsytem for Linux) on täydellinen Linux jos haluat sitä käyttää Windowsissa Git Bashin sijaan. Huomattavaa on että Windowsin levyt näkyvät niin, että esimerkiksi C-levyn juureen vaihdetaan komennolla:
cd /mnt/c
muuten voit noudattaa Linuxin ohjeita.
2.3 Linux ja macOS sekä GitBash
- muista myös Bash-kurssi
- avaaminen Windows: Avaa GitBash
- avaaminen Mac: Kirjoita
Launch Padissä
:terminal
(suomeksi tulee ikoni Pääte) - avaaminen Ubuntu: Klikkaa
Search you computer
-ikonia ja kirjoitaterminal
, tai painactrl + alt + t
Vinkki: Terminal kannattaa siirtää työpöydälle tai pikakäynnistykseen.
cd HAKEMISTONNIMI - vaihtaa oletus hakemiston (Change Directory)
mkdir HAKEMISTONNIMI - luo uuden hakemiston (MaKe DIRectory)
ls - listaa nykyhakemiston sisällön (LiSt)
pwd - tulostaa kansion polun missä olet
cp TIEDOSTONNIMI KOHDENIMI - kopioi tiedoston (CoPy)
rm TIEDOSTONNIMI - tuhoaa tiedoston
rmdir HAKEMISTONNIMI - poistaa hakemiston (pitää olla tyhjä, ReMove DIRectory)
touch TIEDOSTONNIMI - luo tyhjän tiedoston nimeltä TIEDOSTONNIMI
printenv - näytä ympäristömuuttujien arvot
echo $PATH - näytä path muuttujan arvo
export PATH=$PATH:/bin - polun /bin lisääminen polkuun
Esimerkkejä Jalava-koneessa (kirjoita $ -merkin jälkeinen osa ja paina enter)
[anlakane@jalava ~]$ mkdir ohj1
[anlakane@jalava ~/ohj1]$ cd ohj1
[anlakane@jalava ~/ohj1]$ ls -la
[anlakane@jalava ~/ohj1]$ echo Moi>moi.txt
[anlakane@jalava ~/ohj1]$ cat moi.txt
Moi
[anlakane@jalava ~/ohj1]$ ls -la
moi.txt
[anlakane@jalava ~/ohj1]$ cp moi.txt hello.txt
[anlakane@jalava ~/ohj1]$ rm moi.txt
[anlakane@jalava ~/ohj1]$ ls
[anlakane@jalava ~/ohj1]$ pwd
/autohome/home2/279/anlakane/ohj1
[anlakane@jalava ~/ohj1]$ cd ..
[anlakane@jalava ~]$ ls -R
Alla olevassa ikkunassa voit harjoitella komentorivikomentoja. Anna yksi kerrallaan em. esimerkin komentoja ja katso mitä tapahtuu.
3. Lisätietoa kiinnostuneille: Windows
3.1 Windows Power Shell
PowerShell on Microsoftin yritys korvata komentorivin jollakin modernimmalla. Tulos on sotkuinen ja hankala viritys. Suosittelen vain suurimmille Microsoft faneille.
Käynnistä komentorivi Start/Run
(tai paina + ) ja kirjoita PowerShell
, ja .
cd HAKEMISTONNIMI - vaihtaa oletus hakemiston (Change Directory)
mkdir HAKEMISTONNIMI - luo uuden hakemiston (MaKe DIRectory)
dir - listaa nykyhakemiston sisällön
ls - listaa nykyhakemiston sisällön
copy TIEDOSTONNIMI KOHDENIMI - kopioi tiedoston
del TIEDOSTONNIMI - tuhoaa tiedoston
rmdir HAKEMISTONNIMI - poistaa hakemiston (pitää olla tyhjä, ReMove DIRectory)
ls env: - näytä ympäristömuutujien arvot
echo $env:PATH - näytä path muuttujan arvo
$env:Path += "c:\bin" - polun c:\bin lisääminen polkuun
Esimerkkejä (kirjoita ensimmäisen >-merkin jälkeinen osa ja paina Enter lopuksi,
käytä ville-sanan tilalla omaa nimeäsi tai käyttäjätunnustasi):
PS U:\...> c: - vaihtaa c-levylle
PS C:\...> cd \ - siirtyy c-levyn juurihakemistoon
PS C:\> cd mytemp - vaihtaa omaan työhakemistoon
PS C:\mytemp> mkdir ohj1 - luo uuden alihakemiston c:\MyTemp\ohj1
PS C:\MyTemp> cd ohj1 - vaihdetaan hakemistoon c:\MyTemp\ohj1
PS C:\MyTemp\ohj1> mkdir ville - luo villen hakemiston
PS C:\MyTemp\ohj1> cd ville - siirrytään villen hakemistoon
PS C:\MyTemp\ohj1\ville> dir - näyttää c:\MyTemp\ohj1\ville-hakemiston sisällön, pitäisi olla tyhjä
PS C:\MyTemp\ohj1\ville> ls - näyttää c:\MyTemp\ohj1\ville-hakemiston sisällön, pitäisi olla tyhjä
PS C:\MyTemp\ohj1\ville> cd c:\ - siirtyy c-levyn juurihakemistoon
PS C:\> ls - näyttää C-levyn sisällön juuresta
PS C:\> cd \MyTemp\ohj1\ville - siirtyy suoraan villen hakemistoon
PS C:\MyTemp\ohj1\ville> echo Moi - tulostaa Moi
PS C:\MyTemp\ohj1\ville> echo Moi >moi.txt - tulostaa Moi tiedostoon moi.txt
PS C:\MyTemp\ohj1\ville> ls - näyttää ville-hakemiston sisällön, nyt siellä on moi.txt
PS C:\MyTemp\ohj1\ville> type moi.txt - tulostaa moi.txt tiedoston sisällön
PS C:\MyTemp\ohj1\ville> cat moi.txt - tulostaa moi.txt tiedoston sisällön
PS C:\MyTemp\ohj1\ville> copy moi.txt terve.txt - kopioi moi.txt:n tiedostoon terve.txt
PS C:\MyTemp\ohj1\ville> cp moi.txt terve.txt - kopioi moi.txt:n tiedostoon terve.txt
PS C:\MyTemp\ohj1\ville> del moi.txt - tuhoaa moi.txt -tiedoston.
PS C:\MyTemp\ohj1\ville> rm moi.txt - tuhoaa moi.txt -tiedoston.
PS C:\MyTemp\ohj1\ville> cd .. - siirrytään edeltävään (ylempään) hakemistoon
PS C:\MyTemp\ohj1\>dir -s - näyttää c:\MyTemp\ohj1 hakemsiton ja sen alihakemistojen (Subdirectories) sisällön
PS C:\MyTemp\ohj1\>ls -s - näyttää c:\MyTemp\ohj1 hakemsiton ja sen alihakemistojen (Subdirectories) sisällön
PS C:\MyTemp\ohj1\>ls -R - näyttää c:\MyTemp\ohj1 hakemsiton ja sen alihakemistojen (Recursive) sisällön
PS C:\MyTemp\ohj1\>ls -? - avustusta Get-ChildItem komennosta (jolle ls ja dir ovat aliaksia)
Varoitus: PowerShellissä ei toimi sama kuin CMD:issa (miksi?), eli
dir /s
HUOM! Jos PowerShellissä joutuu antamaan hakemiston, jonka nimessä on välilyöntejä tai ohjelman nimessä on välilyöntejä, pitää nimi sulkea lainausmerkkeihin. Mutta sitten se on merkkijono eikä komennon nimi. Tällöin "komennon" nimen eteen pitää lisätä &
-merkki (ks: PowerShell - Special Characters And Tokens).
Esimerkiksi:
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\Roslyn\csc.exe" .\HelloWorld.cs
3.2 Komentokehote (CMD)
CMD on perinne alkuperäisestä MS-DOS-käyttöjärjestelmästä. CMD-ohjelman käyttöäkin on syytä osata, koska se voi olla ainoa järjestelmässä oleva komentoriviohjelma. Nykyisin sen käytön opettelun voi jättää oman harjoittelun varaan.
Käynnistä komentorivi Start/Run
(tai paina + ) ja kirjoita cmd
, ja .
cd HAKEMISTONNIMI - vaihtaa oletus hakemiston (Change Directory)
mkdir HAKEMISTONNIMI - luo uuden hakemiston (MaKe DIRectory)
dir - listaa nykyhakemiston sisällön
copy TIEDOSTONNIMI KOHDENIMI - kopioi tiedoston
del TIEDOSTONNIMI - tuhoaa tiedoston
rmdir HAKEMISTONNIMI - poistaa hakemiston (pitää olla tyhjä, ReMove DIRectory)
set - näytä ympäristömuuttujien arvot
path - näytä path muuttujan arvo
set path=%path%;c:\bin - polun c:\bin lisääminen polkuun
Esimerkkejä (kirjoita ensimmäisen >-merkin jälkeinen osa ja paina Enter lopuksi,
käytä ville-sanan tilalla omaa nimeäsi tai käyttäjätunnustasi):
U:\...>c: - vaihtaa c-levylle
C:\...>cd \ - siirtyy c-levyn juurihakemistoon
C:\>cd mytemp - vaihtaa omaan työhakemistoon
C:\MyTemp>mkdir ohj1 - luo uuden alihakemiston c:\MyTemp\ohj1
C:\MyTemp>cd ohj1 - vaihdetaan hakemistoon c:\MyTemp\ohj1
C:\MyTemp\ohj1>mkdir ville - luo villen hakemiston
C:\MyTemp\ohj1>cd ville - siirrytään villen hakemistoon
C:\MyTemp\ohj1\ville>dir - näyttää c:\MyTemp\ohj1\ville-hakemiston sisällön, pitäisi olla tyhjä
C:\MyTemp\ohj1\ville>cd c:\ - siirtyy c-levyn juurihakemistoon
C:\>dir - näyttää C-levyn sisällön juuresta
C:\>cd \MyTemp\ohj1\ville - siirtyy suoraan villen hakemistoon
C:\MyTemp\ohj1\ville>echo Moi - tulostaa Moi
C:\MyTemp\ohj1\ville>echo Moi>moi.txt - tulostaa Moi tiedostoon moi.txt
C:\MyTemp\ohj1\ville>dir - näyttää ville-hakemiston sisällön, nyt siellä on moi.txt
C:\MyTemp\ohj1\ville>type moi.txt - tulostaa moi.txt tiedoston sisällön
C:\MyTemp\ohj1\ville>copy moi.txt terve.txt - kopioi moi.txt:n tiedostoon terve.txt
C:\MyTemp\ohj1\ville>del moi.txt - tuhoaa moi.txt -tiedoston.
C:\MyTemp\ohj1\ville>cd .. - siirrytään edeltävään (ylempään) hakemistoon
C:\MyTemp\ohj1\>dir /s - näyttää c:\MyTemp\ohj1 hakemsiton ja sen alihakemistojen (Subdirectories) sisällön
4. Komentorivivinkkejä
Seuraavat vinkit helpottavat/nopeuttavat komentorivin käyttämistä huomattavasti. Toimii sekä Windowsin että Linuxin/UNIX:n komentorivillä.
- voit käyttää sarkainta (Tab) tiedosto-/kansionimien täydentämiseen, kokeile:
- painamalla vain sarkainta (tarvittaessa toistuvasti)
- tai kirjoittamalla ensin haluamasi tiedoston/kansion nimen ja painamalla sitten sarkainta (tarvittaessa toistuvasti)
- F8 hakee edellisen samalla tavalla alkavan komennon
- ylös-alas-nuolia käyttämällä saa selattua viimeksi käytettyjä komentoja
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.