Zsh vs Bash scenarijus. Koks skirtumas?

Zsh vs Bash scenarijus. Koks skirtumas?
Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Kalbant apie apvalkalo scenarijus Unix tipo operacinėse sistemose, dominuoja du apvalkalai: Bash (Bourne Again Shell) ir Zsh (Z Shell). Jei esate programuotojas arba sistemos administratorius, pasirinkimas tarp šių dviejų labai paveiks jūsų efektyvumą ir produktyvumą.





MUO dienos vaizdo įrašas SLĖKITE, KAD TĘSITE SU TURINIU

Šių dviejų apvalkalų skirtumų ir panašumų supratimas padės optimizuoti komandinės eilutės darbo eigą. Žinodami apie kiekvieno apvalkalo niuansus, galėsite priimti pagrįstus sprendimus.





kiek žmonių gali žiūrėti „netflix“

Kas yra Bash ir Zsh?

„Bash“ yra populiarus tiek „Linux“, tiek „MacOS“ sistemose. Tai galingas įrankis, kurį galite naudoti norėdami bendrauti su operacine sistema ir vykdyti komandas. Tu taip pat gali naudokite Bash apvalkalo scenarijus , kuri automatizuoja užduotis rašant scenarijus, kuriuose yra daugiau nei viena komanda.





Zsh (Z apvalkalas) yra išplėstinė Bash versija, turinti daug daugiau funkcijų. Tai numatytasis apvalkalas „macOS“. Jis taip pat tampa vis populiaresnis Linux sistemose.

Kaip perjungti iš Bash į Zsh

Jei naudojate Linux sistemą ir norite pereiti prie Zsh, pradėkite nuo naudodami paketų tvarkyklę, kad ją įdiegtumėte . Pavyzdžiui, „Debian“ arba „Ubuntu“ naudokite šią komandą:



 sudo apt install zsh

Įdiegę jį savo sistemoje, perjunkite į jį vykdydami šią komandą:

 chsh -s $(which zsh)

Jei naudojate „MacOS“, „Zsh“ jau įdiegtas. Norėdami perjungti į jį, paleiskite šią komandą:





 chsh -s /bin/zsh

Norėdami grįžti į Bash, aukščiau pateiktose komandose pakeiskite Zsh į Bash.

Norėdami patikrinti, kurį apvalkalą naudojate, paleiskite šią komandą:





 echo $SHELL

Tai padės patvirtinti, kad naudojate apvalkalą, kurį ketinote.

Skirtumai tarp Zsh ir Bash

Yra keletas skirtumų tarp Zsh ir Bash. Atsižvelgdami į šiuos skirtumus, galėsite nuspręsti, kuris apvalkalas jums labiausiai tinka.

1. Greitas pritaikymas

Zsh siūlo paprastesnį būdą pritaikyti raginimus naudojant % -pagrįstos pabėgimo sekos. Tai leidžia dinamiškai pateikti raginimus su spalvomis ir informacija. Norėdami tinkinti apvalkalo raginimą, apibrėžkite PS1 (Pagrindinis raginimas).

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

Aukščiau pateiktame tinkintame ragelyje naudotojo vardas, pagrindinio kompiuterio pavadinimas ir dabartinis katalogas rodomas skirtingomis spalvomis:

  Zsh raginimo pritaikymas terminale

Yra daug kiti būdai, kaip tinkinti Zsh raginimą , leidžiantį nustatyti administratoriaus indikatorių, įtraukti datą ir laiką bei išsaugoti naują raginimą.

Bash naudoja šiek tiek kitokį požiūrį, kai kalbama apie greitą pritaikymą. Jis naudoja pabėgimo kodus, kad nurodytų spalvos ir formatavimo pakeitimus raginime. Norėdami pasiekti tą patį tinkinimą, kaip ir anksčiau, galite naudoti šį tinkintą raginimą.

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

