Beberapa opsi Bash sudah terkenal dan sering digunakan. Misalnya banyak orang menulis di awal naskah
atur -o xtrace
untuk debugging,
set -o salah
untuk keluar karena kesalahan atau
set -o errunset
untuk keluar jika variabel yang dipanggil tidak disetel.
Tapi ada banyak pilihan lain. Terkadang penjelasannya terlalu membingungkan di mana, jadi saya telah mengumpulkan beberapa yang paling berguna di sini, beserta penjelasannya.
Catatan: Mac mungkin memiliki versi bash yang lebih lama (3.x, bukan 4.x) yang tidak semua opsi ini tersedia. Dalam hal ini, lihat
set
ΠΈΠ»ΠΈ shopt
?
Ada dua cara untuk menyetel opsi bash: dari skrip atau dari baris perintah. Anda dapat menggunakan perintah bawaan set
ΠΈ shopt
. Keduanya mengubah perilaku shell, melakukan hal yang hampir sama (dengan argumen berbeda), namun berbeda dalam hal mereka set
diwarisi atau dipinjam dari parameter shell lain, sedangkan parameter shopt
dibuat di bash.
Jika Anda ingin melihat opsi saat ini, jalankan:
$ set -o
$ shopt
Untuk mengaktifkan opsi di set
Sintaks panjang atau pendek digunakan:
$ set -o errunset
$ set -e
Efeknya sama.
Untuk menonaktifkan opsi ini, Anda perlu memberi tanda plus, bukan minus:
$ set +e
Untuk waktu yang lama saya tidak dapat mengingat sintaks ini karena logikanya tampak salah (tanda minus mengaktifkan opsi, dan tanda plus menonaktifkannya).
Π shopt
Bendera (lebih logis) digunakan untuk mengaktifkan dan menonaktifkan opsi -s
(mengatur) dan -u
(tidak disetel):
$ shopt -s cdspell # <= on
$ shopt -u cdspell # <= off
Mengubah direktori
Ada beberapa opsi yang membantu Anda bekerja dengan direktori.
1.mantra cd
Dengan pengaturan ini, bash akan mulai memahami kesalahan ketik dan akan membawa Anda ke folder yang namanya salah eja.
$ shopt -s cdspell
$ mkdir abcdefg
$ cd abcdeg
abcdefg
$ cd ..
Saya telah menggunakan opsi ini selama bertahun-tahun dan sangat jarang (mungkin setahun sekali) opsi ini membuat keputusan yang sangat aneh. Namun di hari lain cdspell
menghemat waktu, secara harfiah setiap hari.
2. autocd
Jika Anda tidak mau menerima ketidakefisienan beberapa entri cd
, maka Anda dapat mengatur opsi ini untuk pindah ke folder X jika perintah X tidak ada.
$ shopt -s autocd
$ abcdefg
$ cd ..
Dikombinasikan dengan pelengkapan otomatis, ini memungkinkan Anda berpindah antar folder dengan cepat:
$ ./abc[TAB][RETURN]
cd -- ./abcdefg
Hanya saja, jangan beri nama foldernya rm -rf *
(ya, omong-omong, ini mungkin).
3. memperluas
Ini adalah opsi keren yang memperluas variabel lingkungan dengan menekan Tab:
$ shopt -s direxpand
$ ./[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/current_working_folder
$ ~/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
$ $HOME/[TAB] # Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π°...
$ /full/path/to/home/folder
keluaran bersih
4. pekerjaan pemeriksaan
Opsi ini berhenti keluar dari sesi jika masih ada pekerjaan yang berjalan di latar belakang.
Alih-alih keluar, daftar tugas yang belum selesai malah ditampilkan. Jika masih ingin keluar, masuk lagi 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 ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ
Kekuatan super substitusi
5.bintang global
Opsi ini memberi Anda kekuatan super substitusi! 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 bagian bawah hierarki:
$ shopt -s direxpand
$ ls **[TAB][TAB]
Display all 2033 possibilities? (y or n)
6.extglob
Opsi ini mengaktifkan fitur yang lebih umum dikaitkan dengan ekspresi reguler. Terkadang ini 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 garis vertikal. Berikut operator yang tersedia:
? = cocok dengan nol atau satu kemunculan pola yang diberikan! = tampilkan segala sesuatu yang tidak sesuai dengan pola yang diberikan * = nol atau lebih kemunculan + = satu atau lebih kemunculan @ = tepat satu kemunculan
Perlindungan kecelakaan
7. verifikasi
Mungkin sedikit menakutkan pada awalnya menggunakan perintah peluncuran cepat dari riwayat singkatan !!
ΠΈ !$
.
Pilihan histverify
memungkinkan Anda melihat terlebih dahulu bagaimana Bash menafsirkan perintah sebelum benar-benar dijalankan:
$ shopt -s histverify
$ echo !$ # <= ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Enter ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
$ echo histverify # <= ΠΠ½Π° ΡΠ½Π°ΡΠ°Π»Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅,
histverify # <= Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ
8. Noclobber
Sekali lagi untuk melindungi dari kecelakaan yaitu menimpa file yang sudah ada dengan operator redirect (>
). Ini bisa menjadi bencana jika Anda tidak memiliki cadangan.
Pilihan set -Π‘
melarang penimpaan seperti itu. Jika perlu, Anda dapat melewati perlindungan menggunakan operator >|
:
$ touch afile
$ set -C
$ echo something > afile
-bash: afile: cannot overwrite existing file
$ echo something >| afile
$
Sumber: www.habr.com