Bashhub saves every terminal command entered across all sessions and systems and provides powerful querying across all commands.
- Super command search by using context about how commands are executed.
- e.g. the directory, session, system, exit status, etc.
- Unlimited detailed terminal history stored in the cloud.
- Support across systems. Access your terminal history from anywhere!
- Support for Bash and Zsh with a sweet cli for everything.
curl -OL https://bashhub.com/setup && $SHELL setup
For non default login shells, just specify the shell e.g. (bash setup
, zsh setup
, fish setup
)
Detailed installation instructions can be found at https://github.com/rcaloras/bashhub-client/wiki/Install
Bashhub can be accessed from the command line in a couple ways:
bh
for searchingbashhub
for everything else
It also provides a key binding of ctrl + b
for quickly dropping into interactive search.
You can search through your commands in a lot of different ways. Check bh --help
for more specifics. By default bh
will output the most recently used unique commands to standard out. Adding the -i
argument to any bh
search will make it interactive. There are also several arguments to pass to filter, query, and get more specific about your searches!
The last 100 commands you executed anywhere. (100 is default limit without -n
)
$ bh
The last 20 files I've grep'd.
$ bh -n 20 "grep"
Find that wget command with interactive search to execute it again :P
$ bh -i "wget github"
The last commands you executed in this directory.
$ bh -d
The last 10 things you vim'd in this directory
$ bh -d -n 10 "vim"
The last 10 curl commands you produced on this system
$ bh -sys -n 10 "curl"
By default results are sorted by most recently used, and are unique. This means frequent commands like git status
or ls
will only appear once in the position they were most recently invoked.
This can be altered by using the -dups
command to include duplicates
Your git commands including duplicates.
$ bh -dups "git"
One of the most useful features is interactive search which is accessed via bh -i
or ctrl + b
. This is similar to reverse search i.e. ctrl + r
. Interactive search drops you into a small menu where you can select a command to run on the command line.
Enter interactive search for all the rsync commands executed in this directory
$ bh -i -d
(bashhub-i-search): rsync
From interactive search you can also access detailed information on each command by hitting i
or space
on any listed command.
You can get a summary of your user's stats/status by using the status
command.
bashhub status
Most of this information is also displayed on the user profile page.
=== Bashhub Status
http://bashhub.com/u/rccola
Total Commands: 94965
Total Sessions: 16400
Total Systems: 18
===
Session PID 15311 Started 9 days ago
Commands In Session: 3
Commands Today: 47
An efficient way of searching is using bashhub
in combination with fzf
. Put this in your .bashrc
.
function my_alias {
eval $(bh | fzf)
}
This will make the function available globally in your terminal.
You can filter commands from being recorded to Bashhub via a regex set to the environment variable BH_FILTER
. These commands will be ignored and omittted from Bashhub.
# Filter out any commands for postgres or ssh
export BH_FILTER="(psql|ssh)"
ssh rcaloras@some-ip-address # will not be saved
You can check the configuration of this command via the bashhub filter
subcommand.
# Check if a command is filtered by my regex
export BH_FILTER="(-p)"
bashhub filter "mysql -u root -p plain-text-password"
BH_FILTER=(-p)
mysql -u root -p plain-text-password
Is Filtered. Matched ['-p']
You can turn on/off recording to Bashhub via bashhub on
and bashhub off
. By default this only affects the current bash session.
$ bashhub off
$ echo "Recording is now disabled for this session. This command won't be saved."
....
$ bashhub on
$ echo "Recording commands is now re-enabled"
You can disable for all sessions by setting bashhub off --global
this sets save_commands = False
in your bashhub config.
#ignore
added to any command will omit it from being saved. Simply add it to the end of any command and it won't be recorded in Bashhub.
$ echo "this command won't be saved" #ignore
You can delete commands from Bashhub through interactive search by pressing Delete
or Backspace
while a command is highlighted. A small dialog box will open to confirm the commands deletion. If a command is deleted, it is permanently removed from Bashhub.
Feel free to post in: https://github.com/rcaloras/bashhub-client/issues
You can also get support and follow updates @Bashhub on Twitter.