di linux ubuntu bash terminal. apakah ada cara untuk menyimpan bash history tanpa menulis keluar? saya telah mengatur konfigurasi ke "HISTCONTROL = erasedups"
yang menurut saya bekerja lebih baik daripada yang diabaikan.
Bagaimanapun juga karena suatu alasan ia tidak akan menyimpan beberapa perintah terakhir di terminal bash kecuali jika saya mengetik "keluar". Saya terbiasa mengklik saja salib pada jendela terminal, jadi saya selalu kesal bahwa perintah terakhir tidak disimpan ketika saya login kembali.
pengingat: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/#more-130
Jawaban:
Bash History
Perintah baru apa pun yang telah dikeluarkan di terminal aktif dapat ditambahkan ke
.bash_history
file dengan perintah berikut:Satu-satunya konsep rumit yang perlu dipahami adalah bahwa setiap terminal memiliki daftar riwayat bash sendiri (diambil dari
.bash_history
file ketika Anda membuka terminal)Jika Anda ingin menarik riwayat baru apa pun yang telah ditulis oleh terminal lain selama masa aktif terminal aktif ini, Anda dapat menambahkan konten
.bash_history
file ke daftar riwayat bash aktif.Ini akan menghapus daftar riwayat saat ini sehingga kami tidak mendapatkan daftar berulang, dan menambahkan file riwayat ke daftar (sekarang kosong).
Larutan
Anda dapat menggunakan variabel bash
PROMPT_COMMAND
untuk mengeluarkan perintah dengan setiap prompt baru (setiap kali Anda menekan enter di terminal)Ini akan mencatat setiap perintah ke file riwayat saat dikeluarkan.
Hasil
Sekarang setiap terminal baru yang Anda buka akan memiliki sejarah terminal lain tanpa harus ke
exit
terminal lain tersebut. Ini adalah alur kerja pilihan saya.Lebih Presisi
Katakanlah (karena alasan tertentu) Anda memiliki dua terminal yang Anda gunakan secara bersamaan dan Anda ingin histori mencerminkan antara keduanya untuk setiap perintah baru.
Kelemahan utama di sini adalah Anda mungkin perlu menekan enter untuk menjalankan kembali PROMPT_COMMAND untuk mendapatkan sejarah terbaru dari terminal yang berlawanan.
Anda dapat melihat mengapa opsi yang lebih tepat ini mungkin berlebihan, tetapi berfungsi untuk kasus penggunaan itu.
sumber
Untuk menyimpan riwayat bash ke file:
Itu mengekspor sejarah ke file yang disebut history.txt. Anda kemudian dapat melihatnya menggunakan editor favorit Anda.
Jawaban disalin dari http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/
sumber
Ada adalah cara untuk menyimpan semua bash sejarah Anda ke file terpisah , tetapi jika Anda mencoba untuk menggunakan mekanisme sejarah dan untuk beberapa alasan itu tidak menyimpan semua sejarah Anda, itu adalah masalah yang berbeda.
Untuk menyimpan semua riwayat Anda ke file terpisah, selalu, apa pun yang terjadi pada terminal
Sebuah skrip yang disediakan di sini berguna.
Untuk memberi tahu perintah sejarah "Simpan sekarang!" ketika mengklik X pada jendela terminal virtual
Pertama yang harus Anda pahami adalah, mekanisme apa yang digunakan emulator terminal virtual Anda untuk mematikan
bash
proses ketika keluar? - Ini tergantung pada emulator terminal yang Anda gunakan.Ada beberapa opsi, dan semuanya melibatkan sinyal UNIX .
SIGTERM, SIGINT, SIGQUIT: Perilaku default ketika Bash menerima salah satu sinyal ini dalam mode interaktif adalah mengabaikannya, jadi mungkin bukan itu.
SIGHUP: Sinyal ini biasanya menyebabkan Bash berhenti dengan anggun dan melakukan pembersihan, tapi saya tidak yakin apakah "pembersihan" itu melibatkan penyelamatan file sejarah. Mungkin tidak.
SIGKILL, SIGSTOP: Tidak mungkin bagi Bash sebagai proses userspace untuk mengabaikan sinyal-sinyal ini. Kernel dapat secara paksa membunuh atau menghentikan proses kapan saja menggunakan sinyal-sinyal ini. Jika emulator VT Anda mengirimkan salah satu dari ini, kami tidak dapat menjebaknya dan melakukan sesuatu sebelum keluar, sehingga Anda kurang beruntung.
Beberapa referensi: Pertanyaan ServerFault 337123
Unix pertanyaan 6332
Menggunakan History Interactively di manual GNU Bash
sumber