Sdílení historie mezi terminály

V poslední době se výrazně zvýšil počet terminálů, se kterými pracuji. Také přibylo velké množství příkazů, takže jsem se musel naučit lépe pracovat s historií v Bashi. Například jsem si nadefinoval alias, se kterým mohu rychle progrepovat v celé historii a prohlížet si například několik velmi podobných příkazů (a vybrat si ten konkrétní).

alias hist='history | grep $1"'

Pochopitelně bylo potřeba zvýšit si velikost historie a také zamezit vkládání příkazů začínajících mezerou, o kterých vím, že je v historii mít nechci.

export HISTFILESIZE=20000
export HISTCONTROL=ignoreboth


To jsou všechno základní věci, ale jeden problém mě trápil. Při větším množství otevřených terminálů se člověku stane, že by potřeboval použít příkaz z historie, která je sice v paměti jiného terminálu, ale ještě nebyla zapsána (do souboru .bash_history). Jiné terminály prostě příkaz ještě "nevidí" a bude k dispozici až po odhlášení a přihlášení obou.

Řešení je snadné. Příkaz history -a provede zápis všech příkazů z paměti do souboru. Ten provedu v terminálu, ve kterém jsem kýžený příkaz spustil. No a příkaz history -n načte soubor zpět do paměti. Ten je nutné provést v terminálu, kde chci v historii dolovat.

No a celé je to možné provést za sebou. Udělal jsem si tedy alias.

alias hh='history -a; history -n'

V obou terminálech tedy stačí provést jen "hh" a je hotovo. Žádná věda, ale potěší to...
20 October 2010 | linux | bash
twitter.com linkedin.com
google.com/+ facebook.com
flickr.com youtube.com