Melanjutkan dengan serangkaian catatan tentang
fungsi bash yang
kurang dikenal , saya akan menunjukkan kepada Anda tujuh variabel yang mungkin tidak Anda ketahui.
1) PROMPT_COMMAND
Anda mungkin sudah mengetahui cara memanipulasi prompt untuk menampilkan berbagai informasi yang berguna, tetapi tidak semua orang tahu bahwa Anda dapat menjalankan perintah shell setiap kali Anda menampilkan prompt.
Bahkan, banyak manipulator cepat kompleks menggunakan variabel ini untuk mengeksekusi perintah untuk mengumpulkan informasi yang ditampilkan pada prompt.
Coba jalankan ini di shell baru dan Anda akan melihat apa yang terjadi dengan sesi:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Jika Anda menjalankan
history
di konsol, Anda akan mendapatkan daftar perintah yang sebelumnya dieksekusi di bawah akun Anda.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Segera setelah variabel ini diset, catatan baru akan mencatat waktu bersama dengan perintah, sehingga hasilnya akan terlihat seperti ini:
1871 I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 I ran this at: 01/05/19 13:38:19 curl bbc.co.uk 1873 I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 I ran this at: 01/05/19 13:39:25 sudo su -
Memformat karakter yang cocok dari tanggal pria.
3) CDPATH
Untuk menghemat waktu pada baris perintah, Anda dapat menggunakan variabel ini untuk mengubah direktori semudah menjalankan perintah.
Seperti
PATH
, variabel
CDPATH
adalah daftar jalur yang dipisahkan oleh titik dua. Ketika Anda menjalankan
cd
dengan path relatif (yaitu, tanpa garis miring di awal), secara default shell mencari nama yang sesuai di folder lokal Anda.
CDPATH
akan mencari di jalur yang Anda berikan untuk direktori ke mana Anda ingin pergi.
Jika Anda menginstal
CDPATH
dengan cara ini:
$ CDPATH=/:/lib
lalu masukkan:
$ cd /home $ cd tmp
maka Anda akan selalu berada di
/tmp
mana pun Anda berada.
Namun, berhati-hatilah, karena jika Anda tidak menentukan folder lokal (
.
) Dalam daftar, maka Anda tidak dapat membuat folder
tmp
lain dan pergi ke sana, seperti biasa:
$ cd /home $ mkdir tmp $ cd tmp $ pwd /tmp
Ups!
Ini mirip dengan kebingungan yang saya rasakan ketika saya menyadari bahwa folder lokal tidak termasuk dalam variabel
PATH
lebih akrab ... tetapi Anda harus melakukannya dalam variabel PATH karena Anda dapat diakali dengan menjalankan perintah palsu dari beberapa kode yang diunduh.
Saya diatur oleh titik awal:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Pernahkah Anda bertanya-tanya apakah memasuki
exit
akan membawa Anda keluar dari bash shell saat ini ke shell "induk" lain atau menutup jendela konsol sepenuhnya?
Variabel ini melacak seberapa dalam Anda tertanam dalam bash shell. Jika Anda membuat terminal baru, maka diatur ke 1:
$ echo $SHLVL 1
Kemudian, jika Anda memulai proses shell lain, jumlahnya bertambah:
$ bash $ echo $SHLVL 2
Ini bisa sangat berguna dalam skrip di mana Anda tidak yakin apakah akan keluar atau tidak, atau melacak di mana Anda berada dengan bersarang.
5) LINENO
Juga, untuk menganalisis keadaan saat ini dan debugging, variabel
LINENO
, yang melaporkan jumlah perintah yang dieksekusi dalam sesi hingga saat ini:
$ bash $ echo $LINENO 1 $ echo $LINENO 2
Ini paling sering digunakan saat men-debug skrip. Dengan menyisipkan baris seperti
echo DEBUG:$LINENO
, Anda dapat dengan cepat menentukan di mana dalam skrip Anda (atau tidak).
6) REPLY
Jika, seperti saya, Anda biasanya menulis kode seperti ini:
$ read input echo do something with $input
mungkin mengejutkan bahwa Anda tidak perlu khawatir membuat variabel sama sekali:
$ read echo do something with $REPLY
Itu melakukan hal yang sama.
7) TMOUT
Agar tidak tetap berada di server produksi terlalu lama karena alasan keamanan atau secara tidak sengaja menjalankan sesuatu yang berbahaya di terminal yang salah, pengaturan variabel ini bertindak sebagai perlindungan.
Jika tidak ada yang dimasukkan dalam jumlah detik yang ditentukan, shell keluar.
Artinya, ini adalah alternatif untuk
sleep 1 && exit
:
$ TMOUT=1