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.