Зсх против Басх скриптовања. Која је разлика?

Када је реч о схелл скриптовима на оперативним системима сличним Уник-у, доминирају две љуске: Басх (Боурне Агаин Схелл) и Зсх (З Схелл). Ако сте програмер или систем администратор, избор између ова два значајно утиче на вашу ефикасност и продуктивност.

Разумевање разлика и сличности између ове две љуске помоћи ће вам да оптимизујете радни ток командне линије. Познавање нијанси сваке шкољке помоћи ће вам да донесете информисане одлуке.

Шта су Басх и Зсх?

Басх је популаран и на Линук и на мацОС системима. То је моћан алат који можете користити за интеракцију са оперативним системом и покретање команди. Такође можете користити Басх за схелл скриптовање, који аутоматизује задатке писањем скрипти које садрже више од једне команде.

Зсх (З схелл) је проширена верзија Басх-а која има много више функција. То је подразумевана шкољка на мацОС-у. Такође постаје све популарнији на Линук системима.

Како прећи са Басх на Зсх

Ако користите Линук систем и желите да пређете на Зсх, почните тако што ћете га инсталирати помоћу менаџера пакета. На пример, на Дебиан-у или Убунту-у користите следећу команду:

 sudo apt install zsh 

Након што га инсталирате на свој систем, пребаците се на њега тако што ћете покренути следећу команду:

 chsh -s $(which zsh) 

Ако користите мацОС, Зсх је већ инсталиран. Да бисте се пребацили на њега, покрените следећу команду:

 chsh -s /bin/zsh 

Да бисте се вратили на Басх, замените Зсх са Басх у горњим командама.

  Како сачувати Инстаграм причу уз музику (3 метода)

Да бисте проверили коју љуску користите, покрените следећу команду:

 echo $SHELL 

Ово ће вам помоћи да потврдите да користите љуску коју сте намеравали да користите.

Разлике између Зсх и Басх

Постоји неколико разлика између Зсх и Басх. Узимање у обзир ових разлика помоћи ће вам да одлучите која вам шкољка најбоље одговара.

1. Брзо прилагођавање

Зсх нуди лакши начин за прилагођавање ваших упита користећи есцапе секвенце засноване на %. Ово омогућава динамичке упите са бојом и информацијама. Да бисте прилагодили своју схелл промпт, дефинишите ПС1 (Примари Промпт).

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

Горњи прилагођени упит приказује корисничко име, име хоста и тренутни директоријум у различитим бојама:

Постоји много других начина да прилагодите Зсх промпт, што вам омогућава да поставите индикатор администратора, укључите датум и време и сачувате нови упит.

Басх користи мало другачији приступ када је у питању брзо прилагођавање. Користи излазне кодове да одреди промене боје и форматирања у промпту. Да бисте постигли исто прилагођавање као Зсх изнад, можете користити следећи прилагођени упит.

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

