Zsh எதிராக பாஷ் ஸ்கிரிப்டிங். என்ன வித்தியாசம்?

Zsh எதிராக பாஷ் ஸ்கிரிப்டிங். என்ன வித்தியாசம்?
உங்களைப் போன்ற வாசகர்கள் MUO ஐ ஆதரிக்க உதவுகிறார்கள். எங்கள் தளத்தில் உள்ள இணைப்புகளைப் பயன்படுத்தி நீங்கள் வாங்கும் போது, ​​நாங்கள் ஒரு இணை கமிஷனைப் பெறலாம். மேலும் படிக்க.

யூனிக்ஸ் போன்ற இயங்குதளங்களில் ஷெல் ஸ்கிரிப்டிங்கிற்கு வரும்போது, ​​இரண்டு ஷெல்கள் ஆதிக்கம் செலுத்துகின்றன: பாஷ் (போர்ன் அகெய்ன் ஷெல்) மற்றும் Zsh (இசட் ஷெல்). நீங்கள் ஒரு புரோகிராமர் அல்லது சிஸ்டம் அட்மினிஸ்ட்ரேட்டராக இருந்தால், இந்த இரண்டிற்கும் இடையேயான தேர்வு உங்கள் செயல்திறன் மற்றும் உற்பத்தித்திறனை கணிசமாக பாதிக்கிறது.





அன்றைய MUO வீடியோ உள்ளடக்கத்துடன் தொடர உருட்டவும்

இந்த இரண்டு ஷெல்களுக்கு இடையே உள்ள வேறுபாடுகள் மற்றும் ஒற்றுமைகளைப் புரிந்துகொள்வது உங்கள் கட்டளை-வரி பணிப்பாய்வுகளை மேம்படுத்த உதவும். ஒவ்வொரு ஷெல்லின் நுணுக்கங்களைப் பற்றி அறிந்துகொள்வது தகவலறிந்த முடிவுகளை எடுக்க உதவும்.





பாஷ் மற்றும் Zsh என்றால் என்ன?

லினக்ஸ் மற்றும் மேகோஸ் சிஸ்டம் இரண்டிலும் பாஷ் பிரபலமானது. இயக்க முறைமையுடன் தொடர்பு கொள்ளவும் கட்டளைகளை இயக்கவும் நீங்கள் பயன்படுத்தக்கூடிய சக்திவாய்ந்த கருவி இது. உங்களாலும் முடியும் ஷெல் ஸ்கிரிப்டிங்கிற்கு பாஷ் பயன்படுத்தவும் , இது ஒன்றுக்கும் மேற்பட்ட கட்டளைகளைக் கொண்ட ஸ்கிரிப்ட்களை எழுதுவதன் மூலம் பணிகளை தானியக்கமாக்குகிறது.





Zsh (Z shell) என்பது இன்னும் பல அம்சங்களைக் கொண்ட பாஷின் விரிவாக்கப்பட்ட பதிப்பாகும். இது MacOS இல் இயல்புநிலை ஷெல் ஆகும். லினக்ஸ் கணினிகளிலும் இது பிரபலமடைந்து வருகிறது.

பாஷில் இருந்து Zshக்கு மாறுவது எப்படி

நீங்கள் லினக்ஸ் அமைப்பைப் பயன்படுத்துகிறீர்கள் மற்றும் Zsh க்கு மாற விரும்பினால், தொடங்கவும் அதை நிறுவ உங்கள் தொகுப்பு மேலாளரைப் பயன்படுத்தவும் . எடுத்துக்காட்டாக, Debian அல்லது Ubuntu இல், பின்வரும் கட்டளையைப் பயன்படுத்தவும்:



 sudo apt install zsh

உங்கள் கணினியில் நிறுவிய பின், பின்வரும் கட்டளையை இயக்குவதன் மூலம் அதற்கு மாறவும்:

 chsh -s $(which zsh)

நீங்கள் macOS ஐப் பயன்படுத்தினால், Zsh ஏற்கனவே நிறுவப்பட்டுள்ளது. அதற்கு மாற, பின்வரும் கட்டளையை இயக்கவும்:





 chsh -s /bin/zsh

