Zsh vs Bash skriptēšana. Kāda atšķirība?

Zsh vs Bash skriptēšana. Kāda atšķirība?
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Runājot par čaulas skriptēšanu Unix līdzīgās operētājsistēmās, dominē divi apvalki: Bash (Bourne Again Shell) un Zsh (Z Shell). Ja esat programmētājs vai sistēmas administrators, izvēle starp šiem diviem būtiski ietekmē jūsu efektivitāti un produktivitāti.





MUO dienas video RITINĀT, LAI TURPINĀTU AR SATURU

Izpratne par atšķirībām un līdzībām starp šiem diviem apvalkiem palīdzēs optimizēt komandrindas darbplūsmu. Zinot katras čaulas nianses, varēsiet pieņemt pārdomātus lēmumus.





Kas ir Bash un Zsh?

Bash ir populārs gan Linux, gan macOS sistēmās. Tas ir spēcīgs rīks, ko varat izmantot, lai mijiedarbotos ar operētājsistēmu un palaistu komandas. Jūs varat arī izmantojiet Bash čaulas skriptēšanai , kas automatizē uzdevumus, rakstot skriptus, kas satur vairāk nekā vienu komandu.





Zsh (Z apvalks) ir paplašināta Bash versija, kurai ir daudz vairāk funkciju. Tas ir MacOS noklusējuma apvalks. Tas kļūst arvien populārāks arī Linux sistēmās.

Kā pārslēgties no Bash uz Zsh

Ja izmantojat Linux sistēmu un vēlaties pārslēgties uz Zsh, sāciet ar izmantojot pakotņu pārvaldnieku, lai to instalētu . Piemēram, Debian vai Ubuntu izmantojiet šādu komandu:



 sudo apt install zsh

Pēc instalēšanas savā sistēmā pārslēdzieties uz to, izpildot šādu komandu:

 chsh -s $(which zsh)

Ja izmantojat macOS, Zsh jau ir instalēts. Lai pārslēgtos uz to, izpildiet šādu komandu:





tīkla ikona saka, ka nav piekļuves internetam, bet es esmu savienots ar Windows 10
 chsh -s /bin/zsh

Lai pārslēgtos atpakaļ uz Bash, iepriekš minētajās komandās aizstājiet Zsh ar Bash.

Lai pārbaudītu, kuru apvalku izmantojat, palaidiet šo komandu:





 echo $SHELL

Tas palīdzēs jums apstiprināt, ka izmantojat paredzēto čaulu.

Atšķirības starp Zsh un Bash

Starp Zsh un Bash ir vairākas atšķirības. Ņemot vērā šīs atšķirības, varēsiet izlemt, kurš apvalks jums ir vispiemērotākais.

1. Ātrā pielāgošana

Zsh piedāvā vienkāršāku veidu, kā pielāgot uzvednes, izmantojot % balstītas evakuācijas secības. Tas nodrošina dinamiskas uzvednes ar krāsu un informāciju. Lai pielāgotu čaulas uzvedni, definējiet PS1 (Primārā uzvedne).

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

Iepriekš minētajā pielāgotajā uzvednē tiek parādīts lietotājvārds, resursdatora nosaukums un pašreizējais direktorijs dažādās krāsās:

  Zsh uzvednes pielāgošana terminālī

Tur ir daudz citi veidi, kā pielāgot Zsh uzvedni , ļaujot iestatīt administratora indikatoru, iekļaut datumu un laiku un saglabāt jauno uzvedni.

Bash izmanto nedaudz atšķirīgu pieeju, kad runa ir par tūlītēju pielāgošanu. Tas izmanto atsoļa kodus, lai norādītu krāsas un formatējuma izmaiņas uzvednē. Lai panāktu tādu pašu pielāgošanu kā iepriekš norādītajā Zsh, varat izmantot šo pielāgoto uzvedni.

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

