Wolung Pilihan Bash Cilik-Dikenal

Sawetara opsi Bash kondhang lan asring digunakake. Contone, akeh wong nulis ing wiwitan naskah

atur -o xtrace

kanggo debugging,

atur -o errexit

metu kanthi salah utawa

set -o errunset

kanggo metu yen variabel sing diarani ora disetel.

Nanging ana akeh opsi liyane. Kadang padha diterangake banget confusingly ing manas, aku wis diklumpukake sawetara sing paling migunani kene, karo panjelasan.

Cathetan: Mac bisa uga duwe versi bash sing luwih lawas (3.x tinimbang 4.x) sing ora kabeh opsi iki kasedhiya. Ing kasus iki, ndeleng kene utawa kene.

set utawa shopt?

Ana rong cara kanggo nyetel opsi bash: saka skrip utawa saka baris perintah. Sampeyan bisa nggunakake printah dibangun ing set и shopt. Loro-lorone ngganti prilaku cangkang, nindakake perkara sing padha (kanthi argumen sing beda), nanging beda-beda asale... Pilihan set diwarisake utawa dipinjam saka paramèter cangkang liyane, dene paramèter shopt digawe ing bash.

Yen sampeyan pengin ndeleng opsi saiki, bukak:

$ set -o
$ shopt

Kanggo ngaktifake pilihan ing set Sintaksis dawa utawa cendhak digunakake:

$ set -o errunset
$ set -e

Efek sing padha.

Kanggo mateni pilihan kasebut, sampeyan kudu menehi plus tinimbang minus:

$ set +e

Kanggo dangu aku ora bisa ngelingi sintaks iki amarga logika katon salah (tandha minus mbisakake pilihan, lan tandha plus mateni).

Π’ shopt (luwih logis) gendera digunakake kanggo ngaktifake lan mateni opsi -s (set) lan -u (ora disetel):

$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off

Ngganti direktori

Ana sawetara opsi sing mbantu sampeyan nggarap direktori.

1.cdspell

Kanthi setelan iki, bash bakal mulai ngerti kesalahan ketik lan bakal nggawa sampeyan menyang folder sing jeneng sampeyan salah eja.

$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..

Aku wis nggunakake pilihan iki kanggo akèh taun lan arang banget (bisa sapisan taun) iku nggawe kaputusan aneh banget. Nanging ing dina liyane cdspell ngirit wektu, secara harfiah saben dina.

2. autocd

Yen sampeyan ora gelem nampa inefficiency saka sawetara entri cd, banjur sampeyan bisa nyetel pilihan iki kanggo pindhah menyang folder X yen printah X ora ana.

$ shopt -s autocd
$ abcdefg
$ cd ..

Digabungake karo autocomplete, iki ngidini sampeyan mlumpat kanthi cepet ing antarane folder:

$ ./abc[TAB][RETURN]
cd -- ./abcdefg

Cukup ora jeneng folder rm -rf * (ya, kanthi cara iki, bisa uga).

3. diexpand

Iki minangka pilihan keren sing ngembangake variabel lingkungan kanthi mencet Tab:

$ shopt -s direxpand
$ ./[TAB]     # замСняСтся Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB]     # замСняСтся Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] #  замСняСтся Π½Π°...
$ /full/path/to/home/folder

Output resik

4. priksa

Opsi iki mandheg metu saka sesi yen isih ana proyek sing mlaku ing latar mburi.

Tinimbang metu, dhaptar tugas sing durung rampung ditampilake. Yen sampeyan isih pengin metu, banjur mlebu maneh 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 superpowers

5. globstar

Pilihan iki menehi superpowers substitusi! Yen sampeyan mlebu:

$ shopt -s globstar
$ ls **

banjur cangkang bakal nuduhake kabeh direktori lan subdirektori kanthi rekursif.

magepokan karo direxpand Sampeyan bisa kanthi cepet ndeleng kabeh sing luwih murah ing hirarki:

$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n) 

6. extglob

Opsi iki mbisakake fitur sing luwih umum digandhengake karo ekspresi reguler. Kadhangkala iki migunani banget:

$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile

Ing kene pola diselehake ing kurung lan dipisahake kanthi garis vertikal. Mangkene operator sing kasedhiya:

? = cocog karo nol utawa siji kedadeyan saka pola sing diwenehake! = nuduhake kabeh sing ora cocog karo pola sing diwenehake * = nol utawa luwih kedadeyan + = siji utawa luwih kedadeyan @ = persis siji kedadeyan

Proteksi kacilakan

7. hisverifikasi

Bisa uga rada medeni ing wiwitan nggunakake perintah peluncuran cepet saka riwayat singkatan !! ΠΈ !$.

Pilihan histverify ngidini sampeyan ndeleng kepiye Bash napsirake prentah kasebut sadurunge mlaku:

$ shopt -s histverify
$ echo !$          # <= По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ запускаСтся
$ echo histverify  # <= Она сначала дСмонстрируСтся Π½Π° экранС,
histverify         # <= Π° ΠΏΠΎΡ‚ΠΎΠΌ запускаСтся 

8. Noclobber

Maneh, kanggo nglindhungi saka kacilakan, yaiku saka nimpa file sing wis ana karo operator pangalihan (>). Iki bisa dadi bilai yen sampeyan ora duwe serep.

Pilihan set -Π‘ nglarang overwriting kuwi. Yen perlu, sampeyan bisa ngliwati proteksi nggunakake operator >|:

$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$

Source: www.habr.com

Add a comment