it-swarm-eu.dev

Bash historie zpracování s více terminály

Používám hlavně Terminator a obvykle se otevírá pomocí tří dělených oken terminálu. Terminál Gnome používám také z různých důvodů.
Zajímalo by mě, jak se v tomto případě zachází s bashovou historií, protože při spuštění history

Například moje výzva zobrazuje aktuální řádek historie bash (\!) a pokud spustím Terminator se 3 rozdělenými terminálovými okny, dostanu stejnou historickou linii (řekněme 100) na všech terminálech. Která historie bude uložena?

Také spuštění Gnome Terminalu po použití Terminator Dostanu linku 100 při spuštění bez ohledu na všechny příkazy vydané dříve v Terminator

115
zetah

Uložená bash relace je ta pro terminál, který je poslední uzavřen. Pokud chcete uložit příkazy pro každou relaci, můžete použít trik vysvětlený zde .

export Prompt_COMMAND='history -a'

Chcete-li citovat manuálovou stránku: „Pokud je nastavena, je hodnota vykonána jako příkaz před vydáním každého primárního řádku.“

Takže pokaždé, když můj příkaz skončí, připojí nepsanou položku historie k ~/.bash_history před opětovným zobrazením výzvy (pouze $ PS1).

Takže po vložení této řádky do /etc/bash.bashrc Nemusím se ocitnout znovuobjevovat kola nebo ztratit cenné sekundy přepisování věcí jen proto, že jsem byl líný se svými terminály.

V každém případě budete muset vzít v úvahu, že příkazy z různých relací budou smíchány v souboru historie, takže nebude tak snadné si je přečíst později.

Viz také:

110
jcollado

Po více čteních man bash, Pro každý Shell používám samostatné soubory historie. Udělal jsem mkdir -m 0700 ~/.history pak přidán

[[ -d ~/.history ]] || mkdir --mode=0700 ~/.history
[[ -d ~/.history ]] && chmod 0700 ~/.history
HISTFILE=~/.history/history.$(date +%y%b%d-%H%M%S).$$
# close any old history file by zeroing HISTFILESIZE  
HISTFILESIZE=0  
# then set HISTFILESIZE to a large value
HISTFILESIZE=4096  
HISTSIZE=4096  

mému ~/.bashrc. Občas si vzpomínám na du -sk .history a vyčistěte to. Je hezké mít všechny příkazy, které jsem zadal, pro mě zachované.

Použil jsem výše uvedené, abych viděl, co jsem dělal, pozdě:
cut -f1 "-d " .history/* | sort | uniq -c |sort -n -r |less
nebo
cut -f1-2 "-d " .history/* | sort | uniq -c |sort -n -r |less
(zahrnuje první argument, např. Sudo mount v řetězci řazení).

35
waltinator

Zobrazení history ze všech terminálů:

Přidat export Prompt_COMMAND='history -a; history -r' do vašeho .bashrc souboru.

Zdroj: http://northernmost.org/blog/flush-bash_history-after-each-command


8
Elijah Lynn

Viz také " držování trvalé historie v bash " pro další alternativu. Opravuje výzvu, aby poslala všechny příkazy, které jste kdy napsali, do libovolného terminálu do souboru „trvalé historie“ (vedle toho, co se obvykle dělá pro normální .history).

6
Eli Bendersky