Meneruskan siri nota tentang
1) PROMPT_COMMAND
Anda mungkin sudah tahu cara memanipulasi gesaan untuk menunjukkan pelbagai maklumat berguna, tetapi tidak semua orang tahu bahawa anda boleh menjalankan arahan shell setiap kali gesaan ditunjukkan.
Malah, banyak manipulator gesaan yang kompleks menggunakan pembolehubah ini untuk melaksanakan arahan untuk mengumpul maklumat yang dipaparkan dalam gesaan.
Cuba jalankan ini dalam shell baharu dan lihat apa yang berlaku pada sesi:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Jika anda berlari history
dalam konsol, anda akan menerima senarai arahan yang telah dilaksanakan sebelum ini di bawah akaun anda.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Setelah pembolehubah ini ditetapkan, entri baharu merekodkan masa bersama-sama dengan arahan, jadi output akan kelihatan seperti ini:
1871 Saya menjalankan ini di: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Saya menjalankan ini di: 01/05/19 13:38:19 curl bbc.co.uk 1873 Saya menjalankan ini di : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Saya menjalankan ini di: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Saya menjalankan ini di: 01 /05/19 13:39:25 sudo su -
Pemformatan sepadan dengan aksara daripada man date
.
3) CDPATH
Untuk menjimatkan masa pada baris arahan, anda boleh menggunakan pembolehubah ini untuk menukar direktori semudah anda mengeluarkan arahan.
sebagai PATH
, pembolehubah CDPATH
ialah senarai laluan yang dipisahkan bertindih. Apabila anda menjalankan arahan cd
dengan laluan relatif (iaitu tiada garis miring utama), secara lalai shell kelihatan dalam folder tempatan anda untuk nama yang sepadan. CDPATH
akan mencari dalam laluan yang anda berikan untuk direktori yang anda ingin pergi.
Jika anda memasang CDPATH
dengan cara ini:
$ CDPATH=/:/lib
dan kemudian masukkan:
$ cd /home
$ cd tmp
maka anda akan sentiasa berakhir /tmp
tidak kira di mana anda berada.
Walau bagaimanapun, berhati-hati, kerana jika anda tidak menentukan yang tempatan dalam senarai (.
) folder, maka anda tidak akan dapat mencipta sebarang folder lain tmp
dan pergi ke sana seperti biasa:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Aduh!
Ini serupa dengan kekeliruan yang saya rasakan apabila saya menyedari bahawa folder tempatan tidak disertakan dalam pembolehubah yang lebih biasa PATH
... tetapi anda perlu melakukannya dalam pembolehubah PATH anda kerana anda mungkin terpedaya untuk menjalankan arahan palsu daripada beberapa kod yang dimuat turun.
Milik saya ditetapkan oleh titik permulaan:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Pernahkah anda terfikir, menaip exit
adakah ia akan membawa anda keluar dari shell bash semasa anda ke shell "ibu bapa" yang lain, atau adakah ia hanya akan menutup tetingkap konsol sepenuhnya?
Pembolehubah ini menjejaki sejauh mana anda bersarang dalam shell bash. Jika anda membuat terminal baharu, ia ditetapkan kepada 1:
$ echo $SHLVL
1
Kemudian, jika anda memulakan proses shell yang lain, bilangannya meningkat:
$ bash
$ echo $SHLVL
2
Ini boleh menjadi sangat berguna dalam skrip yang anda tidak pasti sama ada untuk keluar atau tidak, atau menjejaki tempat anda bersarang.
5) LINENO
Pembolehubah juga berguna untuk menganalisis keadaan semasa dan penyahpepijatan LINENO
, yang melaporkan bilangan arahan yang dilaksanakan dalam sesi setakat ini:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Ini paling kerap digunakan semasa menyahpepijat skrip. Memasukkan baris seperti echo DEBUG:$LINENO
, anda boleh menentukan dengan cepat di mana anda berada dalam skrip (atau tidak).
6) REPLY
Jika, seperti saya, anda biasanya menulis kod seperti ini:
$ read input
echo do something with $input
Ia mungkin mengejutkan bahawa anda tidak perlu risau tentang membuat pembolehubah sama sekali:
$ read
echo do something with $REPLY
Ini melakukan perkara yang sama.
7) TMOUT
Untuk mengelak daripada berada di pelayan pengeluaran terlalu lama atas sebab keselamatan atau menjalankan sesuatu yang berbahaya secara tidak sengaja di terminal yang salah, menetapkan pembolehubah ini bertindak sebagai perlindungan.
Jika tiada apa-apa yang dimasukkan untuk beberapa saat yang ditetapkan, shell akan keluar.
Iaitu, ini adalah alternatif sleep 1 && exit
:
$ TMOUT=1
Sumber: www.habr.com