GNU/Linux >> Belajar Linux >  >> Linux

Apakah mungkin untuk memiliki riwayat bash sadar direktori

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.


Linux
  1. Cara Menghapus Riwayat Bash di Linux

  2. Pertahankan Bash History Di Beberapa Terminal Windows?

  3. Mengapa Saya Tidak Dapat Menggunakan Cd Dalam Skrip Bash??

  1. Bagaimana Agar Type-ahead Terapkan Ke Bash History Search (ctrl-r)?

  2. Bagaimana Cara Ssh Ke Direktori Tertentu?

  3. Pembersihan Otomatis Sejarah Bash?

  1. Setel ulang posisi pencarian riwayat bash

  2. Bagaimana cara menjalankan skrip bash?

  3. Apakah mungkin untuk menyembunyikan yang hilang + ditemukan?