A python tool connected to your terminal to store important commands and search them in a new and faster way
Project description
fastHistory 2.0 - speed up your terminal!
- Intro
- Supported systems
- Install
- Update
- Migrate from 1.x to 2.x
- Commands and syntax
- Troubleshooting
- License
fastHistory allows you to store, search and automatically paste all the important commands directly in your terminal
Intro
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
Requirements
python3
python3-pip
(only for pip3 installation)
Install with pip3
pip3 install fasthistory
$HOME/.local/bin/f
- close and reopen your terminal
Note: be sure to not use pip
(python2) nor sudo
(install it only for the current user)
Install with installer.sh
- download the latest release with this easy-to-type link or manually download it
wget mkcn.me/f
- extract it
tar -xvzf f
- run the installer with the target user
cd fastHistory-X.X
./installer.sh
(this works also offline)
- close and reopen your terminal
- (optional) delete installation files
rm -r f fastHistory-X.X
All in one-line
cd $(mktemp -d /tmp/f.XXXXX) && wget https://mkcn.me/f && tar -xvzf f && ./fastHistory-*/installer.sh && cd -
How to update
Update with f (available from 2.1.1)
f --update
- close and reopen your terminal
Update with pip3
pip3 install -U --no-cache-dir fasthistory
f
- close and reopen your terminal
Update with installer.sh
- same steps as installation
How to migrate from 1.x.x to 2.x.x
-
check version
f --version
-
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
- download the installer script and make it executable
wget https://raw.githubusercontent.com/mkcn/fastHistory/master/installer.sh
chmod +x installer.sh
- run it with the uninstall flag
./installer.sh -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>]
or
# <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
Troubleshooting
To fix common issues you can:
- run
f --setup
to automatically check and fix your environment - explicitly call
$HOME/.local/bin/f
instead off
- 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
$HOME/.local/share/fastHistory/fh_v1.db
(database file)
$HOME/.local/share/fastHistory/fh.log
(log file)
code folder (pip3)
$HOME/.local/lib/pythonX.Y/site-packages/fastHistory/
code folder (installer.sh)
$HOME/.fastHistory/
bash (zsh) hook in $HOME/.bashrc
($HOME/.zsh
)
...
source "/home/USER/.local/lib/pythonX.Y/site-packages/fastHistory/bash/f.sh"
License
The license for this is the same as that used by GNU bash, GNU GPL v3+.
Copyright
The following external projects have been used as part of fastHistory:
- https://github.com/rcaloras/bash-preexec
- goal: this bash script is used to hook the commands from the terminal
- code section:
bash-preexec.sh
- changes: no change
- https://github.com/idank/bashlex
- goal: this Python module is used to parse bash commands in order to show info from the man page
- code section:
fastHistory/parser/bashlex/
- changes: no change
- https://github.com/wong2/pick
- goal: this Python module has been used to select the option from the menu
- code section:
fastHistory/pick
- changes: all code has been restructured and adapted with a different UI
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for fastHistory-2.1.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12949a556d174522d168ec691a89c7be58311a09f42b51d8fddfd6843b13cac2 |
|
MD5 | ca06c31abc11f6de09d7df19a18e966c |
|
BLAKE2b-256 | a3d6c5b08fb9007412f3d6e4afefa788af06c32e6cca330fda74fb8b3041e8c5 |