Zsh vs Bash skriptimine. Mis vahe on?

Zsh vs Bash skriptimine. Mis vahe on?
Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Mis puutub kestaskriptimisse Unixi-sarnastes operatsioonisüsteemides, siis domineerivad kaks kesta: Bash (Bourne Again Shell) ja Zsh (Z Shell). Kui olete programmeerija või süsteemiadministraator, mõjutab nende kahe vahel valik oluliselt teie tõhusust ja tootlikkust.





MUO päeva video SISUGA JÄTKAMISEKS KERIMISE

Nende kahe kesta erinevuste ja sarnasuste mõistmine aitab teil käsurea töövoogu optimeerida. Iga kesta nüansside tundmine aitab teil teha teadlikke otsuseid.





Mis on Bash ja Zsh?

Bash on populaarne nii Linuxi kui ka macOS-i süsteemides. See on võimas tööriist, mida saate kasutada operatsioonisüsteemiga suhtlemiseks ja käskude käivitamiseks. Sa saad ka kasutage shelliskriptimiseks Bashi , mis automatiseerib ülesandeid, kirjutades skripte, mis sisaldavad rohkem kui ühte käsku.





Zsh (Z kest) on Bashi laiendatud versioon, millel on palju rohkem funktsioone. See on macOS-i vaikekest. Samuti on see muutumas üha populaarsemaks Linuxi süsteemides.

Kuidas Bashilt Zsh-ile lülituda

Kui kasutate Linuxi süsteemi ja soovite Zsh-ile üle minna, alustage kasutades selle installimiseks oma paketihaldurit . Näiteks Debiani või Ubuntu puhul kasutage järgmist käsku:



 sudo apt install zsh

Pärast selle installimist oma süsteemi minge sellele, käivitades järgmise käsu:

 chsh -s $(which zsh)

Kui kasutate macOS-i, on Zsh juba installitud. Sellele lülitumiseks käivitage järgmine käsk:





 chsh -s /bin/zsh

Bashile naasmiseks asendage Zsh ülaltoodud käskudes Bashiga.

Kasutatava kesta kontrollimiseks käivitage järgmine käsk:





 echo $SHELL

See aitab teil kinnitada, et kasutate kesta, mida kavatsesite.

sõna kuidas joonest lahti saada

Erinevused Zshi ja Bashi vahel

Zsh ja Bash vahel on mitmeid erinevusi. Nende erinevuste arvessevõtmine aitab teil otsustada, milline kest teile kõige paremini sobib.

1. Kiire kohandamine

Zsh pakub lihtsamat viisi viipade kohandamiseks % -põhised põgenemisjärjestused. See võimaldab dünaamilisi viipasid värvi ja teabega. Shelli viipa kohandamiseks määrake PS1 (Esmane viip).

 PS1="%F{green}%n@%m %F{blue}%~ %f$ " 

Ülaltoodud kohandatud viip kuvab kasutajanime, hostinime ja praeguse kataloogi erinevates värvides:

  Zsh-viiba kohandamine terminalis

Seal on palju muud viisid Zsh-viipa kohandamiseks , mis võimaldab teil määrata administraatori indikaatori, lisada kuupäeva ja kellaaega ning salvestada uue viipa.

Bash kasutab kiireks kohandamiseks veidi teistsugust lähenemist. See kasutab paokoode, et määrata viipa värvi- ja vormingumuudatused. Ülaltoodud Zsh-ga sama kohandamise saavutamiseks võite kasutada järgmist kohandatud viipa.

 PS1="\[3[32m\]\u@\h \[3[34m\]\w \[3[0m\]$ " 

