bash and zsh shell history suggest box - easily view, navigate, search and manage your command history.
Find a file
2015-01-07 22:15:21 +01:00
bin Moving user scripts to bin/ dir. 2014-01-09 22:15:11 +01:00
debian Fixing Launchpad build - curses > ncursesw includes. 2014-09-12 21:46:49 +02:00
dist Fixed #95 (the first selection item choosen on ENTER+nothing selected) by manual merge of tbabej's pull request. 2014-12-20 10:11:23 +01:00
doc Adding doc/ dir. 2014-04-27 13:31:39 +02:00
man Fixed #114 by introducing HH_PROMPT variable allowing to customize hh prompt - thank you @livibetter. 2015-01-07 22:15:21 +01:00
src Fixed #114 by introducing HH_PROMPT variable allowing to customize hh prompt - thank you @livibetter. 2015-01-07 22:15:21 +01:00
tests TABs > SPACEs 2014-10-29 20:26:11 +01:00
configure.ac Improving configure.ac - sub-makefiles macro call + more header deps. 2014-09-12 21:59:42 +02:00
LICENSE Initial commit 2013-12-02 14:47:51 -08:00
Makefile.am Adding DEB scripts and configs 2013-12-25 20:20:36 +01:00
PKGBUILD PKGBUILD for Archlinux 2014-02-26 03:01:07 +01:00
README.md Fixed #114 by introducing HH_PROMPT variable allowing to customize hh prompt - thank you @livibetter. 2015-01-07 22:15:21 +01:00

hstr

BASH History Suggest Box.

BASH History Suggest Box

DESCRIPTION

Are you looking for a command that you used recently? Do you want to avoid the need to write long commands over and over again despite you used them recently? Are you looking for a tool that is able to manage your favorite commands?

HSTR is a command line utility that brings improved BASH command completion from the history. It aims to make completion easier and more efficient than Ctrl-r.

Apart to the completion, history can be managed (you can remove commands that e.g. contain sensitive information like passwords) and bookmark your favorite commands.

Enjoy video tutorial.

UBUNTU INSTALLATION

Install hh on Ubuntu:

sudo add-apt-repository ppa:ultradvorka/ppa
sudo apt-get update
sudo apt-get install hh

Optionally configure hh:

hh --show-configuration >> ~/.bashrc

Check the documentation:

man hh

INSTALLATION FROM SOURCE CODE

Clone Git repository:

git clone https://github.com/dvorka/hstr.git

Create build files using:

cd ./dist && ./1-dist.sh && cd ..

Install hh using:

./configure && make && make install

Optionally configure hh:

hh --show-configuration >> ~/.bashrc

DISTRIBUTION INSTALLATION

Download latest distribution from project Releases section:

https://github.com/dvorka/hstr/releases

Expand the archive and install hh using:

./configure && make && make install

Optionally configure hh:

hh --show-configuration >> ~/.bashrc

DEBIAN/MINT INSTALLATION

Install hh on Debian (Wheezy) or Mint (13) by registering the key:

wget www.clfh.de/frankh.asc
apt-key add frankh.asc

adding the repository:

deb http://www.clfh.de/debian wheezy main
deb-src http://www.clfh.de/debian wheezy main

and installing it:

apt-get update
apt-get install hh

Optionally configure hh:

hh --show-configuration >> ~/.bashrc

ARCH LINUX

Download latest distribution from project Releases section:

https://github.com/dvorka/hstr/releases

Use PKGBUILD in the root of the distribution to build package using makepkg:

https://wiki.archlinux.org/index.php/PKGBUILD

Install hh

  • optionally configure hh:
hh --show-configuration >> ~/.bashrc

MAC OS

Install MacPorts:

http://www.macports.org

Set the environment:

env CFLAGS="-I/opt/local/include -I/usr/include" LDFLAGS="-L/opt/local/lib -L/usr/lib" ./configure

Finish the installation

make && make install

Optionally configure hh:

hh --show-configuration >> ~/.bashrc

CONFIGURATION EXPLANATION

  • hh works best with the optional configuration described in this section. You can configure hh just by running:
hh --show-configuration >> ~/.bashrc
  • bind hh to a BASH key e.g. to Ctrl-r:
bind '"\C-r": "\C-ahh \C-j"'

or Ctrl-Alt-r:

bind '"\e\C-r":"\C-ahh \C-j"'

or Ctrl-F12:

bind '"\e[24;5~":"\C-ahh \C-j"'

bind hh to Ctrl-r only if this is interactive shell:

if [[ $- =~ .*i.* ]]; then bind '"\C-r": "\C-a hh \C-j"'; fi

To determine the character sequence emitted by a pressed key in terminal, type Ctrl-v and then press the key. Check your current bindings using:

bind -S
  • get hh in more colors:
export HH_CONFIG=hicolor

show normal history by default (instead of metrics-based view):

export HH_CONFIG=rawhistory

show favorites by default (instead of metrics-based view):

export HH_CONFIG=favorites

make search case sensitive (insensitive by default):

export HH_CONFIG=casesensitive

show warnings:

export HH_CONFIG=warning

show debug messages:

export HH_CONFIG=debug

more colors and case sensitive search:

export HH_CONFIG=hicolor,casesensitive
  • increase the size of history:
export HISTFILESIZE=10000
export HISTSIZE=${HISTFILESIZE}

Variables defined above increase the number of history items and history file size (default value is 500).

  • ensure syncing (flushing and reloading) of .bash_history with in-memory history:
export PROMPT_COMMAND="history -a; history -n; ${PROMPT_COMMAND}"
  • force appending of in-memory history to .bash_history (instead of overwriting):
shopt -s histappend
  • use leading space to hide commands from history:
export HISTCONTROL=ignorespace

Suitable for a sensitive information like passwords.

BUGS

https://github.com/dvorka/hstr/issues