எட்டு சிறிய அறியப்பட்ட பாஷ் விருப்பங்கள்

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

செட் -ஓ எக்ஸ்ட்ரேஸ்

பிழைத்திருத்தத்திற்காக,

செட் -ஓ எரெக்ஸிட்

தவறுதலாக வெளியேற அல்லது

செட் -ஓ errunset

அழைக்கப்பட்ட மாறி அமைக்கப்படவில்லை என்றால் வெளியேறவும்.

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

குறிப்பு: Macs ஆனது bash இன் பழைய பதிப்பைக் கொண்டிருக்கலாம் (3.x ஐ விட 4.x) இந்த விருப்பங்கள் அனைத்தும் கிடைக்காது. இந்த வழக்கில், பார்க்கவும் இங்கே அல்லது இங்கே.

set அல்லது shopt?

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

தற்போதைய விருப்பங்களைப் பார்க்க விரும்பினால், இயக்கவும்:

$ set -o
$ shopt

உள்ள விருப்பத்தை செயல்படுத்த set நீண்ட அல்லது குறுகிய தொடரியல் பயன்படுத்தப்படுகிறது:

$ set -o errunset
$ set -e

விளைவு அதே தான்.

விருப்பத்தை முடக்க, மைனஸுக்கு பதிலாக பிளஸ் போட வேண்டும்:

$ set +e

நீண்ட காலமாக இந்த தொடரியல் நினைவில் இல்லை, ஏனெனில் தர்க்கம் தவறாகத் தோன்றியது (ஒரு கழித்தல் குறி விருப்பத்தை செயல்படுத்துகிறது, மேலும் ஒரு கூட்டல் அதை முடக்குகிறது).

В shopt (அதிக தர்க்கரீதியான) கொடிகள் விருப்பங்களை இயக்கவும் முடக்கவும் பயன்படுத்தப்படுகின்றன -s (தொகுப்பு) மற்றும் -u (அமைக்கப்படவில்லை):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

அடைவுகளை மாற்றுதல்

கோப்பகங்களுடன் பணிபுரிய உதவும் பல விருப்பங்கள் உள்ளன.

1.சிடிஸ்பெல்

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

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

நான் பல ஆண்டுகளாக இந்த விருப்பத்தைப் பயன்படுத்துகிறேன், மிகவும் அரிதாக (ஒரு வருடத்திற்கு ஒரு முறை) இது மிகவும் விசித்திரமான முடிவை எடுக்கிறது. ஆனால் மற்ற நாட்களில் cdspell நேரத்தை மிச்சப்படுத்துகிறது, அதாவது ஒவ்வொரு நாளும்.

2. autocd

பல உள்ளீடுகளின் திறமையின்மையை நீங்கள் ஏற்கத் தயாராக இல்லை என்றால் cd, X கட்டளை இல்லை என்றால் X கோப்புறைக்கு நகர்த்த இந்த விருப்பத்தை அமைக்கலாம்.

$ shopt -s autocd
$ abcdefg
$ cd ..

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

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

கோப்புறைக்கு பெயரிட வேண்டாம் rm -rf * (ஆம், மூலம், இது சாத்தியம்).

3.டைரெக்ஸ்பாண்ட்

Tab ஐ அழுத்துவதன் மூலம் சூழல் மாறிகளை விரிவுபடுத்தும் ஒரு சிறந்த விருப்பமாகும்:

$ shopt -s direxpand
$ ./[TAB]     # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  заменяется на...
$ /full/path/to/home/folder

சுத்தமான வெளியீடு

4. செக்ஜாப்ஸ்

பின்னணியில் இன்னும் வேலைகள் இருந்தால் இந்த விருப்பம் அமர்விலிருந்து வெளியேறுவதை நிறுத்துகிறது.

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

$ shopt -s checkjobs
$ echo $$
68125             # <= ID процесса для оболочки
$ sleep 999 &
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ echo $$
68125             # <= ID процесса для оболочки тот же
$ exit
There are running jobs.
[1]+  Running                 sleep 999 &
$ exit
$ echo $$
$ 59316           # <= на этот раз ID процесса  изменился

மாற்று வல்லரசுகள்

5.குளோப்ஸ்டார்

இந்த விருப்பம் உங்களுக்கு மாற்று வல்லரசுகளை வழங்குகிறது! நீங்கள் உள்ளிட்டால்:

$ shopt -s globstar
$ ls **

ஷெல் அனைத்து கோப்பகங்களையும் துணை அடைவுகளையும் மீண்டும் மீண்டும் காண்பிக்கும்.

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

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6.extglob

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

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

இங்கே வடிவங்கள் அடைப்புக்குறிக்குள் வைக்கப்பட்டு செங்குத்து பட்டையால் பிரிக்கப்படுகின்றன. கிடைக்கக்கூடிய ஆபரேட்டர்கள் இங்கே:

? = கொடுக்கப்பட்ட வடிவங்களின் பூஜ்ஜியம் அல்லது ஒரு நிகழ்வோடு பொருந்துகிறது! = கொடுக்கப்பட்ட வடிவங்களுடன் பொருந்தாத அனைத்தையும் காட்டு * = பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட நிகழ்வுகள் + = ஒன்று அல்லது அதற்கு மேற்பட்ட நிகழ்வுகள் @ = சரியாக ஒரு நிகழ்வு

விபத்து பாதுகாப்பு

7. histverify

சுருக்கங்களின் வரலாற்றிலிருந்து விரைவான வெளியீட்டு கட்டளைகளைப் பயன்படுத்துவது முதலில் கொஞ்சம் பயமாக இருக்கும் !! и !$.

விருப்பம் histverify கட்டளை உண்மையில் இயங்குவதற்கு முன்பு பாஷ் அதை எவ்வாறு விளக்குகிறது என்பதைப் பார்க்க உங்களை அனுமதிக்கிறது:

$ shopt -s histverify
$ echo !$          # <= По нажатию Enter команда не запускается
$ echo histverify  # <= Она сначала демонстрируется на экране,
histverify         # <= а потом запускается 

8. நோக்லோபர்

மீண்டும், விபத்துக்களில் இருந்து பாதுகாக்க, அதாவது வழிமாற்று ஆபரேட்டரிடம் ஏற்கனவே இருக்கும் கோப்பை மேலெழுதுவதில் இருந்து (>) உங்களிடம் காப்புப் பிரதி இல்லை என்றால் இது ஒரு பேரழிவாக இருக்கலாம்.

விருப்பம் set -С அத்தகைய மேலெழுதுதலை தடை செய்கிறது. தேவைப்பட்டால், ஆபரேட்டரைப் பயன்படுத்தி பாதுகாப்பைத் தவிர்க்கலாம் >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

ஆதாரம்: www.habr.com

கருத்தைச் சேர்