Kasutades \[3[0 m\] on ülioluline, kuna see tagab, et värvimuutused ei mõjuta viipale järgnevat teksti.

2. Assotsiatiivsete massiivide tugi

Zsh toetab natiivselt assotsiatiivseid massiive. Need massiivid pakuvad mugavat viisi andmete seostamiseks, mis muudab teabe korraldamise ja hankimise lihtsaks. Kasuta kuulutama -A käsk assotsiatiivse massiivi selgesõnaliseks deklareerimiseks:

 # Declare an associative array in Zsh  
declare -A my_assoc_array

Seejärel saate assotsiatiivsele massiivile väärtused määrata:

 my_assoc_array=(key1 value1 key2 value2) 

Ja lõpuks pääsete väärtustele juurde nende võtmete abil:

 echo $my_assoc_array[key1] # Outputs: value1

Bash on kaasanud assotsiatiivsete massiivide natiivse toe alates versioonist 4.0. Väärtused deklareerite ja määrate samamoodi nagu Zsh-is. Kuid massiivi väärtustele juurdepääsu saamiseks peate võtme mähima lokkis sulgudesse:

 echo "${my_assoc_array[key1]}" 

Peamine erinevus seisneb selles, et Zsh-i tugi assotsiatiivsetele massiividele on funktsioonirikkam ja arenenum kui Bash. Zsh võimaldab assotsiatiivsetel massiividel olla erinevat tüüpi andmevõtmeid, mitte ainult stringe. Bash toetab ainult stringi klahve.

Bashi varasemates versioonides peate leidma lahenduse või omama väliseid tööriistu assotsiatiivsete massiivide kasutamiseks.

3. Laiendatud Globbing Patterns

Laiendatud gloobusmustrid pakuvad võimsat ja paindlikku viisi failide ja kataloogide valimiseks ja nendega manipuleerimiseks erinevate kriteeriumide alusel. Need on kasulikud, kui töötate keerukate failistruktuuridega või kui vajate täpset kontrolli failivalikute üle.

Zsh-skriptis saate need mustrid lubada, kasutades setopt käsk. Näiteks sobitada kõik .txt failid praeguses kataloogis:

 setopt extended_glob 
txt_files=(*.txt)

Kõigi failide sobitamiseks, välja arvatud need, millel on .log laiend, toimige järgmiselt.

 setopt extended_glob 
non_log_files=^(*.log)

Bashis peate need lubama, kasutades kauplused käsuga extglob valik. Näiteks sobitada kõik .txt failid praeguses kataloogis:

 shopt -s extglob 
txt_files=(*.txt)

Kõigi failide sobitamiseks, välja arvatud need, millel on .log laiendus:

 shopt -s extglob 
non_log_files=!(*.log)

Peamine erinevus Zsh-i ja Bashi vahel, kui tegemist on maakera mustritega, on nende lubamiseks kasutatav käsk. Pange tähele, et mõned operaatorid on kahe kesta vahel erinevad.

4. Täiustatud parameetrite laiendamine

Zsh toetab parameetrite kaudset laiendamist. See võimaldab teil laiendada muutuja väärtust, mille nimi on salvestatud mõnes teises muutujas. Selle saavutamiseks peate muutuja nime ette lisama hüüumärgi ! .

 name="foo" 
result="${!name}"
echo "$result"

Teisest küljest ei võimalda Bash kaudset laienemist. Selle lahenduseks on kasutada eval sisseehitatud käsk või ${!was} kaudsete muutujate viidete süntaks.

 name="world" 
var="name"
echo ${!var} # This will output: world

Sarnasused Bashi ja Zshi vahel

Kuigi Bashi ja Zshi vahel on erinevusi, on neil ka mõningaid sarnasusi.

1. Käsurea süntaks

Bash ja Zsh jagavad sarnast käsurea süntaksit. See on suurepärane, sest see tähendab, et enamik teie kirjutatud käske ja skripte töötavad ilma muudatusteta mõlemas kestas. Zsh on ehitatud Bashi peale, seega sisaldab see kõiki samu põhikäske ja -funktsioone.

Siiski on süntaksis väga väikesed erinevused, mida peate tuvastama ja kohandama.

minu ketas töötab 100

2. Käskude asendamise järjepidevus

Käskude asendamine on ühe käsu väljundi teise sisseehitamise protsess. See on mõlema kesta vahel ühtlane.

 result=$(ls) 

Nii Bashis kui ka Zshis saate kasutada $(käsk) süntaks käsu väljundi asendamiseks muutujaga. See võimaldab skriptide hõlpsat teisaldamist kahe kesta vahel.

3. Skripti silumise valik

Kasutavad nii Bash kui ka Zsh -x lipp skripti silumiseks. Kui käivitate selle lipuga skripti, kuvatakse kõik käsud enne selle käivitamist. See aitab teil skriptides probleeme tuvastada.

 # Debugging a script in both Bash and Zsh 
#!/bin/bash -x

echo "Debugging Bash script"

Selles Bashi skriptis on -x lipp võimaldab silumist. Sarnast lähenemist saate kasutada ka Zsh-is; lihtsalt asendada bash koos zsh .

Kaalutlused Zsh ja Bashi vahel valimisel

  • Ühilduvus ja kaasaskantavus : Bash on paljude Unixi-põhiste süsteemide vaikeshell. See muudab selle turvalisemaks valikuks platvormideüleseks skriptimiseks. Kui vajate, et teie skriptid töötaksid paljudes süsteemides ilma muudatusteta, on Bash parem valik.
  • Skripti keerukus ja lisafunktsioonid : Zsh pakub täiustatud funktsioone, nagu assotsiatiivsed massiivid, laiendatud gloobimismustrid ja täiustatud parameetrite laiendamine. See lihtsustab keerulisi skriptimisülesandeid. Kui teie skriptid nõuavad täpsemat stringiga manipuleerimist või andmestruktuure, on Zsh parem valik.
  • Kogukonna ja pistikprogrammide ökosüsteem : Nii Bashil kui ka Zsh-l on aktiivsed kogukonnad, kuid Zsh-il on tugevam kogukond ning ulatuslik pistikprogrammide ja teemade ökosüsteem. Kui hindate kohandamist, võib Zshi elav kogukond ja pistikprogrammide tugi olla oluliseks eeliseks.
  • Õppimise lihtsus : kui te pole shelliskriptimises uus, on Bash juurdepääsetavam lähtepunkt. Sellel on algajatele saadaval ulatuslik dokumentatsioon ja ressursid. See muudab shelliskriptimise põhitõdede õppimise lihtsamaks.

Ülesannete automatiseerimine shelliskriptide abil

Väga oluline on teadmine, kuidas shelliskripte kasutades ülesandeid automatiseerida. Saate automatiseerida korduvaid ülesandeid ja säästa palju aega.

Neid skripte saate kasutada ka kasutajakontode haldamiseks, süsteemiressursside jälgimiseks, andmete varundamiseks ja rutiinseks hoolduseks. Kui need on hoolikalt kirjutatud, võivad need vähendada ka inimliku vea võimalust.