ಏಳು ಅನಿರೀಕ್ಷಿತ ಬ್ಯಾಷ್ ವೇರಿಯಬಲ್‌ಗಳು

ಬಗ್ಗೆ ಟಿಪ್ಪಣಿಗಳ ಸರಣಿಯನ್ನು ಮುಂದುವರಿಸುವುದು ಕಡಿಮೆ ಪರಿಚಿತ ಕಾರ್ಯಗಳು ಬಾಷ್, ನಿಮಗೆ ತಿಳಿದಿಲ್ಲದ ಏಳು ಅಸ್ಥಿರಗಳನ್ನು ನಾನು ನಿಮಗೆ ತೋರಿಸುತ್ತೇನೆ.

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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