Pertahankan histori tcsh di banyak terminal windows

8

Bagaimana kita bisa mempertahankan atau mempertahankan sejarah yang sama di beberapa terminal?

Pertanyaan yang sama, tetapi untuk bash shell, dibahas di tautan di bawah ini

Pertahankan histori bash di banyak terminal windows

beri tahu saya pengaturan yang sesuai untuk shell tcsh?

pengguna1228191
sumber
Untuk informasi lebih lanjut tentang tcsh history, lihat man tcsh. Pencarian history -Sharus mengarahkan Anda ke bagian yang paling relevan.
Randall

Jawaban:

7

Variabel-variabel ini mengatur sejarah untuk menggabungkan dirinya sendiri alih-alih menimpa, dan tidak menyimpan duplikat:

set history=1000
set histdup=erase
set savehist=(1000 merge)

saus rahasia adalah baris ini:

alias precmd 'history -S; history -M'

yang akan menyimpan dan menggabungkan riwayat Anda sebelum mencetak prompt - yaitu setelah setiap perintah yang Anda ketikkan.

semua hal di atas harus ditambahkan ke file .tcshrc Anda .

Idan
sumber
Ketika saya menambahkan ini alias precmd 'history -S; history -M'tidak ada yang terjadi ketika saya menulis perintah apa pun. Apakah ada hal lain yang harus dilakukan?
Ayman Salah
@AymanSalah apa yang terjadi tidak jelas - ini adalah .historyfile (atau histfilenilai variabel shell, jika diset) ditulis ke disk. Tanpa itu precmdalias set, ls -l .historyakan menampilkan .historyfile sebagai sebuah tersentuh. Dengan precmd set seperti di atas, ls -l .historyakan menunjukkan cap waktu dan ukuran yang diperbarui, saat ditulis dengan setiap perintah.
Randall
@Rallall Terima kasih telah menunjukkannya. Saya punya masalah dengan sesi shell. Apa yang Anda katakan adalah 100% benar.
Ayman Salah
1

Selain jawaban Idan , saya ingin menambahkan yang alias precmd 'history -S; history -M'berpotensi dapat mengacaukan file riwayat, karena juga mencatat sinyal SIGINT dan EOF (Ctrl + C dan Ctrl + D).

masukkan deskripsi gambar di sini

Cara yang lebih baik adalah menyimpan dan menggabungkan riwayat shell saat ini setelah menjalankan perintah.

Anda dapat mencapainya dengan pengaturan di bawah ini sebagai gantinya, karena tcsh tidak mengenali SIGINT atau EOF sebagai perintah yang valid.

alias postcmd       "history -S; history -M"
berong91
sumber