Terminal ja shell
Õpieesmärgid
Selle peatüki lõpuks peaks õppija:
- mõistma terminali ja shelli erinevust
- mõistma, kuidas terminal ja shell on seotud operatsioonisüsteemi ning riistvaraga
- oskama kontrollida, millist shelli terminal kasutab
- mõistma
zshjabashpõhilist erinevust - mõistma shelli seadistusfaili ja
PATHmuutuja rolli - oskama liikuda kaustade vahel käsureal
- oskama vaadata, luua ja kustutada faile ning kaustu
- oskama kontrollida, millises kaustas käsk käivitatakse
1. Terminal vs shell
Terminal on programm, kuhu kirjutad käske ja kus näed käskude väljundit.
Shell on programm, mis käske tõlgendab ja käivitab. macOS-is on vaikimisi shell enamasti zsh, Linuxis tihti bash, Windowsis kasutatakse näiteks PowerShelli.
Terminal ja shell on omavahel seotud, kuid nad ei ole sama asi.
Terminal on nagu aken või kasutajaliides, mille kaudu inimene saab arvutiga tekstipõhiselt suhelda. Kui kirjutad terminali käsu, siis terminal edastab selle shellile. Terminal ise ei otsusta, mida käsk tähendab.
Shell on tõlkekiht inimese ja operatsioonisüsteemi vahel. Shell loeb käsureale kirjutatud teksti, saab aru, millist programmi või tegevust soovid käivitada, ning palub operatsioonisüsteemil see töö ära teha.
Operatsioonisüsteemi kõige alumist ja olulisemat osa nimetatakse kerneliks ehk operatsioonisüsteemi tuumaks. Kernel suhtleb otse riistvaraga: protsessori, mälu, kõvaketta, failisüsteemi ja teiste seadmetega. Tavakasutaja ei suhtle kerneliga otse. Selle asemel liigub käsk läbi terminali ja shelli operatsioonisüsteemini.
Lihtsustatud liikumine näeb välja nii:
kasutaja -> terminal -> shell -> operatsioonisüsteemi kernel -> riistvaraKui töö on tehtud, liigub tulemus tagasi:
riistvara -> kernel -> shell -> terminal -> kasutajaNäiteks kui kirjutad käsu ls, siis shell tõlgendab selle soovina näha kausta sisu. Operatsioonisüsteem küsib failisüsteemilt vajaliku info ning shell näitab tulemuse terminalis.
Näide:
pwdTerminal näitab käsku ja tulemust. Shell saab käsust aru ning küsib operatsioonisüsteemilt praeguse kausta asukoha.
2. Kuidas kontrollida, millist shelli kasutan?
Terminalis saab kasutatavat shelli kontrollida mitmel viisil.
Kõige lihtsam kontroll:
echo $SHELLNäide macOS-is:
/bin/zshSee tähendab, et kasutaja vaikimisi shell on zsh.
Praegu töötava shelli nime saab kontrollida ka käsuga:
echo $0Näiteks võib väljund olla:
zshvõi:
bashMärkus
echo $SHELL näitab tavaliselt kasutaja vaikimisi shelli. echo $0 näitab shelli, mis praeguses terminaliaknas tegelikult töötab.
3. Mis vahe on zsh ja bashil?
bash ja zsh on mõlemad Unix-laadsed shellid. Mõlemaga saab liikuda kaustades, käivitada programme, kirjutada skripte ja kasutada keskkonnamuutujaid.
bash ehk Bourne Again Shell on väga levinud Linuxi maailmas. Paljud õpetused, serverid ja skriptid kasutavad bashile sobivat süntaksit.
zsh ehk Z Shell on macOS-i uuemates versioonides vaikimisi shell. See pakub mugavamaid võimalusi interaktiivseks kasutamiseks, näiteks paremat automaatset täiendamist, teemade ja plugin'ate tuge ning paindlikumat seadistamist.
Õppija jaoks on alguses kõige olulisem teada:
- tavalised käsud nagu
cd,ls,pwd,mkdirjarmtöötavad mõlemas - shelli seadistusfailid on erinevad
zshkasutab enamasti faili~/.zshrcbashkasutab tihti faili~/.bashrcvõi~/.bash_profile- internetist leitud käsud võivad eeldada kindlat shelli
Kui õpid terminali aluseid, ei pea sa kohe kõiki erinevusi teadma. Oluline on osata kontrollida, millist shelli kasutad, ja teada, millist seadistusfaili muuta.
4. Shelli config ja PATH
Shelli käitumist saab seadistada config-failide kaudu. Need on tavalised tekstifailid, mida shell loeb käivitumisel.
Levinud seadistusfailid:
~/.zshrc- zsh kasutajaseadistus~/.bashrc- bash kasutajaseadistus~/.bash_profile- bash sisselogimisshelli seadistus macOS-is
Config-faili kasutatakse näiteks selleks, et:
- lisada aliaseid ehk käskude lühendeid
- määrata keskkonnamuutujaid
- muuta terminali prompti välimust
- laadida tööriistu nagu
nvm - täiendada
PATHmuutujat
Näide aliasest:
alias ll="ls -la"Kui see rida on lisatud ~/.zshrc faili, saab terminalis kirjutada:
llja shell käivitab tegelikult käsu:
ls -laPATH on keskkonnamuutuja, mis ütleb shellile, millistest kaustadest programme otsida. Kui kirjutad terminali käsu:
nodesiis shell ei otsi programmi kogu arvutist. Ta otsib ainult nendest kaustadest, mis on kirjas PATH muutujas.
PATH vaatamine:
echo $PATHKäsu asukoha kontroll:
which node
which npmKui käsk annab tulemuseks faili asukoha, leidis shell programmi üles. Kui tulemust ei tule või kuvatakse viga, ei pruugi programm olla paigaldatud või selle asukoht puudub PATH muutujast.
Näide PATH täiendamisest:
export PATH="$HOME/bin:$PATH"See lisab kasutaja kodukaustas oleva bin kausta olemasoleva PATH ette. Sellist võtet kasutatakse siis, kui soovid, et shell leiaks mõnes kindlas kaustas olevad käsud üles.
Oluline
PATH muutmisel ära kustuta vana väärtust. Kui kirjutad PATH valesti üle, võivad tavalised käsud ajutiselt katki minna. Seetõttu lisatakse lõppu tavaliselt :$PATH.
Pärast config-faili muutmist tuleb see uuesti laadida.
zsh puhul:
source ~/.zshrcbash puhul:
source ~/.bashrcTeine võimalus on terminal sulgeda ja uuesti avada.
5. Kus ma praegu olen?
Terminalis on väga oluline teada, millises kaustas käsk käivitatakse. Selleks kasutatakse käsku:
pwdpwd tähendab print working directory ehk "näita praegust töökausta".
Näide väljundist:
/Users/student/projects/my-appSee tähendab, et järgmised käsud käivitatakse kaustas my-app.
6. Kaustade sisu vaatamine
Kausta sisu näitamiseks kasutatakse käsku:
lsRohkemate detailidega vaade:
ls -laSelles käsus:
-lnäitab detailset nimekirja-anäitab ka peidetud faile, näiteks.gitignorevõi.zshrc
Peidetud failid
Unix-laadsetes süsteemides on punktiga algavad failid peidetud. Näiteks .zshrc, .env ja .gitignore.
7. Kaustade vahel liikumine
Kausta vahetamiseks kasutatakse käsku cd.
cd DocumentsÜks kaust tagasi:
cd ..Kodukausta:
cd ~Projektikausta näide:
cd ~/projects/my-appKui kausta nimes on tühikud, pane tee jutumärkidesse:
cd "My Projects"8. Failide ja kaustade loomine
Uue kausta loomine:
mkdir my-projectUue tühja faili loomine:
touch README.mdFaili sisu vaatamine:
less README.mdless vaatest väljumiseks vajuta q.
9. Failide ja kaustade kustutamine
Faili kustutamine:
rm README.mdTühja kausta kustutamine:
rmdir old-folderKausta koos sisuga kustutamine:
rm -r old-folderEttevaatust
rm kustutab faili ilma prügikasti liigutamata. Enne kustutamist kontrolli alati, millises kaustas oled ja mida kustutad.
10. Käsu katkestamine
Kui terminalis töötab käsk, mis ei lõpe või mille soovid katkestada, kasuta:
Ctrl + CSeda kasutatakse näiteks arendusserveri peatamiseks.