เชเซเชเชฒเชพเช เชฌเซเชถ เชตเชฟเชเชฒเซเชชเซ เชเชพเชฃเซเชคเชพ เชเซ เช เชจเซ เชตเชพเชฐเชเชตเชพเชฐ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชฏ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชฃเชพ เชฒเซเชเซ เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชถเชฐเซเชเชคเชฎเชพเช เชฒเชเซ เชเซ
xtrace เชธเซเช เชเชฐเซ
เชกเชฟเชฌเชเซเชเช เชฎเชพเชเซ,
เชธเซเช เชเชฐเซ
เชญเซเชฒเชฅเซ เชฌเชนเชพเชฐ เชจเซเชเชณเชตเซเช เช เชฅเชตเชพ
เชธเซเช -เช errunset
เชฌเชนเชพเชฐ เชจเซเชเชณเชตเชพ เชฎเชพเชเซ เชเซ เชเชนเซเชตเชพเชฏ เชเชฒ เชธเซเช เชจ เชนเซเชฏ.
เชชเชฐเชเชคเซ เช
เชจเซเชฏ เชเชฃเชพ เชตเชฟเชเชฒเซเชชเซ เชเซ. เชเซเชเชฒเซเชเชตเชพเชฐ เชคเซเชเชจเซเช เชตเชฐเซเชฃเชจ เชฎเชพเชจเชธเชฎเชพเช เชเซเชฌ เช เชเซเชเชเชตเชฃเชญเชฐเซเชฏเซเช เชฐเซเชคเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฅเซ เชฎเซเช เชธเชฎเชเซเชคเซ เชธเชพเชฅเซ เช
เชนเซเช เชเซเชเชฒเซเช เชธเซเชฅเซ เชเชชเชฏเซเชเซ เชตเชธเซเชคเซเช เชเชเชคเซเชฐเชฟเชค เชเชฐเซ เชเซ.
เชจเซเชเชง: Macs เชชเชพเชธเซ bash เชจเซเช เชเซเชจเซเช เชธเชเชธเซเชเชฐเชฃ เชนเซเช เชถเชเซ เชเซ (3.x เชจเซ เชฌเชฆเชฒเซ 4.x) เชเซเชฏเชพเช เช เชฌเชงเชพ เชตเชฟเชเชฒเซเชชเซ เชเชชเชฒเชฌเซเชง เชจเชฅเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเซเช
set
เช
เชฅเชตเชพ shopt
?
เชฌเซเชถ เชตเชฟเชเชฒเซเชชเซ เชธเซเช เชเชฐเชตเชพเชจเซ เชฌเซ เชฐเซเชค เชเซ: เชธเซเชเซเชฐเชฟเชชเซเชเชฎเชพเชเชฅเซ เช
เชฅเชตเชพ เชเชฎเชพเชจเซเชก เชฒเชพเชเชจเชฎเชพเชเชฅเซ. เชคเชฎเซ เชฌเชฟเชฒเซเช-เชเชจ เชเชฆเซเชถเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ 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.เชธเซเชกเซเชธเซเชชเซเชฒ
เช เชธเซเชเชฟเชเช เชธเชพเชฅเซ, 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. direexpand
เช เชเช เชธเชฐเชธ เชตเชฟเชเชฒเซเชช เชเซ เชเซ เชเซเชฌ เชฆเชฌเชพเชตเซเชจเซ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซเชจเซ เชตเชฟเชธเซเชคเซเชค เชเชฐเซ เชเซ:
$ 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.extglob
เช เชตเชฟเชเชฒเซเชช เชเชตเชพ เชฒเชเซเชทเชฃเซเชจเซ เชธเชเซเชทเชฎ เชเชฐเซ เชเซ เชเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชฐเซเชเซเชฏเซเชฒเชฐ เชเชเซเชธเชชเซเชฐเซเชถเชจ เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒเชพ เชนเซเชฏ เชเซ. เชเซเชเชฒเซเชเชตเชพเชฐ เช เชเซเชฌ เชเชชเชฏเซเชเซ เชเซ:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
เช เชนเซเช เชชเซเชเชฐเซเชจ เชเซเชเชธเชฎเชพเช เชฎเซเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช เชจเซ เชเชญเซ เชชเชเซเชเซ เชฆเซเชตเชพเชฐเชพ เช เชฒเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชนเซเช เชเชชเชฒเชฌเซเชง เชเชชเชฐเซเชเชฐเซ เชเซ:
? = เชเชชเซเชฒ เชชเซเชเชฐเซเชจเชจเซ เชถเซเชจเซเชฏ เช เชฅเชตเชพ เชเช เชเชเชจเชพ เชธเชพเชฅเซ เชฎเซเชณ เชเชพเชฏ เชเซ ! = เชเชชเซเชฒ เชชเซเชเชฐเซเชจ เชธเชพเชฅเซ เชฎเซเชณ เชเชพเชคเซ เชจเชฅเซ เชคเซ เชฌเชงเซเช เชฌเชคเชพเชตเซ * = เชถเซเชจเซเชฏ เช เชฅเชตเชพ เชตเชงเซ เชเชเชจเชพเช + = เชเช เช เชฅเชตเชพ เชตเชงเซ เชเชเชจเชพเช @ = เชฌเชฐเชพเชฌเชฐ เชเช เชเชเชจเชพ
เช เชเชธเซเชฎเชพเชค เชฐเชเซเชทเชฃ
7. เชนเชฟเชธเซเชเชฐเซเชซเชพเช เชเชฐเซ
เชธเชเชเซเชทเซเชชเชจเชพ เชเชคเชฟเชนเชพเชธเชฎเชพเชเชฅเซ เชเชกเชชเซ เชฒเซเชเช เชเชฆเซเชถเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชคเซ เชชเชนเซเชฒเชพ เชฅเซเชกเซเช เชกเชฐเชพเชฎเชฃเซ เชนเซเช เชถเชเซ เชเซ !!
ะธ !$
.
เชตเชฟเชเชฒเซเชช histverify
เชเชฆเซเชถ เชตเชพเชธเซเชคเชตเชฎเชพเช เชเชพเชฒเซ เชคเซ เชชเชนเซเชฒเชพเช เชคเชฎเชจเซ เชฌเซ
เชถ เชเซเชตเซ เชฐเซเชคเซ เช
เชฐเซเชฅเชเชเชจ เชเชฐเซ เชเซ เชคเซ เชเซเชตเชพ เชฆเซ เชเซ:
$ 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