மீண்டும் Bash க்கு மாற, மேலே உள்ள கட்டளைகளில் Zsh ஐ Bash என்று மாற்றவும்.

நீங்கள் எந்த ஷெல் பயன்படுத்துகிறீர்கள் என்பதைச் சரிபார்க்க, பின்வரும் கட்டளையை இயக்கவும்:





 echo $SHELL

நீங்கள் விரும்பிய ஷெல்லைப் பயன்படுத்துகிறீர்கள் என்பதை உறுதிப்படுத்த இது உதவும்.

Zsh மற்றும் Bash இடையே உள்ள வேறுபாடுகள்

Zsh மற்றும் Bash இடையே பல வேறுபாடுகள் உள்ளன. இந்த வேறுபாடுகளைக் கருத்தில் கொண்டு, எந்த ஷெல் உங்களுக்கு மிகவும் பொருத்தமானது என்பதைத் தீர்மானிக்க உதவும்.

1. உடனடி தனிப்பயனாக்கம்

Zsh உங்கள் அறிவுறுத்தல்களைப் பயன்படுத்தி தனிப்பயனாக்க எளிதான வழியை வழங்குகிறது % - அடிப்படையிலான தப்பிக்கும் காட்சிகள். இது வண்ணம் மற்றும் தகவலுடன் மாறும் தூண்டுதல்களை அனுமதிக்கிறது. உங்கள் ஷெல் வரியில் தனிப்பயனாக்க, வரையறுக்கவும் PS1 (முதன்மை வரியில்).

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

மேலே உள்ள தனிப்பயன் வரியில் பயனர்பெயர், ஹோஸ்ட்பெயர் மற்றும் தற்போதைய கோப்பகத்தை வெவ்வேறு வண்ணங்களில் காட்டுகிறது:

  முனையத்தில் Zsh உடனடி தனிப்பயனாக்கம்

பல உள்ளன Zsh வரியில் தனிப்பயனாக்க மற்ற வழிகள் , நிர்வாகி குறிகாட்டியை அமைக்க உங்களை அனுமதிக்கிறது, தேதி மற்றும் நேரத்தைச் சேர்த்து, புதிய வரியில் சேமிக்கவும்.

உடனடி தனிப்பயனாக்கலுக்கு வரும்போது பாஷ் சற்று வித்தியாசமான அணுகுமுறையைப் பயன்படுத்துகிறது. வரியில் வண்ணம் மற்றும் வடிவமைப்பு மாற்றங்களைக் குறிப்பிட இது எஸ்கேப் குறியீடுகளைப் பயன்படுத்துகிறது. மேலே உள்ள Zsh போன்ற தனிப்பயனாக்கத்தை அடைய, பின்வரும் தனிப்பயன் வரியில் நீங்கள் பயன்படுத்தலாம்.

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

