Saya sering membuka banyak Terminal [Saat ini saya sudah membuka 7 di ruang kerja ini] dan saya sering mencari history
dengan grep
menemukan perintah yang baru saja saya tulis, tapi saya tidak ingin memburu terminal dan kemudian gulir ke atas dan berburu lebih banyak, dll. Kadang-kadang terminal saya tutup tanpa 'keluar,' dan semua yang saya tulis hilang [Kadang-kadang saya membutuhkan sesuatu yang saya tulis di terminal yang terbunuh].
Jadi apakah ada cara untuk membuatnya sehingga setiap terminal segera menulis ke .bash_history? atau setidaknya satu menit, atau sesuatu seperti itu?
control-r
untuk melakukan pencarian terbalik dalam sejarah perintah dari satu bash. Lebih nyaman daripadahistory | grep
kecuali Anda membutuhkan regex.Jawaban:
Solusi sederhana seperti yang dijelaskan dalam Perbarui Bash History secara Realtime .
Dikatakan untuk menempatkan perintah-perintah itu di .bashrc config:
Perintah pertama mengubah
.history
mode file untuk ditambahkan. Dan yang kedua mengkonfigurasihistory -a
perintah yang akan dijalankan pada setiap prompt shell. The-a
segera menulis garis saat ini / baru ke file sejarah.Terkait untuk zsh:
sumber
Coba masukkan ini ke
.bashrc
:Kredit di sini: https://stackoverflow.com/questions/103944/real-time-history-export-amongst-bash-terminal-windows/3055135
history -c
membersihkan riwayat sesi lari. Ini akan mengurangi penghitung riwayat dengan jumlah$HISTSIZE
.history -r
baca konten$HISTFILE
dan masukkan ke riwayat sesi berjalan saat ini. Ini akan meningkatkan penghitung sejarah dengan jumlah baris di$HISTFILE
.Saya pikir itu berarti bahwa perintah tersedia segera (Anda memiliki satu terminal, tulis
echo 1
, terminal keduaecho 2
, pertamaecho 3
dan setelah menekan panah dua kali, Anda harus sudahecho 2
tersedia. Anda harus mengeluarkan perintah di terminal yang diberikan untuk memiliki akses ke apa yang telah telah ditulis.sumber
man history
...bash
built-in sehingga dijelaskan dalamman bash
. Anda juga bisa menggunakanhelp history
.-r
dan-c
vs hanya memiliki-a
.history -c; history -r
? Saya kira itu lebih baik untuk Anda, akan lebih baik bagi saya hanya kadang-kadang, saya sering menggunakan beberapa kerang untuk melakukan satu pekerjaan, jadi saya lebih suka memiliki sejarah sebanyak mungkin digabungkan. Saya sebenarnya keberatan bahwa perintah hanya ditulis untuk sejarah setelah selesai. biasanya, ketika saya memulai sesi ssh ke satu host dan ingin membuka yang lain ketika yang pertama masih berjalan, saya harus mengetik ulang karena belum ditulis ke histori.history -a
mungkin sudah cukupSaya memiliki file histori besar dengan sekitar 100.000 entri, dan varian yang menghapus daftar histori dan membaca seluruh file histori (menggunakan
history -c
danhistory -r
) memperkenalkan penundaan yang nyata (mungkin 0,2 detik) sebelum prompt ditampilkan. Menggunakanhistory -n
sehingga hanya baris baru yang dibaca dari file histori lebih cepat:PROMPT_COMMAND
tidak harus diekspor karena ini adalah variabel shell.sumber
Catatan untuk semua jawaban lain (yang pada dasarnya adalah hal yang sama):
Pengaturan
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
di.bashrc
(atau teman) sudah cukup.Selain itu, Anda dapat menjalankan secara manual
history -a
kapan pun Anda ingin "memotret" riwayat di sesi saat ini.Perintah
shopt -s histappend
ini tidak diperlukan karenahistory -a
selalu menambahkan baris baru ke file dan tidak pernah menimpanya. Juga, setidaknya pada Bash 4,histappend
adalah perilaku default.sumber
shopt -s histappend
. Juga perhatikan saya menambahkannya ke~/.bash_profile
histappend
, karena itu adalah perilaku default. Saya akan mencarinya, tetapi saya tidak memiliki akses ke Mac.