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 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öä.

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 monen kurssin tarpeisiin. 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ä.

GitBashin asennusvinkkejä

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
# nppvideo

2.2 Windows, 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 Windows + R) ja kirjoita cmd, ja Enter.

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

2.3 WSL

WSL 2.0 on täydellinen Linux. 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.4 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 Windows + R) ja kirjoita PowerShell, ja Enter.

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
# bash

2.5 Linux ja macOS sekä GitBash

  • avaaminen Mac: Kirjoita Launch Padissä: terminal (suomeksi tulee ikoni Pääte)
  • avaaminen Ubuntu: Klikkaa Search you computer-ikonia ja kirjoita terminal, tai paina ctrl + 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
# shell

Alla olevassa ikkunassa voit harjoitella komentorivikomentoja. Anna yksi kerrallaan em. esimerkin komentoja ja katso mitä tapahtuu.

# consoletest1


3. 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.