Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Linux, Unix, GNU, macOS, Windows ja shellid, mis kuulub osasse Osa II: Süsteemi pilt ja haldus.

Linux, Unix, GNU, macOS, Windows ja shellid

Linuxi kasutamisel kohtab kiiresti mitut sarnast sõna: Linux, Unix, GNU, macOS, Windows, shell, sh, bash, zsh, PowerShell, WSL. Need ei tähenda päris sama asja.

Lühidalt

  • Unix oli ajalooline operatsioonisüsteemide perekond ja mõtteviis.
  • Linux on kernel ehk tuum, mille ümber ehitatakse süsteem.
  • GNU on tööriistade kogum, mis annab paljud tuttavad käsud ja utiliidid.
  • macOS on Unix-laadne süsteem, kuid kasutab mitmes kohas BSD- ja Apple'i tööriistu.
  • Windows ei ole Unix-laadne, kuid selle saab WSL-i abil väga Linuxi moodi tööle panna.
  • Shell on käsutõlk, mille kaudu kasutaja käske sisestab.

Loogika

Selle peatüki mõte on anda õiged mõisted enne, kui käsud lähevad detailseks. Nii on hiljem lihtsam aru saada, milline käitumine tuleb shellist, milline Linuxi süsteemist, milline GNU tööriistadest ja millised erinevused tulevad macOS-ist või Windowsist.

Et samad töövood toimiksid eri masinates võimalikult sarnaselt, on kõige olulisem eristada kolme kihti:

  • operatsioonisüsteem
  • käsureatööriistad
  • shell

Kui need kihid on sarnased, siis on ka õpiku näited sarnasemad.

Kiirspikker

  • uname -a näitab süsteemi infot
  • echo $SHELL näitab sinu vaikimisi shelli
  • ps -p $$ näitab käimasolevat shelliprotsessi
  • bash --version või zsh --version näitab shelli versiooni
  • command -v ls näitab, kust käsk leitakse
  • sw_vers näitab macOS-i versiooni
  • wsl -l -v näitab Windowsi WSL-jaotusi ja nende versiooni

Kasuta siit ainult neid käske, mis sobivad sinu masinaga:

  • sw_vers on macOS-i jaoks
  • wsl -l -v on Windowsi ja WSL-i jaoks
  • uname -a, echo "$SHELL" ja ps -p $$ on Unix-laadsetes shellides kõige üldisemad näited

Käivita need käsud


uname -a
echo "$SHELL"
ps -p $$

bash --version
zsh --version

sw_vers
wsl -l -v

Miks see oluline on

Kui loed dokumentatsiooni või juhendeid, siis:

  • mõni käitumine tuleb kernelist
  • mõni käitumine tuleb shellist
  • mõni käsk on GNU variant ja võib teistes Unix-laadsetes süsteemides erineda
  • mõni erinevus tuleb sellest, kas töötad päris Linuxis, macOS-is või Windowsis

Levinud shellid

  • sh on ajalooline ja üldine shelliliides
  • bash on väga levinud GNU shell
  • zsh on paindlik interaktiivne shell, mida kasutatakse palju ka macOS-is
  • PowerShell on Windowsi käsukeskkond ja skriptikeel

Linux, Unix ja GNU erinevused

Praktikas öeldakse sageli "Linux", kuigi tegelik süsteem koosneb mitmest kihist:

  • Linux annab kerneli
  • GNU annab suure hulga käsureatööriistu
  • distributsioon seob need tervikuks

Samas macOS on Unix-laadne, kuid paljud käsud ei ole seal GNU variandid. Näiteks sed, grep, find ja tar võivad käituda veidi teisiti kui Linuxis. Windows ei ole Unix-laadne, kuid WSL annab päris Linuxi kasutajaruumi, nii et enamik selle õpiku näiteid töötab seal otse.

macOS: miks see on sarnane

macOS tundub käsureal Linuxi moodi, sest:

  • tal on Unix-laadne kasutajakeskkond
  • seal on olemas sh, bash, zsh, ssh, grep, sed, awk
  • failisüsteem, õigused ja torude loogika on tuttavad
  • väga suur osa shelli- ja SSH-töövoost on sama

See on põhjus, miks suur osa siinsetest käsureatöövoogudest töötab macOS-is väikeste kohandustega.

macOS: mis on teisiti

macOS ei ole tavaliselt "GNU/Linux". Praktikas tähendab see:

  • paketihaldur ei ole apt või dnf; kõige levinum lisapakettide tööriist on Homebrew ehk brew
  • mitmed käsud on BSD variandid, mitte GNU variandid
  • mõni lipp või vaikekäitumine erineb
  • teenuste haldus ei käi systemd kaudu

Kõige sagedasem praktiline erinevus on see, et Linuxi juhendis toodud lipp ei pruugi macOS-is sama moodi töötada.

