ስምንት ትንሽ-የታወቁ የባሽ አማራጮች

አንዳንድ የ Bash አማራጮች በጣም የታወቁ እና ብዙ ጊዜ ጥቅም ላይ ይውላሉ. ለምሳሌ, ብዙ ሰዎች በስክሪፕቱ መጀመሪያ ላይ ይጽፋሉ

አዘጋጅ -o xtrace

ለማረም ፣

አዘጋጅ -o errexit

በስህተት ለመውጣት ወይም

set -o errunset

የተጠራው ተለዋዋጭ ካልተዋቀረ ለመውጣት.

ግን ሌሎች ብዙ አማራጮች አሉ. አንዳንድ ጊዜ በማናስ በጣም ግራ በሚያጋባ ሁኔታ ይገለጻሉ፣ ስለዚህ ከማብራሪያ ጋር በጣም ጠቃሚ የሆኑትን እዚህ ሰብስቤያለሁ።

ማሳሰቢያ፡ ማክ እነዚህ ሁሉ አማራጮች የማይገኙበት የቆየ የ bash ስሪት (ከ3.x ይልቅ 4.x) ሊኖራቸው ይችላል። በዚህ ሁኔታ, ይመልከቱ እዚህ ወይም እዚህ.

set ወይም shopt?

የ bash አማራጮችን ለማዘጋጀት ሁለት መንገዶች አሉ-ከስክሪፕት ወይም ከትእዛዝ መስመር. አብሮ የተሰሩ ትዕዛዞችን መጠቀም ይችላሉ። set и shopt. ሁለቱም የቅርፊቱን ባህሪ ይለውጣሉ, ብዙ ተመሳሳይ ነገር ያደርጋሉ (በተለያዩ ክርክሮች), ግን በእነሱ ይለያያሉ መነሻ... አማራጮች set ከሌሎች ዛጎሎች መለኪያዎች የተወረሱ ወይም የተበደሩ ናቸው, መለኪያዎች ሲሆኑ shopt በ bash ውስጥ የተፈጠረ.

አሁን ያሉትን አማራጮች ማየት ከፈለጉ፣ ያሂዱ፡-

$ set -o
$ shopt

ውስጥ ያለውን አማራጭ ለማንቃት set ረጅም ወይም አጭር አገባብ ጥቅም ላይ ይውላል፡-

$ set -o errunset
$ set -e

ውጤቱም ተመሳሳይ ነው.

አማራጩን ለማሰናከል ከመቀነስ ይልቅ ፕላስ ማስቀመጥ ያስፈልግዎታል፡-

$ set +e

ይህንን አገባብ ለረጅም ጊዜ ማስታወስ አልቻልኩም ምክንያቱም አመክንዮው የተሳሳተ መስሎ ነበር (የመቀነስ ምልክት አማራጩን ያስችለዋል፣ እና የመደመር ምልክት ያሰናክለዋል)።

В shopt (የበለጠ ምክንያታዊ) ባንዲራዎች አማራጮችን ለማንቃት እና ለማሰናከል ጥቅም ላይ ይውላሉ -s (ስብስብ) እና -u (ያልተቀናበረ):

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

ማውጫዎችን በመቀየር ላይ

ከማውጫዎች ጋር ለመስራት የሚያግዙዎት ብዙ አማራጮች አሉ።

1.cdspell

በዚህ ቅንብር, bash የፊደል አጻጻፍ መረዳት ይጀምራል እና ስሙን ወደ የተሳሳተ ፊደል ይወስደዎታል.

$ 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.ዲሬክስፓንድ

ይህ ትርን በመጫን የአካባቢ ተለዋዋጮችን የሚያሰፋ አሪፍ አማራጭ ነው።

$ 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.globstar

ይህ አማራጭ ኃያላን ምትክ ይሰጥዎታል! ከገቡ፡-

$ 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 በመጀመሪያ Bash ትዕዛዙን በትክክል ከመሮጡ በፊት እንዴት እንደሚተረጉም እንድታዩ ያስችልዎታል፡-

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

ምንጭ: hab.com

አስተያየት ያክሉ