ืขืืืขืืข Bash ืึธืคึผืฆืืขืก ืืขื ืขื ืืึทืืืืกื ืืื ืึธืคื ืืขื ืืฆื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืคืืืข ืืขื ืืฉื ืฉืจืืึทืื ืืื ืื ืึธื ืืืื ืคืื ืื ืฉืจืืคื
ืฉืืขืื-ืึธ ืงืกืืจืึทืกืข
ืคึฟืึทืจ ืืืืึทืืื ื,
ืฉืืขืื -ืึธ ืขืจืจืขืงืกืื
ืฆื ืึทืจืืืกืืึทื ื ืืืจื ืืจืืึทื ืึธืืขืจ
ืฉืืขืื -ืึธ ืขืจืจืึทื ืกืขื
ืฆื ืึทืจืืืกืืึทื ื ืืืื ืื ืืขืจืืคึฟื ืืืึทืืขืืืืืง ืืื ื ืืฉื ืืึทืฉืืืื.
ืืืขืจ ืขืก ืืขื ืขื ืคืืืข ืื ืืขืจืข ืึธืคึผืฆืืขืก. ืืื ืืื ืืขื ืขื ืืืกืงืจืืืื ืฆื ืงืึทื ืคืืืืื ื ืืื ืืึทื ืึทืก, ืึทืืื ืืื ืืึธืื ืืขืืืืื ืขืืืขืืข ืคืื โโโโืื ืืขืจืกื ื ืืฆืืง ืึธื ืขืก ืืึธ, ืืื ืืขืจืงืืขืจืื ื.
ืืึทืืขืจืงืื ื: ืืึทืงืก ืงืขื ืืึธืื ืึทื ืขืืืขืจืข ืืืขืจืกืืข ืคืื โโโโืืึทืฉ (3.x ืืื ืืื 4.x) ืืื ื ืื ืึทืืข ืื ืึธืคึผืฆืืขืก ืืขื ืขื ืื ืืืฆื. ืืื ืืขื ืคืึทื, ืืขื
set
ืึธืืขืจ shopt
?
ืขืก ืืขื ืขื ืฆืืืื ืืืขืื ืฆื ืฉืืขืื ืืึทืฉ ืึธืคึผืฆืืขืก: ืคึฟืื ืึท ืฉืจืืคื ืึธืืขืจ ืคึฟืื ืื ืืึทืคึฟืขืื ืฉืืจื. ืืืจ ืงืขื ืขื ื ืืฆื ืืขืืืื-ืืื ืงืึทืืึทื ืื 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. 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.ืืืึธืืกืืึทืจ
ืืขื ืึธืคึผืฆืืข ืืื ืืืจ ืกืึทืืกืืืืืฉืึทื ืกืืคึผืขืจืคึผืึทืืขืจื! ืืืื ืืืจ ืึทืจืืึทื:
$ shopt -s globstar
$ ls **
ืืขืจื ืึธื ืื ืฉืึธื ืืืขื ืืืืึทืื ืึทืืข ืืืืจืขืงืืขืจืื ืืื ืกืืืืืจืขืงืืึธืจืืขืก ืจืขืงืืจืกืืืืขืื.
ืฆืืืึทืืขื ืืื direxpand
ืืืจ ืงืขื ืขื ืืขืฉืืืื ื ืืขื ืึทืืฅ ื ืืืขืจืืงืขืจ ืืื ืื ืืืืขืจืึทืจืงื:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.ืขืงืกืืืืึธื
ืืขืจ ืึธืคึผืฆืืข ืื ืืืืึทืื ืคึฟืขืึดืงืืืื ืืืึธืก ืืขื ืขื ืืขืจ ืงืึทืืึทื ืื ืคึฟืึทืจืืื ืื ืืื ืจืขืืืืขืจ ืืืืกืืจืืงื. ืืื ืืึธืก ืืื ืืืืขืจ ื ืืฆืืง:
$ 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
$
ืืงืืจ: www.habr.com