අනපේක්ෂිත Bash විචල්‍ය හතක්

ගැන සටහන් මාලාව දිගටම කරගෙන යනවා අඩුවෙන් දන්නා කාර්යයන් bash, ඔබ නොදන්නා විචල්‍ය හතක් මම ඔබට පෙන්වන්නම්.

1) PROMPT_COMMAND

විවිධ ප්‍රයෝජනවත් තොරතුරු පෙන්වීමට විමසුම හසුරුවන්නේ කෙසේදැයි ඔබ දැනටමත් දැන සිටිය හැක, නමුත් විමසුම පෙන්වන සෑම අවස්ථාවකම ඔබට shell විධානයක් ක්‍රියාත්මක කළ හැකි බව සියලු දෙනා නොදනිති.

ඇත්ත වශයෙන්ම, බොහෝ සංකීර්ණ ප්‍රොම්ප්ට් හසුරුවන්නන් මෙම විචල්‍යය භාවිතා කරන්නේ විධාන ක්‍රියාත්මක කිරීමට ප්‍රේරකයේ ප්‍රදර්ශනය වන තොරතුරු රැස් කිරීමටයි.

මෙය නව කවචයක ධාවනය කර සැසියට සිදුවන්නේ කුමක්දැයි බලන්න:

$ 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 sudo su -

හැඩතල ගැන්වීමෙන් අනුලකුණු ගැලපේ 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 එය ඔබගේ වත්මන් bash shell එකෙන් ඔබව වෙනත් "මාපිය" කවචයකට ගෙන යයිද, නැතහොත් එය කොන්සෝල කවුළුව සම්පූර්ණයෙන්ම වසා දමයිද?

මෙම විචල්‍යය ඔබ බාෂ් කවචය තුළ කෙතරම් ගැඹුරට කැදලි කර ඇත්ද යන්න නිරීක්ෂණය කරයි. ඔබ නව පර්යන්තයක් සාදන්නේ නම්, එය 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

අදහස් එක් කරන්න