Apakah ada cara untuk membuat fitur riwayat shell modern dicakup ke jalur?
Konteks kerja saya dibagi sebagai jalur pada sistem file, dan pola aktivitas shell, seperti perintah yang berulang kali dikeluarkan, cenderung berbeda untuk setiap 'proyek'. Akan lebih baik jika saya bisa lingkup fitur sejarah untuk perintah yang dikeluarkan dari jalur saat ini (atau sub-jalur).
shell
directory
command-history
cd-command
sohocoke
sumber
sumber
Bukan jawaban yang rapi tetapi sebuah alternatif jika Anda menggunakan
bash
shell Anda: Anda dapat membuat beberapa alias di blog Anda.bashrc
.Contohnya:
Lalu, jika Anda mengetik
a
:history -w
)history -c
)/home/user/.a_history
dan dibaca (history -r
)sumber
HISTFILE
. Tidak ada alasan untuk mengekspornya ke program lain, dan ~ / .bashrc dieksekusi untuk setiap proses bash interaktif, jadi kode Anda untuk mengaturnya akan dijalankan di setiap bash. Secara umum, jika variabel yang ditentukan oleh shell tidak diekspor secara default, Anda jarang harus mengekspornya.Jika Anda menggunakan ZSH, lihat plugin kecil ini yang baru-baru ini saya tulis untuk menangani ini:
https://github.com/ericfreese/zsh-cwd-history
Ia menyimpan
HISTFILE
direktori terpisah untuk setiap direktori yang telah Anda jalankan, dan menambahkan sebuahchpwd
hook untuk beralih di antaraHISTFILE
s ketika Anda mengubah direktori.Ini juga menyediakan widget zle yang dapat Anda ikat ke penekanan tombol yang akan mengubah
HISTFILE
antara "global" asli AndaHISTFILE
danHISTFILE
untuk direktori kerja Anda saat ini.Itu awalnya didasarkan pada plugin per-direktori-sejarah Jim Hester , tetapi sejak itu telah ditulis ulang dari bawah ke atas untuk memperbaiki banyak masalah dengan plugin itu.
sumber
Saya menulis sebuah plugin ZSH yang melakukan apa yang Anda inginkan: https://github.com/tymm/zsh-directory-history
Berbeda dengan solusi lain, plugin saya kembali ke sejarah global secara otomatis. Itu berarti bahwa Anda tidak perlu beralih antara sejarah direktori dan sejarah global.
Namun solusi lain sedikit lebih ringan kurasa.
sumber