ஏழு எதிர்பாராத பாஷ் மாறிகள்

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

1) PROMPT_COMMAND

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

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

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

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

ஓடினால் history கன்சோலில், உங்கள் கணக்கின் கீழ் ஏற்கனவே செயல்படுத்தப்பட்ட கட்டளைகளின் பட்டியலைப் பெறுவீர்கள்.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

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

1871 நான் இதை இயக்கியது: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 நான் இதை இயக்கினேன்: 01/05/19 13:38:19 curl bbc.co.uk 1873 நான் இதை ஓடினேன் : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 நான் இதை இயக்கினேன்: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 நான் இதை இயக்கினேன்: 01 /05/19 13:39:25 சுடோ சு -

வடிவமைத்தல் எழுத்துகளுடன் பொருந்துகிறது man date.

3) CDPATH

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

போன்ற PATH, மாறி CDPATH பெருங்குடலால் பிரிக்கப்பட்ட பாதைகளின் பட்டியல். நீங்கள் கட்டளையை இயக்கும் போது cd தொடர்புடைய பாதையுடன் (அதாவது முன்னணி சாய்வு இல்லை), முன்னிருப்பாக ஷெல் உங்கள் உள்ளூர் கோப்புறையில் பெயர்களைப் பொருத்து பார்க்கிறது. CDPATH நீங்கள் செல்ல விரும்பும் கோப்பகத்திற்கு நீங்கள் கொடுத்த பாதைகளில் தேடும்.

நீங்கள் நிறுவினால் CDPATH இந்த வழியில்:

$ CDPATH=/:/lib

பின்னர் உள்ளிடவும்:

$ cd /home
$ cd tmp

பின்னர் நீங்கள் எப்போதும் முடிவடைவீர்கள் /tmp நீங்கள் எங்கிருந்தாலும் பரவாயில்லை.

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

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

அச்சச்சோ!

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

என்னுடையது தொடக்கப் புள்ளியால் அமைக்கப்பட்டுள்ளது:

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

நீங்கள் எப்போதாவது யோசித்திருக்கிறீர்களா, தட்டச்சு செய்கிறீர்கள் exit அது உங்களை உங்கள் தற்போதைய பாஷ் ஷெல்லிலிருந்து வேறொரு "பெற்றோர்" ஷெல்லுக்கு அழைத்துச் செல்லுமா அல்லது கன்சோல் சாளரத்தை முழுவதுமாக மூடுமா?

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

$ echo $SHLVL
1

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

$ bash
$ echo $SHLVL
2

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

5) LINENO

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

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

ஸ்கிரிப்ட்களை பிழைத்திருத்தம் செய்யும் போது இது பெரும்பாலும் பயன்படுத்தப்படுகிறது. போன்ற வரிகளைச் செருகுகிறது echo DEBUG:$LINENO, ஸ்கிரிப்ட்டில் நீங்கள் எங்கே இருக்கிறீர்கள் (அல்லது இல்லை) என்பதை விரைவாகத் தீர்மானிக்கலாம்.

6) REPLY

என்னைப் போலவே, நீங்கள் வழக்கமாக இது போன்ற குறியீட்டை எழுதினால்:

$ read input
echo do something with $input

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

$ read
echo do something with $REPLY

இதுவும் அதையே செய்கிறது.

7) TMOUT

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

ஒரு குறிப்பிட்ட எண்ணிக்கையிலான வினாடிகளுக்கு எதுவும் உள்ளிடப்படாவிட்டால், ஷெல் வெளியேறும்.

அதாவது, இது ஒரு மாற்று sleep 1 && exit:

$ TMOUT=1

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

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