ಎಂಟು ಕಡಿಮೆ-ತಿಳಿದಿರುವ ಬ್ಯಾಷ್ ಆಯ್ಕೆಗಳು

ಕೆಲವು ಬ್ಯಾಷ್ ಆಯ್ಕೆಗಳು ಚೆನ್ನಾಗಿ ತಿಳಿದಿವೆ ಮತ್ತು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಅನೇಕ ಜನರು ಸ್ಕ್ರಿಪ್ಟ್ ಆರಂಭದಲ್ಲಿ ಬರೆಯುತ್ತಾರೆ

ಸೆಟ್ -ಒ ಎಕ್ಸ್ಟ್ರೇಸ್

ಡೀಬಗ್ ಮಾಡಲು,

ಸೆಟ್ -ಒ ಎರೆಕ್ಸಿಟ್

ತಪ್ಪಾಗಿ ನಿರ್ಗಮಿಸಲು ಅಥವಾ

ಸೆಟ್ -ಒ ಎರನ್‌ಸೆಟ್

ಕಾಲ್ಡ್ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ ನಿರ್ಗಮಿಸಲು.

ಆದರೆ ಇನ್ನೂ ಹಲವು ಆಯ್ಕೆಗಳಿವೆ. ಕೆಲವೊಮ್ಮೆ ಅವುಗಳನ್ನು ಮನಸ್‌ನಲ್ಲಿ ತುಂಬಾ ಗೊಂದಲಮಯವಾಗಿ ವಿವರಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ನಾನು ಇಲ್ಲಿ ಕೆಲವು ಹೆಚ್ಚು ಉಪಯುಕ್ತವಾದವುಗಳನ್ನು ವಿವರಣೆಯೊಂದಿಗೆ ಸಂಗ್ರಹಿಸಿದ್ದೇನೆ.

ಗಮನಿಸಿ: ಮ್ಯಾಕ್‌ಗಳು ಬ್ಯಾಷ್‌ನ ಹಳೆಯ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರಬಹುದು (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. ಆಟೋಸಿಡಿ

ನೀವು ಬಹು ನಮೂದುಗಳ ಅಸಮರ್ಥತೆಯನ್ನು ಸ್ವೀಕರಿಸಲು ಸಿದ್ಧರಿಲ್ಲದಿದ್ದರೆ cd, ನಂತರ ನೀವು X ಆಜ್ಞೆಯು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದರೆ X ಫೋಲ್ಡರ್‌ಗೆ ಸರಿಸಲು ಈ ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿಸಬಹುದು.

$ shopt -s autocd
$ abcdefg
$ cd ..

ಸ್ವಯಂಪೂರ್ಣತೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸಿ, ಇದು ಫೋಲ್ಡರ್‌ಗಳ ನಡುವೆ ತ್ವರಿತವಾಗಿ ನೆಗೆಯುವುದನ್ನು ಅನುಮತಿಸುತ್ತದೆ:

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

ಫೋಲ್ಡರ್ ಅನ್ನು ಹೆಸರಿಸಬೇಡಿ rm -rf * (ಹೌದು, ಮೂಲಕ, ಇದು ಸಾಧ್ಯ).

3. ಡೈರೆಕ್ಸ್ಪಾಂಡ್

ಟ್ಯಾಬ್ ಅನ್ನು ಒತ್ತುವ ಮೂಲಕ ಪರಿಸರ ವೇರಿಯಬಲ್‌ಗಳನ್ನು ವಿಸ್ತರಿಸುವ ತಂಪಾದ ಆಯ್ಕೆಯಾಗಿದೆ:

$ 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 ಅದು ನಿಜವಾಗಿ ರನ್ ಆಗುವ ಮೊದಲು ಬ್ಯಾಷ್ ಆಜ್ಞೆಯನ್ನು ಹೇಗೆ ಅರ್ಥೈಸುತ್ತದೆ ಎಂಬುದನ್ನು ಮೊದಲು ನೋಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ:

$ 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

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