แแแแแแ แแ Bash แแแ แแแแขแ แแแ แแแ แแ แแก แชแแแแแแ แแ แฎแจแแ แแ แแแแแแงแแแแแ. แแแแแแแแแ, แแแแ แ แแแแแแแแ แฌแแ แก แกแชแแแแ แแก แแแกแแฌแงแแกแจแ
แแแแแแแฅแขแ -o xtrace
แแแแแ แแแแกแแแแก,
แแแแ แแแ -o errexit
แจแแชแแแแแ แแแกแแแ แแ
แแแแแแแฅแขแ -o errunset
แแแกแแกแแแแแแ, แแฃ แแแแแซแแฎแแแฃแแ แชแแแแแ แแ แแ แแก แแแงแแแแแฃแแ.
แแแแ แแ แแแแ แ แกแฎแแ แแแ แแแแขแแ. แแแแฏแแ แแกแแแ แแแแแแขแแ แแแแแแแแแแแแ แแ แแก แแฆแฌแแ แแแ แแแแแกแแแจแ, แแแแขแแ แแ แจแแแแ แแแ แแแแแแ แแ แงแแแแแแ แกแแกแแ แแแแแ แแฅ, แแแแแแ แขแแแแ.
แจแแแแจแแแ: Mac-แแแก แจแแแซแแแแ แฐแฅแแแแแ bash-แแก แซแแแแ แแแ แกแแ (3.x แแแแ แ 4.x), แกแแแแช แงแแแแ แแก แแแ แแแแขแ แแ แแ แแก แฎแแแแแกแแฌแแแแแ. แแ แจแแแแฎแแแแแจแ แแฎ
set
แแ shopt
?
แแ แกแแแแแก แแ แ แแแ bash แแแ แแแแขแ แแแแก แแแกแแงแแแแแแแ: แกแแ แแแขแแแแ แแ แแ แซแแแแแแก แฎแแแแแแ. แจแแแแซแแแแ แแแแแแงแแแแ แฉแแจแแแแแฃแแ แแ แซแแแแแแแ 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.cdspell
แแ แแแ แแแแขแ แแ, bash แแแแฌแงแแแก แแแญแแแแแ แจแแชแแแแแแแก แแแแแแแก แแ แแแแแแแงแแแแ แกแแฅแแฆแแแแแจแ, แ แแแแแก แกแแฎแแแแช แแ แแกแฌแแ แแ แแแฌแแ แแ.
$ 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. แแแ แแแแแ แ แแแคแแ แแแแแ
แแก แแ แแก แแแแแ แ แแแ แแแแขแ, แ แแแแแแช แแคแแ แแแแแก แแแ แแแแก แชแแแแแแแก 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. แแแแจแแแแ แกแแแฃแจแแแแแ
แแก แแแ แแแแขแ แ แฌแงแแแขแก แกแแกแแแแแ แแแแแกแแแแก, แแฃ แฏแแ แแแแแ แแ แแก แกแแแฃแจแแแแแ แแแจแแแแฃแแ แคแแแแ.
แแแกแแแแก แแแชแแแแ, แแแฉแแแแแแแ แแแฃแแแแแ แแแแแ แแแแแแแแแแแก แกแแ. แแฃ แแแแแช แแกแฃแ แ แแแกแแแ, แจแแแแ แฎแแแแฎแแ 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. แแแแแแแแแ แ
แแกแแ, แฃแแแแฃแ แ แจแแแแฎแแแแแแแกแแแ แแแแแก แแแกแแชแแแแ, แแแ แซแแ, แคแแแแแก แแแแแฌแแ แแกแแแ, แ แแแแแแช แฃแแแ แแ แกแแแแแก แแแแแแแกแแแแ แแแแแก แแแแ แแขแแ แแแ (>
). แแก แจแแแซแแแแ แแงแแก แแแขแแกแขแ แแคแ, แแฃ แแ แแแฅแแ แกแแ แแแแ แแ แกแแจแฃแแแแแ.
แแแ แแแแขแ set -ะก
แแ แซแแแแแก แแกแแ แแแแแฌแแ แแก. แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แจแแแแซแแแแ แแแแ แแแก แแแแแ แแแชแแ แแแแ แแขแแ แแก แแแแแงแแแแแแ >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
แฌแงแแ แ: www.habr.com