Naudojant \[3[0 min\] yra labai svarbus, nes užtikrina, kad spalvų pokyčiai nepaveiks teksto, kuris seka raginimu.

2. Asociatyvinių masyvų palaikymas

Zsh iš esmės palaiko asociatyvinius masyvus. Šios matricos yra patogus būdas susieti duomenis, todėl lengva tvarkyti ir gauti informaciją. Naudokite deklaruoti -A komanda, skirta aiškiai deklaruoti asociatyvų masyvą:

 # Declare an associative array in Zsh  
declare -A my_assoc_array

Tada asociatyviniam masyvei galite priskirti reikšmes:

 my_assoc_array=(key1 value1 key2 value2) 

Ir galiausiai pasiekite reikšmes naudodami jų raktus:

 echo $my_assoc_array[key1] # Outputs: value1

„Bash“ įtraukė vietinį asociatyvinių masyvų palaikymą nuo 4.0 versijos. Jūs deklaruojate ir priskiriate reikšmes taip pat, kaip ir Zsh. Bet kai reikia pasiekti masyvo reikšmes, raktą turite apvynioti garbanotuose skliaustuose:

 echo "${my_assoc_array[key1]}" 

Pagrindinis skirtumas yra tas, kad Zsh palaikymas asociatyviems masyvams yra turtingesnis ir pažangesnis nei Bash. Zsh leidžia asociatyviuose masyvuose turėti įvairių duomenų tipų raktus, o ne tik eilutes. Bash palaiko tik stygų klavišus.

Ankstesnėse „Bash“ versijose turite išsiaiškinti, kaip išspręsti problemą, arba turėti išorinių įrankių, skirtų naudoti asociatyvinius masyvus.

3. Išplėstiniai globbing modeliai

Išplėstiniai globbavimo modeliai yra galingas ir lankstus būdas pasirinkti ir valdyti failus bei katalogus pagal įvairius kriterijus. Jie naudingi, kai dirbate su sudėtingomis failų struktūromis arba kai reikia tiksliai valdyti failų pasirinkimą.

Zsh scenarijuje galite įjungti šiuos šablonus naudodami setopt komandą. Pavyzdžiui, kad atitiktų visus .txt failai dabartiniame kataloge:

 setopt extended_glob 
txt_files=(*.txt)

Kad atitiktų visus failus, išskyrus tuos, kurių plėtinys yra .log:

 setopt extended_glob 
non_log_files=^(*.log)

„Bash“ turite juos įjungti naudodami parduotuvės komandą su extglob variantas. Pavyzdžiui, kad atitiktų visus .txt failai dabartiniame kataloge:

 shopt -s extglob 
txt_files=(*.txt)

Kad atitiktų visus failus, išskyrus tuos, kuriuose yra .log plėtinys:

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

Pagrindinis skirtumas tarp Zsh ir Bash, kai kalbama apie globbavimo modelius, yra komanda, naudojama jiems įjungti. Tačiau atkreipkite dėmesį, kad kai kurie operatoriai skiriasi tarp dviejų apvalkalų.

4. Išplėstinis parametrų išplėtimas

Zsh palaiko netiesioginį parametrų išplėtimą. Tai leidžia išplėsti kintamojo, kurio pavadinimas saugomas kitame kintamajame, reikšmę. Norėdami tai padaryti, prieš kintamojo pavadinimą turite įrašyti šauktuką ! .

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

Kita vertus, Bash neleidžia netiesiogiai plėstis natūraliai. Išeitis yra naudojant eval integruota komanda arba ${!buvo} netiesioginių kintamųjų nuorodų sintaksė.

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

Bash ir Zsh panašumai

Nors tarp Bash ir Zsh yra skirtumų, jie taip pat turi tam tikrų panašumų.

1. Komandinės eilutės sintaksė

„Bash“ ir „Zsh“ turi panašią komandų eilutės sintaksę. Tai puiku, nes tai reiškia, kad dauguma jūsų parašytų komandų ir scenarijų veiks bet kuriame apvalkale be pakeitimų. Zsh sukurtas ant „Bash“, todėl jame yra visos tos pačios pagrindinės komandos ir funkcijos.

Tačiau yra labai nedidelių sintaksės skirtumų, kuriuos turėsite nustatyti ir pakoreguoti.

raspberry pi zero projektai pradedantiesiems

2. Komandų pakeitimo nuoseklumas

Komandų pakeitimas yra vienos komandos išvesties įterpimo į kitą procesas. Tai suderinama tarp abiejų apvalkalų.

 result=$(ls) 

Tiek „Bash“, tiek „Zsh“ galite naudoti $(komanda) sintaksė, kad pakeistų komandos išvestį į kintamąjį. Tai leidžia lengvai perkelti scenarijus tarp dviejų apvalkalų.

3. Scenarijaus derinimo parinktis

Naudoja ir Bash, ir Zsh -x vėliavėlė scenarijaus derinimui. Kai paleidžiate scenarijų su šia vėliava, kiekviena komanda rodoma prieš paleidžiant. Tai padeda nustatyti scenarijų problemas.

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

echo "Debugging Bash script"

Šiame Basho scenarijuje -x vėliavėlė leidžia derinti. Panašų metodą galite naudoti ir Zsh; tiesiog pakeiskite bash su zsh .

Apsvarstymai renkantis tarp Zsh ir Bash

  • Suderinamumas ir perkeliamumas : „Bash“ yra numatytasis apvalkalas daugelyje „Unix“ pagrįstų sistemų. Dėl to tai yra saugesnis pasirinkimas kelių platformų scenarijų kūrimui. Jei jums reikia, kad jūsų scenarijai veiktų įvairiose sistemose be pakeitimų, „Bash“ yra geresnis pasirinkimas.
  • Scenarijaus sudėtingumas ir papildomos funkcijos : „Zsh“ teikia pažangias funkcijas, tokias kaip asociatyvūs masyvai, išplėstiniai globbavimo modeliai ir išplėstinis parametrų išplėtimas. Tai supaprastina sudėtingas scenarijų sudarymo užduotis. Jei jūsų scenarijus reikalauja išplėstinio manipuliavimo eilutėmis arba duomenų struktūrų, Zsh yra geresnis pasirinkimas.
  • Bendruomenės ir papildinių ekosistema : ir Bash, ir Zsh turi aktyvias bendruomenes, bet Zsh turi stipresnę bendruomenę ir plačią įskiepių ir temų ekosistemą. Jei vertinate tinkinimą, gyvybinga Zsh bendruomenė ir papildinių palaikymas gali būti reikšmingas pranašumas.
  • Mokymosi lengvumas : Jei nesate naudojęs apvalkalo scenarijus, „Bash“ yra labiau prieinamas pradžios taškas. Jame yra daug dokumentų ir išteklių pradedantiesiems. Taip lengviau išmokti apvalkalo scenarijų rašymo pagrindus.

Užduočių automatizavimas naudojant apvalkalo scenarijus

Labai svarbu žinoti, kaip automatizuoti užduotis naudojant apvalkalo scenarijus. Galite automatizuoti pasikartojančias užduotis ir sutaupyti daug laiko.

Šiuos scenarijus taip pat galite naudoti norėdami tvarkyti vartotojų paskyras, stebėti sistemos išteklius, kurti atsargines duomenų kopijas ir atlikti įprastinę priežiūrą. Kruopščiai parašyti jie taip pat gali sumažinti žmogiškųjų klaidų galimybę.