Beberapa opsi Bash sudah dikenal dan sering digunakan. Misalnya, banyak yang menulis di awal naskah
set -o xtrace
untuk debugging,
set -o errexit
untuk keluar karena kesalahan atau
set -o errunset
untuk keluar jika variabel yang dipanggil tidak disetel.
Tetapi ada banyak pilihan lain. Kadang-kadang mereka terlalu bingung dijelaskan dalam laki-laki, jadi saya telah mengumpulkan di sini beberapa yang paling berguna, dengan penjelasan.
Catatan: Mac mungkin memiliki versi bash yang lebih lama (3.x, bukan 4.x), di mana tidak semua opsi ini tersedia. Dalam hal ini, lihat di sini atau di sini .set
atau shopt
?
Ada dua cara untuk mengatur parameter bash: dari skrip atau dari baris perintah. Anda dapat menggunakan
shopt
set
dan
shopt
. Keduanya mengubah perilaku shell, melakukan hal yang sama (dengan argumen yang berbeda), dan berbeda dalam
asalnya . Parameter
set
diwariskan atau dipinjam dari parameter shell lainnya, sementara parameter
shopt
dibuat dalam bash.
Jika Anda ingin melihat opsi saat ini, jalankan:
$ set -o $ shopt
Untuk mengaktifkan opsi di
set
, digunakan sintaks panjang atau pendek:
$ set -o errunset $ set -e
Efeknya sama.
Untuk menonaktifkan opsi, Anda harus memberi nilai plus bukannya minus:
$ set +e
Untuk waktu yang lama saya tidak dapat mengingat sintaks ini, karena logika tampaknya salah (minus menyalakan opsi, dan plus mematikannya).
shopt
menggunakan
shopt
(lebih logis)
-s
(set) dan
-u
(unset) untuk mengaktifkan dan menonaktifkan opsi:
$ shopt -s cdspell
Perubahan Direktori
Ada beberapa opsi yang membantu Anda bekerja dengan direktori.
1. cdspell
Dengan pengaturan ini, bash akan mulai memahami kesalahan ketik dan akan memindahkan Anda ke folder yang namanya Anda ketikkan kesalahan.
$ shopt -s cdspell $ mkdir abcdefg $ cd abcdeg abcdefg $ cd ..
Saya menggunakan opsi ini selama bertahun-tahun, dan sangat jarang (mungkin setahun sekali) itu membuat keputusan yang sangat aneh. Tetapi di hari-hari lain,
cdspell
menghemat waktu, secara harfiah setiap hari.
2. autocd
Jika Anda tidak siap dengan inefisiensi dari input
cd
berulang, maka Anda dapat mengatur opsi ini untuk pindah ke folder X jika perintah X tidak ada.
$ shopt -s autocd $ abcdefg $ cd ..
Dalam kombinasi dengan pelengkapan otomatis, ini memungkinkan Anda untuk dengan cepat beralih ke folder:
$ ./abc[TAB][RETURN] cd -- ./abcdefg
Hanya saja, jangan beri
rm -rf *
folder
rm -rf *
(ya, omong-omong, ini mungkin).
3. direxpand
Ini adalah opsi keren yang memperluas variabel lingkungan dengan menekan Tab:
$ shopt -s direxpand $ ./[TAB]
Bersihkan pintu keluar
4. checkjobs
Opsi ini menghentikan jalan keluar dari sesi jika pekerjaan masih berjalan di latar belakang.
Alih-alih keluar, daftar tugas yang tidak lengkap ditampilkan. Jika Anda masih ingin keluar, masukkan
exit
lagi.
$ shopt -s checkjobs $ echo $$ 68125
Kemampuan Substitusi
5. globstar
Opsi ini memberi Anda kemampuan substitusi supernormal! Jika Anda memasukkan:
$ shopt -s globstar $ ls **
maka shell akan menampilkan semua direktori dan subdirektori secara rekursif.
Dalam kombinasi dengan
direxpand
Anda dapat dengan cepat melihat semuanya di bawah dalam hierarki:
$ shopt -s direxpand $ ls **[TAB][TAB] Display all 2033 possibilities? (y or n)
6.extglob
Opsi ini mengaktifkan fungsi yang lebih sering dikaitkan dengan ekspresi reguler. Ini terkadang sangat berguna:
$ shopt -s extglob $ touch afile bfile cfile $ ls afile bfile cfile $ ls ?(a*|b*) afile bfile $ ls !(a*|b*) cfile
Di sini, pola ditempatkan dalam tanda kurung dan dipisahkan oleh batang vertikal. Berikut adalah operator yang tersedia:
? = cocok dengan nol atau satu kemunculan pola yang diberikan
! = tampilkan semua yang tidak cocok dengan pola yang diberikan
* = nol atau lebih banyak kejadian
+ = satu atau lebih kejadian
@ = tepat satu kejadian
Perlindungan kecelakaan
7. histverkan
Pada awalnya, bisa sedikit menakutkan menggunakan penggunaan perintah mulai cepat dari sejarah singkatan
!!
dan
!$
.
Opsi
histverify
memungkinkan
histverify
untuk terlebih dahulu melihat bagaimana Bash menginterpretasikan perintah sebelum benar-benar dimulai:
$ shopt -s histverify $ echo !$
8. Noclobber
Sekali lagi, untuk melindungi dari kecelakaan, yaitu dari menimpa file yang sudah ada dengan redirect operator (
>
). Ini bisa menjadi bencana jika Anda tidak memiliki cadangan.
Opsi
set -
melarang penulisan seperti itu. Jika perlu, Anda dapat memintas perlindungan menggunakan operator
>|
:
$ touch afile $ set -C $ echo something > afile -bash: afile: cannot overwrite existing file $ echo something >| afile $