GNU/Linux >> Znalost Linux >  >> Linux

Je možné mít adresářovou historii bash

Za prvé, může být jednodušší jednoduše namapovat váš Up a Dolů tlačítka na history-search-backward a history-search-forward respektive. Od 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.

Pokud je toto povoleno, začněte psát název svého příkazu a poté stiskněte Nahoru , zobrazí se pouze příkazy z vaší historie počínaje tím, co jste zadali. Tímto způsobem můžete velmi rychle najít příkaz, který vás zajímá, a nemusíte se šťourat se soubory historie konkrétních adresářů. Stačí zadat s a poté Nahoru a pouze příkazy začínající s bude nalezen. Použijte fooba a pouze ty začínající fooba se zobrazí.

Chcete-li to povolit, přidejte do ~/.inputrc následující řádky soubor na serveru (v závislosti na emulátoru vašeho terminálu možná budete potřebovat trochu jiný formát. Podívejte se na moji odpověď zde, pokud tato nefunguje):

"\e[A": history-search-backward
"\e[B": history-search-forward

To znamená, že ano, je možné nastavit soubor historie pro každý adresář. Přidejte tuto funkci do ~/.profile (ne na váš ~/.bashrc protože tento soubor se při použití ssh standardně nečte pro přihlášení ke vzdálenému počítači):

 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
}

A pak nastavte PROMPT_COMMAND proměnná (toto je příkaz, který se provede pokaždé, když je zobrazena výzva shellu):

export PROMPT_COMMAND='setHistFile'

Změňte targetDirs pole do seznamu adresářů, ve kterých chcete mít svůj vlastní soubor historie.


Linux
  1. Jak vymazat historii Bash na Linuxu

  2. Analýza historie Bash v Linuxu

  3. Spouštět Bash skripty při vstupu do adresáře?

  1. Je možné emulovat starší verze Bash?

  2. Obnovit pozici vyhledávání v historii bash

  3. Jak spustit bash skript?

  1. Jak používat příkazy historie Bash

  2. Přejít zpět do předchozího adresáře v shellu

  3. Je možné skrýt ztráty+nálezy?