አንዳንድ የ 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