Izmantojot \[3[0m\] ir ļoti svarīgi, jo tas nodrošina, ka krāsu izmaiņas neietekmē tekstu, kas seko uzvednei.

2. Asociatīvo masīvu atbalsts

Zsh sākotnēji atbalsta asociatīvos masīvus. Šie masīvi nodrošina ērtu veidu, kā saistīt datus, kas atvieglo informācijas kārtošanu un izgūšanu. Izmantot paziņot -A komanda, lai skaidri deklarētu asociatīvo masīvu:

 # Declare an associative array in Zsh  
declare -A my_assoc_array

Pēc tam asociatīvajam masīvam varat piešķirt vērtības:

Windows nevarēja pabeigt formātu
 my_assoc_array=(key1 value1 key2 value2) 

Un, visbeidzot, piekļūstiet vērtībām, izmantojot to atslēgas:

 echo $my_assoc_array[key1] # Outputs: value1

Bash ir iekļāvis vietējo atbalstu asociatīvajiem masīviem kopš versijas 4.0. Jūs deklarējat un piešķirat vērtības tāpat kā Zsh. Bet, kad runa ir par piekļuvi masīva vērtībām, atslēga jāiekļauj cirtainajās iekavās:

 echo "${my_assoc_array[key1]}" 

Galvenā atšķirība ir tā, ka Zsh atbalsts asociatīvajiem masīviem ir bagātāks un uzlabots nekā Bash. Zsh ļauj asociatīvajiem masīviem būt dažādu datu tipu atslēgas, nevis tikai virknes. Bash atbalsta tikai virkņu taustiņus.

Iepriekšējās Bash versijās jums ir jāizdomā risinājums vai ir jābūt ārējiem rīkiem, lai izmantotu asociatīvos masīvus.

3. Paplašināti Globbing Patterns

Paplašinātie globbing raksti nodrošina jaudīgu un elastīgu veidu, kā atlasīt un apstrādāt failus un direktorijus, pamatojoties uz dažādiem kritērijiem. Tie ir noderīgi, ja strādājat ar sarežģītām failu struktūrām vai ja jums nepieciešama precīza failu atlases kontrole.

Zsh skriptā varat iespējot šos modeļus, izmantojot setopt komandu. Piemēram, lai atbilstu visiem .txt faili pašreizējā direktorijā:

 setopt extended_glob 
txt_files=(*.txt)

Lai atbilstu visiem failiem, izņemot tos ar paplašinājumu .log:

 setopt extended_glob 
non_log_files=^(*.log)

Programmā Bash tie ir jāiespējo, izmantojot veikaliem komandu ar extglob opciju. Piemēram, lai atbilstu visiem .txt faili pašreizējā direktorijā:

 shopt -s extglob 
txt_files=(*.txt)

Lai saskaņotu visus failus, izņemot tos ar .log paplašinājums:

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

Galvenā atšķirība starp Zsh un Bash, kad runa ir par globbēšanas modeļiem, ir komanda, kas tiek izmantota, lai tos iespējotu. Tomēr ņemiet vērā, ka daži operatori atšķiras starp diviem apvalkiem.

kā savienot pārī jaunu Apple TV tālvadības pulti

4. Papildu parametru paplašināšana

Zsh atbalsta parametru netiešu paplašināšanu. Tas ļauj paplašināt tā mainīgā vērtību, kura nosaukums ir saglabāts citā mainīgajā. Lai to panāktu, mainīgā nosaukuma priekšā ir jāpievieno izsaukuma zīme ! .

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

No otras puses, Bash nepieļauj netiešu paplašināšanos. Risinājums tam ir, izmantojot eval iebūvētā komanda vai ${!bija} sintakse netiešajām mainīgo atsaucēm.

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

Līdzības starp Bash un Zsh

Lai gan starp Bash un Zsh pastāv atšķirības, tām ir arī dažas līdzības.

1. Komandrindas sintakse

Bash un Zsh ir līdzīga komandrindas sintakse. Tas ir lieliski, jo tas nozīmē, ka vairums jūsu rakstīto komandu un skriptu darbosies jebkurā čaulā bez izmaiņām. Zsh ir veidots uz Bash, tāpēc tajā ir iekļautas visas tās pašas pamata komandas un funkcijas.

Tomēr sintaksē ir ļoti nelielas atšķirības, kuras jums būs jāidentificē un jāpielāgo.

2. Komandu aizstāšanas konsekvence

Komandu aizstāšana ir vienas komandas izvades iegulšanas process citā. Tas ir konsekvents starp abiem apvalkiem.

 result=$(ls) 

Gan Bash, gan Zsh varat izmantot $(komanda) sintakse, lai komandas izvadi aizstātu ar mainīgo. Tas ļauj viegli pārnest skriptus starp diviem apvalkiem.

3. Skripta atkļūdošanas opcija

Gan Bash, gan Zsh izmanto -x karogs skripta atkļūdošanai. Palaižot skriptu ar šo karogu, tas parāda katru komandu pirms tās izpildes. Tas palīdz noteikt problēmas jūsu skriptos.

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

echo "Debugging Bash script"

Šajā Baša skriptā -x karodziņš ļauj atkļūdot. Jūs varat izmantot līdzīgu pieeju Zsh; vienkārši nomainiet bash ar zsh .

Apsvērumi, izvēloties starp Zsh un Bash

  • Saderība un pārnesamība : Bash ir noklusējuma apvalks daudzās sistēmās, kuru pamatā ir Unix. Tas padara to par drošāku izvēli starpplatformu skriptēšanai. Ja jums ir nepieciešams, lai jūsu skripti darbotos dažādās sistēmās bez izmaiņām, Bash ir labāks risinājums.
  • Skripta sarežģītība un uzlabotas funkcijas : Zsh nodrošina uzlabotas funkcijas, piemēram, asociatīvos masīvus, paplašinātus globbēšanas modeļus un uzlabotu parametru paplašināšanu. Tas vienkāršo sarežģītus skriptēšanas uzdevumus. Ja jūsu skriptiem ir nepieciešama uzlabota virkņu manipulācija vai datu struktūras, Zsh ir labāka izvēle.
  • Kopienas un spraudņu ekosistēma : gan Bash, gan Zsh ir aktīvas kopienas, bet Zsh ir spēcīgāka kopiena un plaša spraudņu un motīvu ekosistēma. Ja jums ir svarīga pielāgošana, Zsh dinamiskā kopiena un spraudņu atbalsts var būt nozīmīga priekšrocība.
  • Mācīšanās vieglums : Ja esat iesācējs čaulas skriptu lietošanā, Bash ir pieejamāks sākumpunkts. Tajā ir pieejama plaša dokumentācija un resursi iesācējiem. Tādējādi ir vieglāk apgūt čaulas skriptēšanas pamatus.

Uzdevumu automatizācija, izmantojot čaulas skriptus

Ļoti svarīgi ir zināt, kā automatizēt uzdevumus, izmantojot čaulas skriptus. Varat automatizēt atkārtotus uzdevumus un ietaupīt daudz laika.

Varat arī izmantot šos skriptus, lai pārvaldītu lietotāju kontus, pārraudzītu sistēmas resursus, dublētu datus un veiktu kārtējo apkopi. Ja tie ir rūpīgi uzrakstīti, tie var arī samazināt cilvēku kļūdu iespējamību.