Bagaimana cara menyimpan riwayat terminal secara manual?

33

Ini pemahaman saya bahwa file histori diperbarui ketika terminal keluar. Tapi kadang-kadang komputer saya crash, dan terminal tidak keluar dengan bersih, dan kemudian saya kehilangan perintah-perintah dari sejarah saya yang menjengkelkan. Bagaimana saya bisa membuatnya siram segera, sehingga entri tetap masuk ke sana bahkan jika komputer saya mengalami kehancuran? Saat ini saya menggunakan solusi ini , tetapi saya merasa harus ada cara yang lebih baik.

Saya menggunakan terminal gnome di Ubuntu 12.10.

wim
sumber

Jawaban:

17

Jawaban dalam tautan yang Anda berikan dari situs Pengguna-Super seharusnya tidak dilihat sebagai 'penyelesaian masalah' untuk historyperilaku default perintah. Bash shell memiliki beberapa perilaku yang waras, keluar dari kotak, standar.

Saya sangat merekomendasikan membaca Bagaimana saya bisa menghindari kehilangan garis sejarah? untuk penjelasan tentang apa yang dilakukan modifikasi historyini. Selain itu, ada beberapa kekhawatiran yang masuk akal untuk mengetahui mengapa ini bukan perilaku default dari historyperintah.

  • kinerja - Karena Anda menyimpan setiap perintah dari setiap jendela history -a, .bash_historyfile dapat tumbuh cukup besar dan membutuhkan sumber daya yang lebih besar untuk memuat bash shell. Ini dapat menghasilkan waktu mulai yang lebih lama (untuk sesi terminal Anda, bukan startup sistem secara keseluruhan, per se.).

  • organisasi - (dari artikel di atas) "perintah sejarah shell interaktif simultan (untuk pengguna tertentu) akan terjalin. Oleh karena itu sejarah bukan daftar perintah yang dijamin berurutan karena dieksekusi dalam satu shell."

Jika Anda khawatir tentang pengamanan lebih lanjut dari bash shell dan. bash_historyfile melalui audit, lihat artikel ini: Bagaimana cara mencatat riwayat atau "bash" aman terhadap penghapusan riwayat?

Kadang-kadang (misalnya sistem yang tidak stabil, atau kegagalan daya), saya menemukan perintah di bawah ini bermanfaat.

Tambahkan baris berikut ke ~/.bashrcfile Anda :

unset HISTFILESIZE
HISTSIZE=3000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

shopt -s histappend

Pastikan untuk mencari .bashrcfile Anda menggunakan perintahsource ~/.bashrc

Kevin Bowen
sumber
39

Jawaban yang paling sederhana dan berfungsi untuk pertanyaan "Bagaimana cara menyimpan riwayat terminal secara manual?":

history -a

Mungkin juga layak untuk mempertimbangkan beralih ke zsh, yang memiliki setopt inc_append_history("simpan setiap perintah sebelum dijalankan").

Dan pertanyaan ini juga relevan: Apakah mungkin membuat tulisan ke .bash_history segera?

keuangan fifi
sumber