Saya memiliki skrip di folder yang saya gunakan dengan argumen panjang. Apakah ada kemungkinan saya dapat memiliki riwayat perintah yang dieksekusi di direktori tertentu daripada kembali melalui seluruh sejarah?
bash
directory
command-history
hebat
sumber
sumber
history | less
mungkin? Itu tidak benar-benar menjawab pertanyaan Anda, tetapi di situlah saya mulai.Jawaban:
Dengan menghubungkan ke PROMPT_COMMAND bash, fungsi ini dijalankan setiap kali Anda mendapatkan prompt baru, jadi ini saat yang tepat untuk memeriksa untuk melihat apakah Anda berada di direktori yang Anda inginkan untuk riwayat khusus. Fungsi ini memiliki empat cabang utama:
$PWD
) tidak berubah, maka jangan lakukan apa pun (kembali).Jika PWD telah berubah, maka kami mengatur fungsi lokal yang hanya bertujuan untuk memfaktorkan kode "direktori khusus" menjadi satu tempat. Anda ingin mengganti direktori pengujian saya dengan milik Anda sendiri (dipisahkan oleh
|
).Karena kami telah mengubah direktori, perbarui variabel "direktori sebelumnya", lalu simpan riwayat di dalam memori ke HISTFILE, lalu hapus riwayat di dalam memori.
Jika kami telah berubah menjadi direktori khusus, maka setel HISTFILE menjadi
.bash_history
file di direktori saat ini.Jika tidak, kami telah mengubah dari direktori kustom, sehingga ulang HISTFILE dengan yang saham.
Akhirnya, karena kami telah mengubah file riwayat, bacalah kembali riwayat sebelumnya.
Untuk menyelesaikannya, skrip menetapkan nilai PROMPT_COMMAND dan menyimpan dua variabel penggunaan internal (stok HISTFILE dan "direktori sebelumnya").
sumber
Jawaban Jeff sangat bagus jika Anda ingin histori untuk satu direktori, tetapi jika Anda baik-baik saja dengan menginstal zsh Anda bisa menggunakan per-history-direktori untuk mendapatkan histori spesifik ke direktori untuk semua direktori.
Anda dapat menginstal zsh dengan:
Atau, jika Anda ingin menginstal oh-my-zsh , Anda dapat menambahkan di plugin histdb dan menulis kueri khusus untuk permintaan sqlite db yang ditambahkan histdb. Saya menulis tentang itu dan menambahkan pelengkapan otomatis dalam posting Dev Diaries . Periksa bagian perintah bonus .
Kueri terlihat seperti ini
Ini menerima batas opsional juga:
sebagai contoh.
sumber
Ketika saya perlu menggunakan perintah dengan argumen panjang beberapa kali, saya biasanya membuat alias di saya
~/.bash_aliases
atau Anda dapat memasukkannya ke dalam Anda~/.bashrc
jika Anda mau. Sangat mudah dan menghemat waktu alih-alih mencari perintah lama dalam sejarah.sumber