Користећи \[\033[0m\] је кључно јер осигурава да промене боје не утичу на текст који прати упит.

2. Подршка за асоцијативне низове

Зсх изворно подржава асоцијативне низове. Ови низови пружају згодан начин повезивања података који олакшава организовање и преузимање информација. Користите децларе -А команду да експлицитно прогласите асоцијативни низ:

 # Declare an associative array in Zsh 
declare -A my_assoc_array

Затим можете доделити вредности асоцијативном низу:

 my_assoc_array=(key1 value1 key2 value2)  

И, коначно, приступите вредностима користећи њихове кључеве:

 echo $my_assoc_array[key1] # Outputs: value1 

Басх је укључио изворну подршку за асоцијативне низове од верзије 4.0. Декларишете и додељујете вредности на исти начин као што бисте то урадили у Зсх. Али када је у питању приступ вредностима низа, морате да умотате кључ у витичасте заграде:

 echo "${my_assoc_array[key1]}"  

Главна разлика је у томе што је Зсх-ова подршка за асоцијативне низове богатија функцијама и напреднија од Басх-а. Зсх омогућава да асоцијативни низови имају кључеве различитих типова података, а не само низове. Басх подржава само стринг кључеве.

  Шта је Блуетоотх 5.3? Објашњене верзије Блуетоотх 5

У ранијим верзијама Басх-а, морате да смислите начин за заобилажење или да имате спољне алате за коришћење асоцијативних низова.

3. Проширени обрасци глобирања

Проширени обрасци глобинга пружају моћан и флексибилан начин одабира и манипулације датотекама и директоријумима на основу различитих критеријума. Корисни су када радите са сложеним структурама датотека или када вам је потребна прецизна контрола над избором датотека.

У Зсх скрипти, можете омогућити ове обрасце помоћу команде сетопт. На пример, да бисте подударили све .ткт датотеке у тренутном директоријуму:

 setopt extended_glob
txt_files=(*.txt)

Да бисте ускладили све датотеке осим оних са екстензијом .лог:

 setopt extended_glob
non_log_files=^(*.log)

У Басх-у морате да их омогућите помоћу команде схопт са опцијом ектглоб. На пример, да бисте подударили све .ткт датотеке у тренутном директоријуму:

 shopt -s extglob
txt_files=(*.txt)

Да бисте ускладили све датотеке осим оних са екстензијом .лог:

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

Главна разлика између Зсх-а и Басх-а када су у питању обрасци глобирања је команда која се користи за њихово омогућавање. Међутим, приметите да се неки оператори разликују између ове две љуске.

4. Напредно проширење параметара

Зсх подржава индиректно проширење параметара. Ово вам омогућава да проширите вредност променљиве чије је име ускладиштено у другој променљивој. Да бисте то постигли, потребно је да имену променљиве додате знак узвика!.

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

Басх, са друге стране, не дозвољава индиректно проширење изворно. Заобилазно решење за ово је коришћење уграђене команде евал или синтаксе ${!вар} за индиректне референце променљивих.

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

Сличности између Баша и Зш

Иако постоје разлике између Басх и Зсх, они такође деле неке сличности.

1. Синтакса командне линије

Басх и Зсх деле сличну синтаксу командне линије. Ово је одлично јер значи да ће већина команди и скрипти које напишете радити у било којој љусци, без модификација. Зсх је изграђен на врху Басх-а, тако да укључује све исте основне команде и функције.

  8 платформи које могу помоћи

Међутим, постоје веома мале разлике у синтакси које ћете морати да идентификујете и прилагодите.

2. Конзистентност замене команди

Замена команде је процес уграђивања излаза једне команде у другу. Доследан је између обе шкољке.

 result=$(ls)  

И у Басх иу Зсх-у, можете користити синтаксу $(цомманд) да замените излаз команде у променљиву. Ово омогућава лак пренос скрипти између две љуске.

3. Опција за отклањање грешака скрипте

И Басх и Зсх користе -к заставицу за отклањање грешака у скрипти. Када покренете скрипту са овом заставицом, она приказује сваку команду пре него што се покрене. Ово вам помаже да идентификујете проблеме у вашим скриптама.

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

echo "Debugging Bash script"

У овој Басх скрипти, ознака -к омогућава отклањање грешака. Можете користити сличан приступ у Зсх; само замените басх са зсх.

Разматрања о избору између Зсх и Басх

  • Компатибилност и преносивост: Басх је подразумевана љуска на многим системима заснованим на Уник-у. Ово га чини сигурнијим избором за скриптовање на више платформи. Ако вам је потребно да ваше скрипте раде на широком спектру система без модификација, Басх је боља опција.
  • Сложеност скрипте и напредне функције: Зсх пружа напредне функције као што су асоцијативни низови, проширени обрасци глобирања и напредно проширење параметара. Ово поједностављује сложене задатке скриптирања. Ако ваше скрипте захтевају напредну манипулацију стринговима или структуре података, Зсх је бољи избор.
  • Заједница и екосистем додатака: И Басх и Зсх имају активне заједнице, али Зсх има јачу заједницу и обиман екосистем додатака и тема. Ако цените прилагођавање, Зсх-ова жива заједница и подршка за додатке могу бити значајна предност.
  • Једноставност учења: Ако сте тек почели да радите на схелл скриптовима, Басх је приступачнија полазна тачка. Има обимну документацију и ресурсе доступне почетницима. Ово олакшава учење основа схелл скриптовања.

Аутоматизација задатака помоћу схелл скрипти

Знати како да аутоматизујете задатке користећи схелл скрипте је од велике важности. Можете аутоматизовати задатке који се понављају и уштедети много времена.

Такође можете да користите ове скрипте за управљање корисничким налозима, надгледање системских ресурса, прављење резервних копија података и обављање рутинског одржавања. Када су пажљиво написани, они такође могу смањити могућност људске грешке.