Unixi koorik — käsurealiides ja populaarsed shellid (bash, zsh)

Avasta Unixi koorik: selgitus käsurealiidesest, populaarsed shellid (bash, zsh), näited ja praktilised näpunäited käsuskriptide ja süsteemijuhtimise jaoks.

Unixi shell, mida nimetatakse ka terminaliks või konsooliks, on programm, mis võtab klaviatuurilt vastu Unixi käske ja täidab neid. Need käsud võivad olla näiteks installeeritud programmid:

  • ls failide loetlemiseks
  • cp failide kopeerimiseks
  • man, et saada rohkem teavet käskude kohta

Käsklused ei pea tulema klaviatuurilt. Üldiselt tulevad need stdinist. Unixi koorik on spetsiaalselt Unixi süsteemi juhtimiseks tehtud käsurea liides. On olemas erinevaid Unixi kestasid, millest kõige olulisemad on bash, sh, C Shell ja zsh. Nende süntaks on sarnane, näiteks järgmine dialoog oma protsessoritüübi väljaselgitamiseks oleks võimalik kõigi nende puhul:

$ uname -m x86_64 

Mis on shell ja milleks seda kasutatakse

Shell tõlgib inimese kirjutatud käsuridu operatsioonisüsteemi jaoks täidetavateks käskudeks. Shell pakub interaktiivset kasutajaliidest (promptsüsteem, käsuajalugu, täiendamine) ja programmeerimiskeskkonda (muutujad, tsüklid, tingimused), mida kasutatakse skriptide kirjutamiseks ja süsteemi automatiseerimiseks.

Populaarsed shellid ja nende eripärad

  • sh – algne Bourne shell; lihtne ja POSIX-ühilduv. Hea skriptide kirjutamiseks, kui soovitakse maksimaalset ühilduvust.
  • bash (Bourne Again SHell) – vaikimisi enamikus Linuxi distributsioonides. Pakub laia valikut mugavusi: käsuajalugu, täiendus (tab), alias’id, funktsioonid, mõningad programmatuurispetsiifilised laiendused.
  • zsh – kaasaegne ja väga kohandatav shell, tuntud intelligentse täitmise, parema automaatse lõpuni­tamise, teemade ja plugin-ökosüsteemi poolest (näiteks oh-my-zsh). Sobib interaktiivseks kasutamiseks ja arendajatele.
  • csh / tcsh – C-laadse süntaksiga shell, mida eelistavad mõned kasutajad; tcsh on csh täiustatud versioon.

Põhifunktsioonid, mida iga shell toetab

  • Sisetulek ja väljund: stdin, stdout, stderr; redirekteerimine (>, >>, 2>&1) ja torud (|).
  • Muutujad ja keskkond: lokaalsete ja eksporditud (export) muutujate kasutamine; erimuutujad nagu $HOME, $PATH, $SHELL.
  • Alias’id ja funktsioonid: lühendatud käsud (alias ll='ls -la') ja korduvkasutatavad funktsioonid skriptides.
  • Käsuajalugu ja redigeerimine: käsurea ajalugu (history), Ctrl‑R otsing ja rea redigeerimine (vi- või emacs-laadne sõltuvalt seadistusest).
  • Job control: taustaprotsessid ja juhtimine (&, fg, bg, jobs, Ctrl‑Z).
  • Globbing ja regulaaravaldised: failinimede sobitamine (*, ?, []) ja sageli tööriistadega (grep, sed, awk) kombinatsioon.

Skriptimine: kuidas alustada

Skript on tekstifail, mis sisaldab käske järjestuses. Tavaline näide:

#!/bin/sh # Näide: failide varundus kataloogist src="$HOME/projekt" dst="$HOME/varundus/$(date +%F)" mkdir -p "$dst" cp -a "$src"/* "$dst/" 

Tähtis: tee skript käivitatavaks (chmod +x skript.sh) või käivita see shellist (sh skript.sh või bash skript.sh). Esimese reas olev #! (shebang) määrab, milline tõlgendaja skripti käitab.

