Dalapan Pilihan Bash Saeutik-Dipikawanoh

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 di dieu atawa di dieu.

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 asal usul... Pilihan 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

Tambahkeun komentar