Delapan Opsi Pesta yang Kurang Diketahui

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 di sini ΠΈΠ»ΠΈ di sini.

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

Tambah komentar