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.
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.
Jawaban:
Riwayat shell Anda disimpan dalam file yang ditunjukkan oleh HISTFILEvariabel. Begitu:
unset HISTFILE
Ini juga berlaku untuk zsh, tetapi tidak untuk ksh yang terus menyimpan ke file yang ditunjukkan oleh $HISTFILEsaat shell dimulai (dan sebaliknya, Anda memutuskan untuk menyimpan histori Anda di ksh setelah Anda memulai shell).
Jawaban singkat:
Ketik ini saat diminta:
$ kill -9 $$
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 HISTIGNOREvariabel untuk memasukkan sekumpulan perintah yang tidak ingin direkam. Misalnya, jika Anda menambahkan HISTIGNORE='ls*:cd*'ke Anda ~/.bashrcmaka setiap contoh lsdan cdtidak 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. Menggunakan ignorebothjuga 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 trapmemberi sinyal program terminal mengirimkan shell ( xterm, misalnya mengirim SIGHUPlalu menunggu shell untuk keluar) dan membuat keluar tanpa menyimpan sejarah ketika menerima sinyal ini. Tambahkan ini ke Anda ~/.bashrc:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9untuk apa pun kecuali situasi yang mengerikan ketika semuanya gagal.
Saya terkejut melihat tidak ada yang menyarankan history -csegera sebelum exit. IINM (saya bukan ahli) yang akan melakukannya dengan baik.
history -rakan 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):
HISTFILE=/dev/null
atau
HISTSIZE=0
Salah satu dari ini bekerja dengan baik di Bash on Fedora
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.
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 15000untuk mengatur ulang ukuran buffer scroll-back.
screen(1)?
scrollback=0juga.
Ctrl+a Hjuga tidak Ctrl+a :clearakan menghapus riwayat. Kamu butuh Ctrl+a :scrollback 0. Anda bisa mengujinya sendiri. Mulai sesi layar baru. Sekarang lakukan a cat /etc/passwd. Sekarang, lakukan salah satu di atas - Ctrl+a Hatau Ctrl+a :clear. Sekarang, coba salin dari buffer layar dengan tanda panah yang Ctrl+a [diikuti untuk naik dan lihat seberapa jauh Anda bisa menyalin. Jika Anda telah melakukan Ctrl+a :scrollbackdiikuti oleh clear, Anda hanya akan pergi sejauh yang Anda lihat di jendela saat ini karena tidak akan ada buffer scrollback.
set HISTFILElain kali saya masuk? (katakan saja apakah ini benar atau salah)