Skip to content
Switch branches/tags
Go to file

fastHistory 2.0 - speed up your terminal!

fastHistory allows you to store, search and automatically paste all the important commands directly in your terminal


Why you need it?

How often do you need to reuse a command but you cannot remember it (with all the needed options/flags)?

# example of a common but not so 'easy-to-remember' bash command from my bash history
$ tar -xvzf file.tar.gz

How many times do you search the same commands on Google, over and over?

42 times.. yes.. based on my experience the answer is 42

And how many times have you told yourself to store this super useful command but you didn't?

I saved them all ..totally, with a good and detailed explanation for each command

if you know what I am talking about, fastHistory is the tool you are looking for!

Usage sample

fastHistory can save your commands directly from your terminal, all you need is a #

$ tar -xvzf file.tar.gz #
                        \-- fastHistory will store 'tar -xvzf file.tar.gz' in its internal database

You can specify one or more tags

$ tar -xvzf file.tar.gz #untar #extract #archive 

or a description

$ tar -xvzf file.tar.gz #@extract compressed files from archive

or both

$ tar -xvf archive.tar.gz #untar @extract compressed files from archive

To search the saved commands, all you need is f and the selected command wiil be automatically pasted into your terminal!

$ f

For each command you can get a quick summary from the man page

Warning: this feature currently does not cover the syntax of all commands

And easily edit the tag and description fields

Furthermore, you can easily export/import all data to make backups or to share your commands with a different machine

$ f --export
$ f --import fastHistory_2020-03-02.db

Supported OSs

fastHistory can work in any OS with python3 and a bash terminal

zsh is also supported!

List of tested OSs:

OS OS Version Shell Python versions fastHistory version Test mode Result Comment
Ubuntu 16.04 bash 3.6, 3.7, 3.8 latest unittest
Ubuntu 18.04 bash 3.6, 3.7, 3.8 latest unittest
macOS 10.15 bash 3.6, 3.7, 3.8 latest unittest python3 needs to be installed
Fedora 29 bash 3.5 2.0.0 manual pip3 requires the --user flag
Debian 9 bash 3.5 2.1.3 manual
Debian 10 zsh* 3.7 2.0.0 manual *syntax limitation
Windows* 10 (1809) bash 3.6 2.0.0 manual *using the Windows Subsystem for Linux (WSL) you can execute and store Windows commands

How to install


  • python3
  • python3-pip (only for pip3 installation)

Install with pip3

  1. pip3 install fasthistory
  2. $HOME/.local/bin/f
  3. close and reopen your terminal

Note: be sure to not use pip (python2) nor sudo (install it only for the current user)

Install with

  1. download the latest release with this easy-to-type link or manually download it
    • wget
  2. extract it
    • tar -xvzf f
  3. run the installer with the target user
    • cd fastHistory-X.X
    • ./ (this works also offline)
  4. close and reopen your terminal
  5. (optional) delete installation files
    • rm -r f fastHistory-X.X

All in one-line

cd $(mktemp -d /tmp/f.XXXXX) && wget && tar -xvzf f && ./fastHistory-*/ && cd -

How to update

Update with f (available from 2.1.1)

  1. f --update
  2. close and reopen your terminal

Update with pip3

  1. pip3 install -U --no-cache-dir fasthistory
  2. f
  3. close and reopen your terminal

Update with

How to migrate from 1.x.x to 2.x.x

  1. install fastHistory 2.0

  2. check version

    f --version

  3. import data

    • from default folder (if not already automatically imported)

      f --import $HOME/fastHistory/data/fh_v1.db

    • from custom folder

      f --import <old_fastHistory_folder>/data/fh_v1.db

How to uninstall

  1. download the installer script and make it executable
    • wget
    • chmod +x
  2. run it with the uninstall flag
    • ./ -u

Note: pip3 install fasthistory is not sufficient to uninstall fastHistory

Commands and syntax

Simple adding

<command_to_save> #[<tag> [#<tag> ...]][@<description>]

Adding without execution

f --add <command> #[<tag> [#<tag> ...]][@<description>]


# <command_to_save> #[<tag> [#<tag> ...]][@<description>]

Note: the latter is not available with zsh

Simple search

f [<filter>]

OR search: match any row where at least one of the following conditions is true:

  • the filter words are contained in the command
  • the filter words are contained in the tags list
  • the filter words are contained in the description

Advanced search

f [<filter>] [#<tag_filter> ...] [@<description_filter>]

AND search: match any rows where all the following conditions are true:

  • the filter words are contained in the command OR tags OR description
  • the tag_filter words are contained in the tag list
  • the description_filter words contained in the description

Export database

f --export [<output_name>]
  • the output is the file name of the output database (this parameter is optional)

Import external database

f --import <input_name>
  • the input_name is the file name of the input database (e.g. fastHistory_2019-03-23.db)

Change fastHistory configuration

f --config

Force a fastHistory setup to fix possible issues

f --setup

this may be needed if you install zsh after fastHistory

Check fastHistory version

f --version

Update fastHistory

f --update

Show fastHistory help

f --help


To fix common issues you can:

  • run f --setup to automatically check and fix your environment
  • explicitly call $HOME/.local/bin/f instead of f
  • restart your terminal to reload the bash hook

In case of persistent issues please report them together with the following info:

  • OS version
  • fastHistory version (f --version)

fastHistory structure

user data folder


$HOME/.local/share/fastHistory/fh_v1.db (database file)

$HOME/.local/share/fastHistory/fh.log (log file)

code folder (pip3)


code folder (


bash (zsh) hook in $HOME/.bashrc ($HOME/.zsh)

source "/home/USER/.local/lib/pythonX.Y/site-packages/fastHistory/bash/"


The license for this is the same as that used by GNU bash, GNU GPL v3+.