แƒ แƒ•แƒ แƒžแƒแƒขแƒแƒ แƒ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜ แƒ‘แƒแƒจแƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ 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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