பயன்படுத்தி \[3[0மீ\] இது மிகவும் முக்கியமானது, ஏனெனில் வண்ண மாற்றங்கள் வரியில் வரும் உரையை பாதிக்காது.

2. துணை வரிசைகளுக்கான ஆதரவு

Zsh ஆனது துணை வரிசைகளை ஆதரிக்கிறது. இந்த வரிசைகள் தரவை இணைக்க வசதியான வழியை வழங்குகின்றன, இது தகவலை ஒழுங்கமைக்கவும் மீட்டெடுக்கவும் எளிதாக்குகிறது. பயன்படுத்தவும் அறிவிக்கின்றன -ஏ ஒரு துணை வரிசையை வெளிப்படையாக அறிவிக்க கட்டளை:

 # Declare an associative array in Zsh  
declare -A my_assoc_array

நீங்கள் துணை வரிசைக்கு மதிப்புகளை ஒதுக்கலாம்:

 my_assoc_array=(key1 value1 key2 value2) 

இறுதியாக, அவற்றின் விசைகளைப் பயன்படுத்தி மதிப்புகளை அணுகவும்:

ஏன் என் வட்டு பயன்பாடு 100 இல் உள்ளது
 echo $my_assoc_array[key1] # Outputs: value1

பாஷ் அசோசியேட்டிவ் வரிசைகளுக்கான சொந்த ஆதரவை உள்ளடக்கியுள்ளது பதிப்பு 4.0 முதல். நீங்கள் Zsh இல் உள்ளதைப் போலவே மதிப்புகளை அறிவித்து ஒதுக்குகிறீர்கள். ஆனால் வரிசை மதிப்புகளை அணுகும் போது, ​​நீங்கள் சுருள் அடைப்புக்குறிக்குள் விசையை மடிக்க வேண்டும்:

 echo "${my_assoc_array[key1]}" 

முக்கிய வேறுபாடு என்னவென்றால், Zsh இன் துணை வரிசைகளுக்கான ஆதரவு, பாஷை விட அம்சம் நிறைந்ததாகவும் மேம்பட்டதாகவும் உள்ளது. Zsh ஆனது சரங்களை மட்டும் இல்லாமல், பல்வேறு தரவு வகைகளின் விசைகளைக் கொண்டிருக்க துணை வரிசைகளை அனுமதிக்கிறது. பாஷ் சரம் விசைகளை மட்டுமே ஆதரிக்கிறது.

பாஷின் முந்தைய பதிப்புகளில், நீங்கள் தீர்வுக்கான வழியைக் கண்டுபிடிக்க வேண்டும் அல்லது துணை வரிசைகளைப் பயன்படுத்த வெளிப்புறக் கருவிகளைக் கொண்டிருக்க வேண்டும்.

3. விரிவாக்கப்பட்ட குளோபிங் வடிவங்கள்

நீட்டிக்கப்பட்ட குளோப்பிங் வடிவங்கள் பல்வேறு அளவுகோல்களின் அடிப்படையில் கோப்புகள் மற்றும் கோப்பகங்களைத் தேர்ந்தெடுக்கவும் கையாளவும் சக்திவாய்ந்த மற்றும் நெகிழ்வான வழியை வழங்குகின்றன. நீங்கள் சிக்கலான கோப்பு கட்டமைப்புகளுடன் பணிபுரியும் போது அல்லது கோப்புத் தேர்வுகளில் துல்லியமான கட்டுப்பாடு தேவைப்படும்போது அவை பயனுள்ளதாக இருக்கும்.

Zsh ஸ்கிரிப்ட்டில், நீங்கள் இந்த வடிவங்களை இயக்கலாம் அமைக்க கட்டளை. உதாரணமாக, அனைத்தையும் பொருத்துவதற்கு .txt தற்போதைய கோப்பகத்தில் உள்ள கோப்புகள்:

 setopt extended_glob 
txt_files=(*.txt)

.log நீட்டிப்பு உள்ள கோப்புகளைத் தவிர அனைத்து கோப்புகளையும் பொருத்த:

 setopt extended_glob 
non_log_files=^(*.log)

பாஷில், அவற்றைப் பயன்படுத்தி அவற்றை இயக்க வேண்டும் கடைகள் உடன் கட்டளை extglob விருப்பம். உதாரணமாக, அனைத்தையும் பொருத்துவதற்கு .txt தற்போதைய கோப்பகத்தில் உள்ள கோப்புகள்:

ஏன் என் வைஃபை இணையம் இல்லை என்று கூறுகிறது
 shopt -s extglob 
txt_files=(*.txt)

உள்ள கோப்புகளைத் தவிர அனைத்து கோப்புகளையும் பொருத்துவதற்கு .log நீட்டிப்பு:

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

குளோப்பிங் பேட்டர்ன்களுக்கு வரும்போது Zsh மற்றும் Bash க்கு இடையேயான முக்கிய வேறுபாடு, அவற்றை இயக்கப் பயன்படுத்தப்படும் கட்டளை. இருப்பினும், சில ஆபரேட்டர்கள் இரண்டு ஷெல்களுக்கு இடையில் வித்தியாசமாக இருப்பதைக் கவனிக்கவும்.

4. மேம்பட்ட அளவுரு விரிவாக்கம்

Zsh அளவுருக்களின் மறைமுக விரிவாக்கத்தை ஆதரிக்கிறது. இது ஒரு மாறியின் மதிப்பை விரிவாக்க அனுமதிக்கிறது, அதன் பெயர் மற்றொரு மாறியில் சேமிக்கப்படுகிறது. இதை அடைய, நீங்கள் மாறி பெயரை ஆச்சரியக்குறியுடன் முன்னொட்டாக வைக்க வேண்டும் ! .

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

மறுபுறம், பாஷ் மறைமுக விரிவாக்கத்தை சொந்தமாக அனுமதிக்காது. இதற்கான தீர்வாக பயன்படுத்தப்படுகிறது ஏவல் உள்ளமைக்கப்பட்ட கட்டளை அல்லது ${! இருந்தது} மறைமுக மாறி குறிப்புகளுக்கான தொடரியல்.

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

பாஷ் மற்றும் Zsh இடையே உள்ள ஒற்றுமைகள்

பாஷ் மற்றும் Zsh இடையே வேறுபாடுகள் இருந்தாலும், அவை சில ஒற்றுமைகளையும் பகிர்ந்து கொள்கின்றன.

1. கட்டளை வரி தொடரியல்

பாஷ் மற்றும் Zsh ஒத்த கட்டளை வரி தொடரியல் பகிர்ந்து கொள்கின்றன. நீங்கள் எழுதும் பெரும்பாலான கட்டளைகள் மற்றும் ஸ்கிரிப்டுகள் எந்த மாற்றமும் இல்லாமல் ஷெல்லில் வேலை செய்யும். Zsh பாஷின் மேல் கட்டப்பட்டுள்ளது, எனவே இது அனைத்து அடிப்படை கட்டளைகள் மற்றும் அம்சங்களை உள்ளடக்கியது.

இருப்பினும், தொடரியலில் மிகச் சிறிய வேறுபாடுகள் உள்ளன, அவற்றை நீங்கள் அடையாளம் கண்டு சரிசெய்ய வேண்டும்.

2. கட்டளை மாற்று நிலைத்தன்மை

கட்டளை மாற்றீடு என்பது ஒரு கட்டளையின் வெளியீட்டை மற்றொன்றில் உட்பொதிக்கும் செயல்முறையாகும். இது இரண்டு ஓடுகளுக்கும் இடையில் சீரானது.

 result=$(ls) 

பாஷ் மற்றும் Zsh இரண்டிலும், நீங்கள் பயன்படுத்தலாம் $(கட்டளை) ஒரு கட்டளையின் வெளியீட்டை மாறியாக மாற்றுவதற்கு தொடரியல். இது இரண்டு ஷெல்களுக்கு இடையில் ஸ்கிரிப்ட்களை எளிதாக எடுத்துச் செல்ல அனுமதிக்கிறது.

3. ஸ்கிரிப்ட் பிழைத்திருத்த விருப்பம்

பாஷ் மற்றும் Zsh இரண்டும் பயன்படுத்துகின்றன -எக்ஸ் ஸ்கிரிப்ட் பிழைத்திருத்தத்திற்கான கொடி. இந்தக் கொடியுடன் நீங்கள் ஒரு ஸ்கிரிப்டை இயக்கும்போது, ​​அது இயங்கும் முன் ஒவ்வொரு கட்டளையையும் காண்பிக்கும். இது உங்கள் ஸ்கிரிப்ட்களில் உள்ள சிக்கல்களைக் கண்டறிய உதவுகிறது.

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

echo "Debugging Bash script"

இந்த பாஷ் ஸ்கிரிப்ட்டில், தி -எக்ஸ் கொடி பிழைத்திருத்தத்தை செயல்படுத்துகிறது. நீங்கள் Zsh இல் இதேபோன்ற அணுகுமுறையைப் பயன்படுத்தலாம்; வெறும் பதிலாக பாஷ் உடன் zsh .

Zsh மற்றும் Bash இடையே தேர்வு செய்வதற்கான பரிசீலனைகள்

  • பொருந்தக்கூடிய தன்மை மற்றும் பெயர்வுத்திறன் : பாஷ் என்பது பல யூனிக்ஸ் அடிப்படையிலான கணினிகளில் இயல்புநிலை ஷெல் ஆகும். இது குறுக்கு-தளம் ஸ்கிரிப்டிங்கிற்கான பாதுகாப்பான தேர்வாக அமைகிறது. உங்கள் ஸ்கிரிப்ட்களை மாற்றியமைக்காமல் பலதரப்பட்ட கணினிகளில் இயக்க வேண்டுமானால், பாஷ் ஒரு சிறந்த வழி.
  • ஸ்கிரிப்ட் சிக்கலானது மற்றும் மேம்பட்ட அம்சங்கள் : Zsh ஆனது துணை வரிசைகள், நீட்டிக்கப்பட்ட குளோப்பிங் வடிவங்கள் மற்றும் மேம்பட்ட அளவுரு விரிவாக்கம் போன்ற மேம்பட்ட அம்சங்களை வழங்குகிறது. இது சிக்கலான ஸ்கிரிப்டிங் பணிகளை எளிதாக்குகிறது. உங்கள் ஸ்கிரிப்ட்களுக்கு மேம்பட்ட சரம் கையாளுதல் அல்லது தரவு கட்டமைப்புகள் தேவைப்பட்டால், Zsh ஒரு சிறந்த தேர்வாகும்.
  • சமூகம் மற்றும் செருகுநிரல் சுற்றுச்சூழல் அமைப்பு : Bash மற்றும் Zsh இரண்டும் செயலில் உள்ள சமூகங்களைக் கொண்டுள்ளன, ஆனால் Zsh ஆனது ஒரு வலுவான சமூகம் மற்றும் செருகுநிரல்கள் மற்றும் தீம்களின் விரிவான சுற்றுச்சூழல் அமைப்பைக் கொண்டுள்ளது. நீங்கள் தனிப்பயனாக்கத்தை மதிக்கிறீர்கள் என்றால் Zsh இன் துடிப்பான சமூகம் மற்றும் சொருகி ஆதரவு குறிப்பிடத்தக்க நன்மையாக இருக்கும்.
  • கற்றல் எளிமை : நீங்கள் ஷெல் ஸ்கிரிப்டிங்கிற்கு புதியவராக இருந்தால், பாஷ் மிகவும் அணுகக்கூடிய தொடக்க புள்ளியாகும். இது ஆரம்பநிலைக்கான விரிவான ஆவணங்கள் மற்றும் ஆதாரங்களைக் கொண்டுள்ளது. இது ஷெல் ஸ்கிரிப்டிங்கின் அடிப்படைகளைக் கற்றுக்கொள்வதை எளிதாக்குகிறது.

ஷெல் ஸ்கிரிப்ட்களைப் பயன்படுத்தி பணிகளை தானியக்கமாக்குதல்

ஷெல் ஸ்கிரிப்ட்களைப் பயன்படுத்தி பணிகளை எவ்வாறு தானியக்கமாக்குவது என்பதை அறிவது மிகவும் முக்கியமானது. நீங்கள் மீண்டும் மீண்டும் செய்யும் பணிகளை தானியக்கமாக்கலாம் மற்றும் நிறைய நேரத்தை மிச்சப்படுத்தலாம்.

பயனர் கணக்குகளை நிர்வகிக்கவும், கணினி ஆதாரங்களைக் கண்காணிக்கவும், தரவைக் காப்புப் பிரதி எடுக்கவும், வழக்கமான பராமரிப்பைச் செய்யவும் இந்த ஸ்கிரிப்ட்களைப் பயன்படுத்தலாம். கவனமாக எழுதப்பட்டால், அவை மனித பிழையின் சாத்தியத்தையும் குறைக்கலாம்.