Unix apvalkalas: kas tai yra, tipai (bash, sh, zsh) ir pavyzdžiai

Atraskite Unix apvalkalą: kas tai, bash/sh/zsh skirtumai, sintaksė ir praktiški pavyzdžiai — greitas gidas komandų eilutei ir skriptų rašymui.

Autorius: Leandro Alegsa

"Unix" apvalkalas, dar vadinamas terminalu arba konsole, yra programa, kuri priima "Unix" komandas iš klaviatūros (arba iš kitų šaltinių) ir jas vykdo. Tai komandinės eilutės sąsaja, specialiai sukurta Unix tipo sistemoms valdyti — paleisti programas, dirbti su failų sistema, valdyti procesus ir kt. Komandos gali būti sistemos įdiegtos programos arba apvalkalo vidinės komandos. Pavyzdžiai:

  • ls – failų sąrašui sudaryti (dažnai kartu su parinktimis, pvz., ls -l)
  • cp – kopijuoti failus
  • man – gauti daugiau informacijos apie komandas

Komandos nebūtinai turi būti įvedamos ranka: jos dažnai gaunamos per stdin (pvz., iš failo ar kito proceso). Apvalkalas gauna tekstinę komandą, interpretuoja ją, sukuria naujus procesus (jei reikia) ir perduoda rezultatus atgal per stdout/stderr.

Kas yra apvalkalo rolė ir pagrindinės savybės

  • Interpretavimas: apvalkalas analizuoja vartotojo įvestį, išskaido žodžius (tokenize), atlieka pakeitimus (globbing, variable expansion, command substitution) ir vykdo komandas.
  • Interaktyvumas: eilutės redagavimas, istorija, automatinis užbaigimas (tab), spalvoti prompt'ai.
  • Skriptavimas: apvalkalai leidžia rašyti scenarijus (.sh, .bash, .zsh ir kt.), kuriuos galima paleisti automatizuotoms užduotims.
  • Redirekcija ir vamzdeliai: standartinių srautų nukreipimas (>, >>, <) ir vamzdžio operatorius (|).
  • Job control: fono darbai (&), fg, bg, jobs.

Pagrindiniai "Unix" apvalkalai ir kuo skiriasi

  • sh (Bourne shell) – originalus Bourne apvalkalas. Paprastesnė, POSIX suderinama sintaksė, gera pasirinkti skriptams, kai reikia aukšto suderinamumo.
  • bash (Bourne Again Shell) – vienas populiariausių GNU Linux apvalkalų. Papildo sh galimybes: arrays, papildomi plėtiniai, patogus interaktyvus elgesys. Dauguma Linux distribucijų naudoja bash kaip numatytąjį apvalkalą.
  • zsh – galingas ir pritaikomas apvalkalas; pasižymi pažangiu užbaigimu, patogiomis temomis (pvz., oh-my-zsh), geresne įvesties istorija ir dalinimuisi konfigūracijomis.
  • csh / tcsh – C tipo sintaksė (skiriasi nuo Bourne šeimos). tcsh yra patobulinta csh versija su interaktyviais patobulinimais.

Trumpai: jei rašote portabilius skriptus, naudokite /bin/sh (POSIX). Jei norite patogumo interaktyviam darbui, rinkitės bash arba zsh. zsh šiuo metu populiari tarp vartotojų dėl papildomų funkcijų ir temų.

Pavyzdžiai ir dažniausiai naudojamos komandos

Keletas komandų, kurios veiks daugelyje apvalkalų:

  • ls -la — išsamus failų sąrašas, įskaitant paslėptus failus.
  • cp source dest — kopijuoti failą ar katalogą (su -r katalogams).
  • man ls — dokumentacija apie komandą.
  • ps aux | grep program — rasti paleistus procesus.
  • uname -a arba uname -m — informacijai apie sistemą; dialogo langas, skirtas sužinoti procesoriaus tipą, būtų įmanomas su visomis apvalkalų rūšimis (pvz., uname -m).
  • echo $SHELL arba ps -p $$ -o comm= — sužinoti, koks apvalkalas vykdomas.

Paprastas skripto pavyzdys

Štai minimalus Bash/SH skriptas, kuris parodo, kaip naudoti shebang, kintamuosius, sąlygas ir ciklą:

#!/bin/sh # Paprastas skriptas: suskaičiuoja .txt failus kataloge  DIR="${1:-.}"  # pirmas parametras arba dabartinė vieta count=0  for f in "$DIR"/*.txt; do   [ -e "$f" ] || continue   count=$((count + 1)) done  echo "Rasta $count .txt failų kataloge: $DIR"

Norint vykdyti: chmod +x skriptas.sh ir ./skriptas.sh /kelias/iki/katalogo.

Apvalkalo sintaksės ypatumai (trumpos nuorodos)

  • Kintamieji: priskyrimas VAR=value, reikšmė skaitoma $VAR arba ${VAR}.
  • Komandų įterpimas: $(cmd) arba atgaliniai kabliai `cmd`.
  • Globbing: šablonai *, ?, [a-z] failų vardams atitikti.
  • Redirekcija: command > file, command >> file, command 2>&1.
  • Pipes: cmd1 | cmd2 – perduoda stdout iš pirmojo kaip stdin antrajam.
  • Sąlygos ir ciklai: if [ condition ]; then ... fi, for x in ...; do ... done, while ir kt.

Konfigūracijos bylos ir pritaikymas

  • sh: system-wide profiliai dažnai /etc/profile; vartotojo konfigūracija gali būti ~/.profile.
  • bash: ~/.bashrc (interaktyviems seansams), ~/.bash_profile arba ~/.profile (login seansams).
  • zsh: ~/.zshrc, ~/.zprofile, taip pat populiarūs įrankiai kaip oh-my-zsh (temų ir papildinių rinkinys).

Naudingos komandos apvalkalo tipui nustatyti ir keisti

  • echo $SHELL — numatytasis prisijungimo apvalkalas (environment kintamasis).
  • ps -p $$ -o comm= — rodo tiksliai, koks apvalkalas dabar vykdomas (gerai, kai skriptai įjungia kitokį apvalkalą).
  • chsh -s /bin/zsh — pakeisti prisijungimo apvalkalą (reikia, kad nurodytas apvalkalas būtų įtrauktas į /etc/shells).

Geros praktikos patarimai

  • Rašykite skriptus naudojant /bin/sh arba aiškiai nurodykite shebang, jei naudojate konkrečias apvalkalo ypatybes (#!/bin/bash arba #!/usr/bin/env bash).
  • Visada tinkamai citatuokite kintamuosius: "$var", kad išvengtumėte problemų su tarpais ar simboliais.
  • Būkite atsargūs su komandų, kurios keičia failus ir teises (rm, chmod, chown); patikrinkite argumetus prieš paleidžiant ypač su administratoriaus teisėmis.
  • Naudokite set -u, set -e ir (arba) set -o pipefail skriptuose, kai norite griežtesnės klaidų kontrolės.

Apibendrinant: Unix apvalkalas yra pagrindinė priemonė darbui su Unix tipo sistemomis — tiek interaktyviam valdymui, tiek automatizavimui. Pasirinkimas tarp sh, bash, zsh ar kitų apvalkalų priklauso nuo to, ar prioritetas yra suderinamumas, patogumas ar papildomos funkcijos.

"Unix" apvalkalas, šiuo atveju - "Linux" apvalkalas (spustelėkite, kad padidintumėte)Zoom
"Unix" apvalkalas, šiuo atveju - "Linux" apvalkalas (spustelėkite, kad padidintumėte)



Ieškoti
AlegsaOnline.com - 2020 / 2025 - License CC3