Sababaraha pilihan Bash dipikanyaho sareng sering dianggo. Contona, loba jalma nulis dina awal naskah
atur -o xtrace
pikeun debugging,
atur -o errexit
kaluar ku kasalahan atawa
set -o errunset
kaluar lamun variabel disebut teu disetel.
Tapi aya loba pilihan séjén. Kadang-kadang aranjeunna digambarkeun teuing confusingly di manas, jadi Kuring geus dikumpulkeun sababaraha pang gunana dieu, kalawan katerangan.
Catetan: Mac tiasa gaduh versi bash anu langkung lami (3.x tinimbang 4.x) dimana henteu sadayana pilihan ieu sayogi. Dina hal ieu, tingali
set
atawa shopt
?
Aya dua cara pikeun nyetél pilihan bash: tina skrip atanapi tina garis paréntah. Anjeun tiasa make paréntah diwangun-di set
и shopt
. Duanana ngarobah paripolah cangkang, ngalakukeun loba hal anu sarua (kalawan alesan béda), tapi béda dina maranéhanana set
diwariskeun atawa injeuman tina parameter cangkang séjén, sedengkeun parameter shopt
dijieun dina bash.
Upami anjeun hoyong ningali pilihan ayeuna, jalankeun:
$ set -o
$ shopt
Pikeun ngaktipkeun pilihan dina set
Sintaksis panjang atanapi pondok dianggo:
$ set -o errunset
$ set -e
Pangaruhna sarua.
Pikeun nganonaktipkeun pilihan, anjeun kedah nempatkeun tambah tinimbang minus:
$ set +e
Pikeun lila kuring teu bisa apal sintaksis ieu kusabab logika sigana salah (tanda minus nyandak pilihan, sarta tanda tambah disables).
В shopt
(leuwih logis) bandéra dipaké pikeun ngaktipkeun sarta nganonaktipkeun pilihan -s
(set) jeung -u
(teu disetel):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Ngarobah diréktori
Aya sababaraha pilihan anu ngabantosan anjeun damel sareng diréktori.
1.cdspell
Kalayan setelan ieu, bash bakal mimiti ngarti typo sareng bakal mawa anjeun ka polder anu nami anjeun salah eja.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Kuring parantos nganggo pilihan ieu mangtaun-taun sareng jarang pisan (panginten sataun sakali) nyandak kaputusan anu anéh. Tapi dina poé séjén cdspell
ngaheéat waktos, sacara harfiah unggal poé.
2. autocd
Mun anjeun teu daék narima inefficiency sababaraha éntri cd
, teras anjeun tiasa nyetél pilihan ieu pikeun ngalih ka folder X upami paréntah X henteu aya.
$ shopt -s autocd
$ abcdefg
$ cd ..
Digabungkeun sareng autocomplete, ieu ngamungkinkeun anjeun gancang ngaluncat antara polder:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Ngan ulah ngaranan folder rm -rf *
(enya, ku jalan kitu, ieu mungkin).
3.dilegakeun
Ieu mangrupikeun pilihan anu saé anu ngalegaan variabel lingkungan ku mencét Tab:
$ shopt -s direxpand
$ ./[TAB] # заменяется на...
$ /full/path/to/current_working_folder
$ ~/[TAB] # заменяется на...
$ /full/path/to/home/folder
$ $HOME/[TAB] # заменяется на...
$ /full/path/to/home/folder
kaluaran bersih
4. checkjobs
Pilihan ieu ngeureunkeun kaluar tina sési upami masih aya padamelan di latar tukang.
Gantina kaluar, daptar tugas nu can rengse dipintonkeun. Upami anjeun masih hoyong kaluar, teras lebetkeun deui 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 процесса изменился
Substitusi adidaya
5.globstar
Pilihan ieu masihan anjeun kakuatan super substitusi! Lamun anjeun ngasupkeun:
$ shopt -s globstar
$ ls **
lajeng cangkang bakal némbongkeun sakabéh directories na subdirectories recursively.
bareng jeung direxpand
Anjeun tiasa gancang nempo sagalana handap dina hirarki:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6. extglob
Pilihan ieu ngamungkinkeun fitur anu langkung sering dikaitkeun sareng ekspresi biasa. Kadang-kadang ieu mangpaat pisan:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Di dieu pola disimpen dina kurung jeung dipisahkeun ku bar nangtung. Ieu mangrupikeun operator anu sayogi:
? = cocog sareng enol atanapi hiji kajadian tina pola anu dipasihkeun! = némbongkeun sagalana nu teu cocog jeung pola dibikeun * = enol atawa leuwih kajadian + = hiji atawa leuwih kajadian @ = persis hiji kajadian
Perlindungan kacilakaan
7. hisverifikasi
Bisa jadi saeutik pikasieuneun dina mimitina ngagunakeun paréntah peluncuran gancang ti sajarah singketan !!
и !$
.
Pilihan histverify
ngamungkinkeun anjeun mimiti ningali kumaha Bash napsirkeun paréntah sateuacan leres-leres dijalankeun:
$ shopt -s histverify
$ echo !$ # <= По нажатию Enter команда не запускается
$ echo histverify # <= Она сначала демонстрируется на экране,
histverify # <= а потом запускается
8. Noclobber
Sakali deui, pikeun ngajagaan tina kacilakaan, nyaéta tina nimpa file anu parantos aya sareng operator alihan (>
). Ieu tiasa janten musibah upami anjeun henteu gaduh cadangan.
Pilihan set -С
prohibits overwriting misalna. Upami diperyogikeun, anjeun tiasa ngalangkungan panyalindungan nganggo operator >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
sumber: www.habr.com