ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΈ Bash Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠΊΡΠΈΠΏΡΠ° ΠΏΠΈΡΡΡ
set -o xtrace
Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ,
set -o errexit
Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π° ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΈΠ»ΠΈ
set -o errunset
Π΄Π»Ρ Π²ΡΡ ΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ Π²ΡΠ·Π²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°.
ΠΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ
ΠΎΠΏΡΠΈΠΉ. ΠΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΡΡΠ°Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΌΠ°Π½Π°Ρ
, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠΎΠ±ΡΠ°Π» Π·Π΄Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
, Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π½Π° Mac ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ 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
(set) ΠΈ -u
(unset):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ.
1. cdspell
Π‘ ΡΠ°ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ bash Π½Π°ΡΠ½ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π²Π°Ρ Π² ΠΏΠ°ΠΏΠΊΡ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Π½Π°Π±ΡΠ°Π»ΠΈ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΡΡ ΠΎΠΏΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ, ΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΎ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°Π· Π² Π³ΠΎΠ΄) ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎ Π·Π°ΡΠΎ Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π½ΠΈ cdspell
ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ, Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
2. autocd
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π³ΠΎΡΠΎΠ²Ρ ΠΌΠΈΡΠΈΡΡΡΡ Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° cd
, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΠΏΠΊΡ Π₯, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π₯ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
$ shopt -s autocd
$ abcdefg
$ cd ..
Π ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΡΡΠ³Π°ΡΡ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Π’ΠΎΠ»ΡΠΊΠΎ Π½Π΅ Π½Π°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ rm -rf *
(Π΄Π°, ΠΊΡΡΠ°ΡΠΈ, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).
3. direxpand
ΠΡΠΎ ΠΊΠ»Π°ΡΡΠ½Π°Ρ ΠΎΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Tab:
$ shopt -s direxpand
$ ./[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
Π§ΠΈΡΡΡΠΉ Π²ΡΡ ΠΎΠ΄
4. checkjobs
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΡΠ΅Π°Π½ΡΠ°, Π΅ΡΠ»ΠΈ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ.
ΠΠΌΠ΅ΡΡΠΎ Π²ΡΡ
ΠΎΠ΄Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ. ΠΡΠ»ΠΈ Π²Ρ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΡΠΉΡΠΈ, ΡΠΎ Π΅ΡΡ ΡΠ°Π· Π²Π²Π΅Π΄ΠΈΡΠ΅ 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
ΠΠΎΠ½Π°ΡΠ°Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°ΡΠ½ΠΎΠ²Π°ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΡΡΡΡΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ !!
ΠΈ !$
.
ΠΠΏΡΠΈΡ 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
$
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com