Kuidas saada macOS võimalikult sarnaseks Linuxiga

Algaja jaoks ei ole tavaliselt vaja macOS-i vägisi Linuxi moodi ümber ehitada.

Enamasti piisab sellest:

  1. kasuta olemasolevat zsh-i või bash-i
  2. õpi selgeks põhilised käsud ja nende loogika
  3. paigalda Homebrew ainult siis, kui sul on päriselt vaja lisatarkvara

Mida macOS-is ei tasu vägisi samaks teha

Kõike ei ole mõtet Linuxi moodi suruda.

  • Homebrew ei ole macOS-is vaikimisi sees; see on eraldi paigaldatav lisatööriist
  • brew on macOS-is loomulik paketihaldur siis, kui sul on vaja lisatarkvara
  • Finder ja rakenduste käivitamine jäävad Apple'i loogika järgi
  • teenuste haldus ja süsteemikonfiguratsioon ei ole üks ühele Linuxiga

Hea eesmärk ei ole "teha macOS-ist Linux", vaid teha shelli- ja arendustöö piisavalt sarnaseks.

Kui sul tekib hiljem mõni konkreetne ühilduvusprobleem, siis lahenda see eraldi. Alguses ei ole vaja paigaldada GNU variante lihtsalt harjumuse pärast.

Windows: milline tee valida

Windowsis on kolm peamist teed:

  • WSL2: parim valik, kui tahad selle õpiku käske kasutada võimalikult päris Linuxi moodi
  • PowerShell: parim valik Windowsi enda halduseks
  • Git Bash: kerge ja mugav, aga mitte täielik Linux

Kui eesmärk on "see õpik töötaks samal moel", siis soovitus on väga selge: kasuta WSL2.

WSL tähendab Windows Subsystem for Linux. See on Windowsi võimalus käivitada päris Linuxi kasutajaruumi omaette keskkonnas. Praktikas tähendab see, et saad Windowsi sees avada Ubuntu või muu Linuxi keskkonna ja kasutada seal tavapäraseid Linuxi käske, pakette ja shelli.

WSL2 on uuem ja tavalisem variant. Õpiku mõttes on ta hea sellepärast, et käsud käituvad seal palju rohkem päris Linuxi moodi kui PowerShellis või vanas cmd.exe-s.

Kuidas saada Windows võimalikult sarnaseks Linuxiga

Kõige mõistlikum töövoog on:

  1. paigalda Windows Terminal
  2. paigalda WSL2
  3. vali näiteks Ubuntu
  4. tee käsureatöö WSL-i sees, mitte tavalises cmd.exe-s

Alustuseks piisab sageli sellest:


wsl --install

Pärast paigaldust kontrolli:


wsl -l -v

Ja siis mine Linuxi sisse:


wsl

Seal sees hakkavad juba tööle tavapärased Linuxi käsud:


uname -a
echo "$SHELL"
sudo apt update

Kuidas Windowsis shelliga mõelda

Kui töötad WSL-is, siis loogika on:

  • Windows on host-süsteem
  • WSL annab Linuxi kasutajaruumi
  • shell, paketid ja käsud töötavad Linuxi loogika järgi

Kui töötad PowerShellis, siis loogika on teine:

  • toru ei kanna ainult teksti, vaid objekte
  • käsunimed ja lühendid on teised
  • paljud selle õpiku näited ei ole üks ühele kopeeritavad

See tähendab, et "sama moodi toimima" saad Windowsis kõige paremini WSL-i abil, mitte PowerShelli Linuxiks painutades.

Praktilised soovitused Windowsi jaoks

  • hoia Linuxi projektid võimalusel WSL-i kodukataloogis nagu ~/projekt, mitte alati /mnt/c/...
  • kasuta Windows Terminali, mitte vana konsooli
  • kasuta VS Code Remote WSL töövoogu, kui arendad Windowsist Linuxi tööriistadega
  • kasuta PowerShelli siis, kui haldad Windowsi ennast

Mis jääb Windowsis ikkagi teistsuguseks

  • failiteed ja kettatähed on teistsugused
  • CRLF ja LF võivad tekitada segadust
  • .exe, .bat ja Windowsi õiguste loogika ei ole sama mis Unixis
  • mõni tööriist töötab WSL-is paremini kui otse Windowsi failisüsteemis

Minitest

  1. Uuri välja, millist shelli sa kasutad.
  2. Võrdle käske echo $SHELL ja ps -p $$.
  3. Kontrolli, kas sinu süsteemis on olemas bash, zsh ja sh.
  4. Kui oled macOS-is, kontrolli käsuga sw_vers, millist süsteemi kasutad.
  5. Kui oled Windowsis, kontrolli käsuga wsl -l -v, kas WSL on olemas.
  6. Kirjelda ühe lausega, miks WSL2 sobib Linuxi-laadse käsureatöö jaoks paremini kui ainult PowerShell.