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
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 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