Lebih dari sekali saya secara tidak sengaja menjalankan sejumlah perintah dan mencemari riwayat bash saya. Bagaimana cara menutup terminal saya tanpa menyimpan riwayat bash saya? Saya menggunakan Fedora.
bash
command-history
Michael Mrozek
sumber
sumber
set HISTFILE
lain kali saya masuk? (katakan saja apakah ini benar atau salah)Jawaban singkat:
Ketik ini saat diminta:
Ini akan membunuh cangkang Anda segera tanpa cangkang mampu melakukan apa pun seperti menjebak sinyal, menyimpan sejarah, mengeksekusi
~/.bash_logout
, memperingatkan tentang pekerjaan yang berhenti, atau hal-hal baik lainnya.Jawaban panjang:
Catatan: Opsi ini tidak saling eksklusif; mereka semua bisa digunakan sekaligus.
Pilihan 1:
Jika Anda seorang perfeksionis ketika datang untuk mengacaukan file riwayat Anda, maka yang dapat Anda lakukan adalah memodifikasi
HISTIGNORE
variabel untuk memasukkan sekumpulan perintah yang tidak ingin direkam. Misalnya, jika Anda menambahkanHISTIGNORE='ls*:cd*'
ke Anda~/.bashrc
maka setiap contohls
dancd
tidak dimasukkan ke file riwayat Anda.Pilihan 2:
Jika Anda ingin mengontrol berdasarkan perintah-demi-perintah perintah apa yang tersisa dari riwayat Anda, Anda dapat mengatur
HISTCONTROL='ignorespace'
yang akan menghilangkan baris perintah yang dimulai dengan spasi. Menggunakanignoreboth
juga akan menghilangkan garis yang berulang. Kemudian, menekan spasi sebelum Anda memasukkan perintah akan menyebabkannya tidak muncul di file riwayat Anda.Opsi 3:
Jika Anda hanya ingin membuatnya ketika Anda menutup terminal, shell segera keluar, Anda dapat
trap
memberi sinyal program terminal mengirimkan shell (xterm
, misalnya mengirimSIGHUP
lalu menunggu shell untuk keluar) dan membuat keluar tanpa menyimpan sejarah ketika menerima sinyal ini. Tambahkan ini ke Anda~/.bashrc
:sumber
kill -9
untuk apa pun kecuali situasi yang mengerikan ketika semuanya gagal.Saya terkejut melihat tidak ada yang menyarankan
history -c
segera sebelumexit
. IINM (saya bukan ahli) yang akan melakukannya dengan baik.sumber
history -r
akan membaca kembali file riwayat, jadi menabung menjadi larangan.Ada dua variabel lingkungan yang digunakan bash untuk menentukan file histori dan berapa banyak baris untuk ditulis ketika shell keluar.
Anda dapat membuang riwayat sesi Anda dengan salah satu dari ini (ditetapkan selama sesi yang ingin Anda hilangkan dari file riwayat Anda):
atau
Salah satu dari ini bekerja dengan baik di Bash on Fedora
sumber
Tidak yakin mengapa Anda begitu peduli tentang sejarah perintah Anda. Jika Anda sering membutuhkan perintah tertentu, Anda mungkin akan lebih asyik jika Anda menentukan alias untuknya sehingga Anda bisa mendapatkannya kembali dengan dua kali menekan daripada harus mencarinya dalam sejarah.
sumber
Eli sudah memberi Anda jawaban yang benar untuk Bash yang akan ditetapkan
HISTSIZE=0
.Saya hanya akan menambahkan metode untuk melakukannya untuk layar GNU . Tekan
Ctrl+A
(urutan pelarian layar) diikuti oleh:scrollback 0
. Ini akan menghapus riwayat scroll-back. Sekarang Anda dapat segera lakukan:scrollback 15000
untuk mengatur ulang ukuran buffer scroll-back.sumber
screen(1)
?scrollback=0
juga.Ctrl+a H
juga tidakCtrl+a :clear
akan menghapus riwayat. Kamu butuhCtrl+a :scrollback 0
. Anda bisa mengujinya sendiri. Mulai sesi layar baru. Sekarang lakukan acat /etc/passwd
. Sekarang, lakukan salah satu di atas -Ctrl+a H
atauCtrl+a :clear
. Sekarang, coba salin dari buffer layar dengan tanda panah yangCtrl+a [
diikuti untuk naik dan lihat seberapa jauh Anda bisa menyalin. Jika Anda telah melakukanCtrl+a :scrollback
diikuti olehclear
, Anda hanya akan pergi sejauh yang Anda lihat di jendela saat ini karena tidak akan ada buffer scrollback.