Pertama-tama, mungkin lebih mudah untuk memetakan Atas Anda saja dan Turun tombol ke history-search-backward
dan history-search-forward
masing-masing. Dari man bash
:
history-search-forward
Search forward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.
history-search-backward
Search backward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.
Dengan ini diaktifkan, jika mulai ketikkan nama perintah Anda lalu tekan Naik , hanya perintah dari riwayat Anda yang dimulai dengan apa pun yang Anda ketikkan yang akan ditampilkan. Dengan begitu, Anda dapat dengan cepat menemukan perintah yang Anda minati dan tidak perlu mengutak-atik file riwayat khusus direktori. Cukup ketik s
, lalu Atas dan hanya perintah yang dimulai dengan s
akan ditemukan. Gunakan fooba
dan hanya yang dimulai dengan fooba
akan ditampilkan.
Untuk mengaktifkannya, tambahkan baris berikut ke ~/.inputrc
Anda file di server (bergantung pada emulator terminal Anda, Anda mungkin memerlukan format yang sedikit berbeda. Lihat jawaban saya di sini jika yang ini tidak berfungsi):
"\e[A": history-search-backward
"\e[B": history-search-forward
Karena itu, ya dimungkinkan untuk mengatur file riwayat per direktori. Tambahkan fungsi ini ke ~/.profile
Anda (bukan ke ~/.bashrc
Anda karena file ini tidak dibaca secara default saat menggunakan ssh
untuk masuk ke mesin jarak jauh):
setHistFile(){
targetDirs=("/home/terdon/foo" "/home/terdon/bar")
for dir in "${targetDirs[@]}"; do
if [[ "$dir" = "$PWD" ]]; then
## Set the history file name
export HISTFILE="./.bash_history"
## clear current history
history -c
## read history from the $HISTFILE
history -r
## Exit the function
return
fi
done
## This will be run if the PWD is not in
## the targetDirs array
export HISTFILE="$HOME/.bash_history"
## Read the history (in case we are leaving
## one of the targetDirs)
history -r
}
Dan kemudian atur PROMPT_COMMAND
Anda variabel (ini adalah perintah yang dijalankan setiap kali shell prompt ditampilkan) untuk itu:
export PROMPT_COMMAND='setHistFile'
Ubah targetDirs
array ke daftar direktori yang ingin Anda miliki file riwayatnya sendiri.