Algfailid ja kohandamine

Igal shellil on oma konfiguratsioonifailid, mida laaditakse sisselogimisel või uue interaktiivse seansi alustamisel. Mõned olulised näited:

  • bash: /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile (sisselogimisel) ja ~/.bashrc (interaktiivsetes mitte-sisselogimise seanssides). Palju distributsioone allub ka ~/.bashrc laadimisele läbi ~/.bash_profile.
  • zsh: /etc/zshenv, ~/.zshenv, /etc/zprofile, ~/.zprofile, /etc/zshrc, ~/.zshrc, /etc/zlogin, ~/.zlogin sõltuvalt seansi tüübist. Enamikes juhtudes kasutatakse ~/.zshrc-d interaktiivseks kohandamiseks.

Interaktiivseks mugavuseks saab lisada alias’e, kohandatud prompti (PS1), täiendusi ning pluginaid. Näiteks zsh-is on populaarne oh-my-zsh, mis lisab hulganisti teemasid ja pluginaid.

Vahetamise ja vaikimisi shelli muutmine

Vaata oma hetke shelli: echo $SHELL või chsh -l kõigi lubatud shellide loetlemiseks. Vaikimisi shelli muutmiseks kasuta chsh (võib vaja minna administraatoriõigusi või kinnitust):

chsh -s /bin/zsh 

Märkus: mõnedes süsteemides tuleb väljuda ja uuesti sisse logida, et muudatus jõustuks.

Erinevused bash ja zsh vahel (ülevaade)

  • Interaktiivne töö: zsh pakub keerukamat ja konfigureeritavat täitmist, paremat tab-completioni ja automaatühendusi; bash on siiski väga stabiilne ja laialt levinud.
  • Skriptimine: kui kirjutad skripte, mis peavad töötama kõikjal, kasuta POSIX-ühilduvat sh või käivita konkreetne tõlgendaja. Bashi laiendused (nt Brace expansion, arrays) ei pruugi töötada sh-is.
  • Kogukond ja plugin’id: zsh-il on rikkalik plugin-ökosüsteem; bashil samuti on palju kasutajapõhiseid konfiguratsioone, kuid zsh suudab lihtsamalt keerukamaid interaktiivseid funktsioone pakkuda.

Tavalised käsud ja näpunäited

  • base käsud: ls, cp, mv, rm, mkdir, ps, kill, grep, sed, awk.
  • Abi käsud: man (manuaal), --help või help (builtinide puhul).
  • Ajutine töö: torude abil kombineeri tööriistu (ps aux | grep ssh), suunake väljund faile (command > väljund.txt) ja kombineeri STDOUT ja STDERR (command >&1 või command > out.txt 2>&1).

Turvalisus ja head tavad

  • Tähelepanu privaatsetele andmetele PATH-is — ära lisa töökaustasid esimeseks, et vältida pahatahtlikke täitmisjuhtumeid.
  • Kasuta täis- või suhtelist teed skriptides, mis käivitavad olulisi tööriistu, et vältida vale programmi käivitamist.
  • Kontrolli sisendiohutust, kui skript töötleb kasutajaandmeid; väldi ebausaldusväärsete stringide otse käsureale edastamist ilma puhastamata.

Kokkuvõte

Unixi koorikud (shellid) on võimsad vahendid nii interaktiivseks kui automatiseeritud tööks. Bash on laialt kasutatav ja sobib hästi skriptimiseks, zsh pakub paremat interaktiivset kogemust ja rohkem kohandamisvõimalusi. Oluline on mõista baasfunktsioone (redirekteerimine, torud, muutujad, job control) ning valida õige shell vastavalt vajadusele — skriptide ühilduvuseks kasuta POSIX-ühtset sh-i; mugavaks argikeskkonnaks sobib zsh või hästi seadistatud bash.

Unixi shell, antud juhul Linuxi shell (kliki suurendamiseks)Zoom
Unixi shell, antud juhul Linuxi shell (kliki suurendamiseks)


AlegsaOnline.com - 2020 / 2025 - License CC3