αααααΎα Bash αα½αα ααα½αααααΌαααΆαααααααΆαααααΆαα αααΆαα αα·αααααΌαααΆαααααΎααααΆααααΆααΉαααΆααα ααΆα§ααΆα ααα ααα»αααααΆα αααΎαααααααα ααΎαα’ααααα
ααααα -o xtrace
αααααΆααααΆαααααα α»α,
αααα»α -o errexit
α αΆαα αααααααα α»αα¬
set -o errunset
ααΎααααΈα αΆαα αα ααααα·αααΎα’αααα α ααΆαα·αααααΌαααΆααααααα
ααα»ααααααΆααααααΎαααΆα
αααΎααααα ααααααααα½αααΆααααΌαααΆααα·αααααΆαααα
ααααΌαα
αααααααααα
αααα»ααααΆααΆα ααΌα
αααααααα»αααΆααααααΌαα’αααΈαααααΆααααααααααααα»ααα
ααΈααα ααΆαα½αααΉαααΆαααααααα
α
αααΆαα Macs α’αΆα
ααΆαααααα
αΆαααα 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. direxpand
αααααΊααΆαααααΎαααααα’ααααααααΈαα’αααααα·ααααΆααααα α»α αααα
$ 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. Noclobber
ααΆααααΈααααααα ααΎααααΈααΆαααΆααααααΆααααΉααααααααααΆαα αααααΊααΈααΆααααααααΆααααΎα―αααΆααααααΆααα½α
α αΎαααΆαα½αααααα·ααααα·ααααααΌααα·α (>
) αααα’αΆα
ααΆααααααα αααααΆα ααααα·αααΎα’ααααα·αααΆαααΆαααααα»ααα»αα
αααααΎα set -Π‘
α αΆαααΆααααΆααααααααΆααααΎααααααα ααΎα
αΆαααΆα
α α’αααα’αΆα
ααααααΆαααΆαααΆααααααααΎααααα·ααααα·αα >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
ααααα: www.habr.com