Beetaversioon: sisu on enamasti terviklik ja avalikuks katsetamiseks valmis, kuid vajab veel tehnilist, keelelist ja kasutatavuse kontrolli.

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.

Kiirülevaade

Eesmärk on saada mõisteline kaart: mis tuleb süsteemist, mis shellist ja mis konkreetsetest käsureatööriistadest.

Mõiste või käskMilleksMida tavaliselt näed
Linuxtuum, mitte kogu süsteemsüsteemiinfo uname väljundis
GNUpaljud tuttavad käsureatööriistadkäsud ja nende GNU-spetsiifilised lipud
shellloeb ja tõlgendab käsuridaviip, muutujad ja shelli sisekäsud
macOS, Windowssarnane pind, eri tööriistadsama käsk võib käituda erinevalt
uname -akontrolli süsteemi ja kernelitüks pikk süsteemirida
echo "$SHELL"näita vaikimisi shellitee nagu /bin/zsh
ps -p $$näita käimasolevat shellishelliprotsessi rida

Tüüpilised algaja vead

  • arvatakse, et Linux, Unix ja GNU tähendavad sama asja
  • aetakse segi terminal, shell ja operatsioonisüsteem
  • eeldatakse, et macOS-i või Windowsi käsk käitub täpselt nagu Linuxis

Võrdle oma keskkonda

Unix-laadses shellis võrdle uname -a süsteemiinfot, echo "$SHELL" seadistatud sisselogimisshelli ja ps -p $ tegelikult töötavat shelliprotsessi. $SHELL ei pruugi uue shelli käivitamisel muutuda.

Vajaduse järgi kasuta üht lisakontrolli:

KeskkondKäskTulemus
paigaldatud Bash või zshbash --version või zsh --versionvalitud shelli versioon
macOSsw_versoperatsioonisüsteemi versioon
Windowsi PowerShellwsl -l -vpaigaldatud WSL-jaotused ja WSL-i põlvkond

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öövoogudest 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

Mõni Linuxi käsk puudub macOS-is ka täiesti sama nime all. Näiteks:

  • Linuxis kasutatakse tihti ip a
  • macOS-is on tavalisem ifconfig
  • Linuxis kasutatakse tihti ss -ltn
  • macOS-is on tavalisem lsof -iTCP -sTCP:LISTEN -n -P või netstat -anv -p tcp | grep LISTEN

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

Kui tahad kasutada mõne Linuxi tööriistaga samanimelist käsku, tee seda vajaduse korral, mitte „igaks juhuks“. Näiteks võrgukäskude puhul võib hiljem abiks olla brew install iproute2mac, kuid alguses ei ole seda vaja.

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 soovid, et õpiku näited töötaksid Windowsis Linuxiga võimalikult sarnaselt, 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 hostsü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.

Lisalugemine

Selle teema usaldusväärsemad viited leiad lisast Lisa E: usaldusväärsed viited ja lisalugemine ning shelli enda kohta jaotisest Shellid ja põhikäsud.

Peatüki täisspikker

Baas ja süsteemipilt

Eesmärk

erista süsteemi, shelli ja käsureatööriistu; sama terminaliaken ei tähenda veel, et Linux, macOS ja Windows käituksid ühtemoodi

Kontrollkäsud

  • uname -asüsteemi ja kerneli rida
  • echo "$SHELL"seadistatud sisselogimisshell
  • ps -p $$praegu töötav shelliprotsess
  • command -v lskust käsk leitakse
  • sw_versmacOS-i versioon
  • wsl -l -vWSL-i jaotused

Olulised mõisted

  • Linuxkernel ehk tuum
  • GNUpaljud põhikäsud
  • shelltõlgendab käske
  • WSLLinux Windowsis
  • BSDmacOS-i tööriistapere
  • PowerShellWindowsi käsukeskkond