Giter Club home page Giter Club logo

fasthistory's Introduction

fastHistory 2 - speed up your terminal!

Store, search and automatically paste all your favourite commands directly in your terminal with a new and faster way!

With the new TDLR-pages integration, you can quickly discover and select more than 10000 ready-to-use command examples, directly in your terminal.

fh_main

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 local 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 stored command you can get a quick summary from the man page

note: this feature does not cover the syntax of all commands

man page

And easily edit the tag and description fields

edit description

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

Discover new commands

In the Discovery mode, you can easily find examples of commands from the TDLR-pages, a collection of community-maintained help pages. The search works both by command name and description. Furthermore, the + icon shows you which command is already installed on your system.

discover

Offline feature

FastHistory does not need any internet connection, so you can use it also offline!

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 Comment
Ubuntu 16.04, 18.04, 20.04* bash 3.6, 3.7, 3.8 latest unittest * xclip may need to be installed to enable the copy-to-clipboard feature
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.3.6 manual
Debian 10 zsh* 3.7 2.0.0 manual *syntax limitation
Windows* 10 (1809) bash 3.6 2.4.1 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

  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 installer.sh (offline mode)

  1. download the latest release with this easy-to-type link or manually download it
    • wget mkcn.me/f
  2. move it to the target system
  3. extract it and run the installer with the target user
    • tar -xvzf f
    • cd fastHistory-X.X
    • ./installer.sh
  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 https://mkcn.me/f && tar -xvzf f && ./fastHistory-*/installer.sh && 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 installer.sh

Note: to update from the 1.x.x version your need to follow these steps

How to uninstall

  1. download the installer script and make it executable
    • wget https://raw.githubusercontent.com/mkcn/fastHistory/master/installer.sh
    • chmod +x installer.sh
  2. run it with the uninstall flag
    • ./installer.sh -u

Note: pip3 install fasthistory is not sufficient to uninstall fastHistory

Commands and systax

Find out more about commands and syntax in the Wiki section

Copyright and dependencies

License

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

fasthistory's People

Contributors

fw-mark avatar mkcn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fasthistory's Issues

Multi-lines commands not supported

Multi-lines commands are currently ignored

Example:

echo "string1
string2
string3
" #print #multi-line

is interpreted as

echo "string1

Auto-copy feature

When a command is selected, there should be a quick way to copy it into the clipboard instead of injecting it into the terminal.

Example of usage: the command is not needed for the current machine

UI issue

  1. filter the list for tag X
  2. Show more for one of the filtered items
  3. Edit tags
  4. Remove tag X
  5. the page now shown is wrong

Tested with current master

resize bug in Discover tab

  1. go to Discover tab
  2. select an command
  3. select an example
  4. resize the windows in a way the selected example is out of screen
  5. see the error

Slow man page info

The command "man " on windows takes a couple of seconds and the UI is not responsive

Export with empty db

"f --export" command failed if db does not exist.

E.g.
INFO:root:export output: /home/runner/work/xx/xx/fastHistory_2020-03-22.db
ERROR:root:export database error: [Errno 2] No such file or directory: '/home/runner/.local/share/fastHistory/fh_v1.db'

SyntaxWarning: "is" with a literal. Did you mean "=="?

In python 3.8 the following warning is shown:

2020-03-10T08:38:37.2701777Z /home/runner/work/fastHistory/fastHistory/fastHistory/parser
/inputParser.py:234: SyntaxWarning: "is" with a literal. Did you mean "=="?
2020-03-10T08:38:37.2702595Z elif string is "":
2020-03-10T08:38:37.2703067Z /home/runner/work/fastHistory/fastHistory/fastHistory/database/databaseSQLite.py:469: SyntaxWarning: "is not" with a literal. Did you mean "!="?
2020-03-10T08:38:37.2703637Z if new_description is not None and new_description is not "" and new_description != old_description:
2020-03-10T08:38:37.2704115Z /home/runner/work/fastHistory/fastHistory/fastHistory/database/databaseSQLite.py:470: SyntaxWarning: "is" with a literal. Did you mean "=="?
2020-03-10T08:38:37.2704540Z if old_description is "":
2020-03-10T08:38:37.2705009Z /home/runner/work/fastHistory/fastHistory/fastHistory/database/databaseSQLite.py:550: SyntaxWarning: "is" with a literal. Did you mean "=="?
2020-03-10T08:38:37.2705443Z if new_cmd is None or new_cmd is "":
2020-03-10T08:38:37.2705880Z /home/runner/work/fastHistory/fastHistory/fastHistory/pick/pageGeneric.py:76: SyntaxWarning: "is not" with a literal. Did you mean "!="?
2020-03-10T08:38:37.2707169Z if index_sub_str is not -1:

Add "f --log" to view log file

Using "f --log" should inject the following command into the terminal:

nano {installation_folder}/fh.log

This will help to debug issues or to simply find the log file

Add check for input length

The length of tags, descriptions and commands should be check before to insert them into the database

zsh support

With a small change of the "f.sh" file zsh can be supported.
The ".zshrc" must be also changed.

Date is missing in log file

Each line of the log file shows the type, user and message

INFO:root:import database: 92 elements imported

The user could be removed and the date added as first column.

Add "--update" command

To update fastHistory it will be enough to type "f --update" and it will automatically inject the needed command into the terminal.

E.g. for pip3
"pip3 install -U --no-cache-dir fasthistory && $HOME/.local/bin/f"

[Feature] Online sync between computers

Currently fastHistory works completely offline.
All commands can be manually exported and imported on a different computer.

We could add a service that run in background to make a real-time sync of all stored commands.
This require also to expose some API, to define an account flow for user accounts and to provide some sort of data redundancy server side.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.