Save cli commands and fuzzy find them later

Related tags

Command-line crow
Overview
crow

crow - cli command memorizer

What is crow? | Installation | Usage | FAQ

What is crow?

crow (command row) is a CLI tool to help you memorize CLI commands by saving them with a unique description. Whenever you can't remember a certain command you can then use crow to fuzzy search commands by their description.

Installation

To install crow make sure you have homebrew installed and run:

brew tap sandstorm/crow
brew install crow

Note: crow has currently only been tested on Mac OSX and we therefore only compile it for mac. However if you have the rust tool chain installed you can still either clone the repository and build from source or install the package from crates.io (the package is not yet published, but will be soon). Technically crow should run on most UNIX systems and maybe even on Windows. As soon as crow has been tested on more systems we may provide additional compiled binaries.

crow-screenshot

Usage

Commands

  • crow - default command, runs crow in fuzzy search mode
  • crow help - shows help information
  • crow add <command> - adds a provided command and prompts the user for a description
  • crow add:last - adds the users last used command and prompts for a description (note: only bash and zsh are currently supported)

Usage of the fuzzy mode

The fuzzy mode allows you to search, edit and delete your commands. Your commands are saved to ~/.config/crow/crow_db.json - so you could also manually edit that file. When you press enter on command, crow will exit and copy the command into your clipboard so you can use it where you need it.

mappings

command description
Select previous command
Select next command
mousewheel scroll description
ctrl+f find mode
ctrl+e edit mode to edit current command
ctrl+d delete mode to delete current command
ctrl+q quit crow

FAQ

Why the name

There are multiple reasons for this:

  1. I simply like crows
  2. c-row -> command row -> command line -> that seemed fitting to me
  3. Crows are very good at hiding things (e.g. peanuts), but also at finding them again. crow does exactly that, it "hides" your commands and helps you finding them, whenever you need them ;)

Isn't this just some glorified note taking tool?

Yes. :) - Technically you could store anything inside crow and if you are very well organized and able to fuzzy search your notes anyway, you might not gain that much out of using crow. However I like to have focused tools and to be able to quickly access stuff from the command line, which is why I built crow.

You might also like...
Skim - Fuzzy Finder in rust!
Skim - Fuzzy Finder in rust!

Life is short, skim! Half of our life is spent on navigation: files, lines, commands… You need skim! It is a general fuzzy finder that saves you time.

Fzf - A command-line fuzzy finder
Fzf - A command-line fuzzy finder

fzf is a general-purpose command-line fuzzy finder. It's an interactive Unix filter for command-line that can be used with any list; files, command hi

A simple, modern fuzzy finder tool to run examples in a Cargo project.

cargo-rx cargo-rx is a simple, modern Runner for Examples in a Cargo project. This crate provides a single executable: rx. Basically anywhere you woul

Fuzzy Index for Python, written in Rust. Works like error-tolerant dict, keyed by a human input.

FuzzDex FuzzDex is a fast Python library, written in Rust. It implements an in-memory fuzzy index that works like an error-tolerant dictionary keyed b

A multi-page fuzzy launcher for your terminal, written in Rust.
A multi-page fuzzy launcher for your terminal, written in Rust.

fr33zmenu A multi-page fuzzy launcher for your terminal, written in Rust. Supports theming and multiple keybind schemes, including basic vim keybinds.

Integrate Mcfly with fzf to combine a solid command history database with a widely-loved fuzzy search UI
Integrate Mcfly with fzf to combine a solid command history database with a widely-loved fuzzy search UI

McFly fzf integration Integrate McFly with fzf to combine a solid command history database with a widely-loved fuzzy search UI Features: Advanced hist

Turn static CLI commands into TUIs with ease
Turn static CLI commands into TUIs with ease

lazycli Turn static CLI commands into TUIs with ease Demo: Usage Pick a command that spits out either a list or table of content, like ls, docker ps,

koyo is a cli tool that lets you run commands as another user. It is similar to doas or sudo.

koyo is a cli tool that lets you run commands as another user. It is similar to doas or sudo.

A cli tool that let's you map commands to a shorter alias
A cli tool that let's you map commands to a shorter alias

Runner 🤔 What is this? A cli tool that let's you map commands to a shorter alias. Run the mapped command using the ALIAS_NAME. runner ALIAS_NAME

Comments
  • Change logo to have transparent background

    Change logo to have transparent background

    On any background that isn't white it's quite jarring to have a white cutout around the logo. Making the logo background transparent solves this issue, although the logo might now be less distinct if the page it's displayed on matches the logo colours.

    Before: image

    After: image

    opened by WalterSmuts 1
  • `add:last` should also support multiline commands

    `add:last` should also support multiline commands

    Currently add:last simply retrieves the penultimate line of the users history. However this behavior is not sufficient for multiline commands.

    The command should also be displayed correctly inside the detail view, so that each line of the string is actually a new line.

    enhancement 
    opened by on3iro 0
  • RUSTSEC-2021-0019: Multiple soundness issues

    RUSTSEC-2021-0019: Multiple soundness issues

    Multiple soundness issues

    | Details | | | ------------------- | ---------------------------------------------- | | Package | xcb | | Version | 0.10.1 | | URL | https://github.com/RustSec/advisory-db/issues/653 | | Date | 2021-02-04 |

    Calls std::str::from_utf8_unchecked() without any checks

    The function xcb::xproto::GetAtomNameReply::name() calls std::str::from_utf8_unchecked() on the raw bytes that were received from the X11 server without any validity checks. The X11 server only prevents interior null bytes, but otherwise allows any X11 client to create an atom for arbitrary bytes.

    This issue is tracked here: https://github.com/rtbo/rust-xcb/issues/96

    xcb::xproto::GetPropertyReply::value() allows arbitrary return types

    The function xcb::xproto::GetPropertyReply::value() returns a slice of type T where T is an unconstrained type parameter. The raw bytes received from the X11 server are interpreted as the requested type.

    The users of the xcb crate are advised to only call this function with the intended types. These are u8, u16, and u32.

    This issue is tracked here: https://github.com/rtbo/rust-xcb/issues/95

    Out of bounds read in xcb::xproto::change_property()

    xcb::xproto::change_property has (among others) the arguments format: u8 and data: &amp;[T]. The intended use is one of the following cases:

    • format = 8 and T = u8
    • format = 16 and T = u16
    • format = 32 and T = u32 However, this constraint is not enforced. For example, it is possible to call the function with format = 32 and T = u8. In this case, a read beyond the end of the data slice is performed and the bytes are sent to the X11 server.

    The users of the xcb crate are advised to only call this function with one of the intended argument combinations.

    This issue is tracked here: https://github.com/rtbo/rust-xcb/issues/94

    'Safe' wrapper around std::mem::transmute()

    The function xcb::base::cast_event() takes a reference to a xcb::base::GenericEvent and returns a reference to an arbitrary type, as requested by the caller (or found via type interference). The function is implemented as a direct call to std::mem::transmute(). Since the return type is not constrained, this allows transmution to an incorrect type or a type that is larger than the X11 event that was passed in.

    X11 events are mostly always 32 bytes large and this function works as intended.

    Users are advised to only cast to the event structs provided by the xcb crate (and hope for the best).

    This issue is tracked here: https://github.com/rtbo/rust-xcb/issues/78

    See advisory page for additional details.

    opened by github-actions[bot] 0
  • RUSTSEC-2021-0119: Out-of-bounds write in nix::unistd::getgrouplist

    RUSTSEC-2021-0119: Out-of-bounds write in nix::unistd::getgrouplist

    Out-of-bounds write in nix::unistd::getgrouplist

    | Details | | | ------------------- | ---------------------------------------------- | | Package | nix | | Version | 0.22.0 | | URL | https://github.com/nix-rust/nix/issues/1541 | | Date | 2021-09-27 | | Patched versions | ^0.20.2,^0.21.2,^0.22.2,>=0.23.0 | | Unaffected versions | <0.16.0 |

    On certain platforms, if a user has more than 16 groups, the nix::unistd::getgrouplist function will call the libc getgrouplist function with a length parameter greater than the size of the buffer it provides, resulting in an out-of-bounds write and memory corruption.

    The libc getgrouplist function takes an in/out parameter ngroups specifying the size of the group buffer. When the buffer is too small to hold all of the reqested user's group memberships, some libc implementations, including glibc and Solaris libc, will modify ngroups to indicate the actual number of groups for the user, in addition to returning an error. The version of nix::unistd::getgrouplist in nix 0.16.0 and up will resize the buffer to twice its size, but will not read or modify the ngroups variable. Thus, if the user has more than twice as many groups as the initial buffer size of 8, the next call to getgrouplist will then write past the end of the buffer.

    The issue would require editing /etc/groups to exploit, which is usually only editable by the root user.

    See advisory page for additional details.

    opened by github-actions[bot] 0
Releases(v0.5.2)
Owner
sandstorm
sandstorm - building great web applications
sandstorm
Fuzzy a general fuzzy finder that saves you time in rust!

Life is short, skim! Half of our life is spent on navigation: files, lines, commands… You need skim! It is a general fuzzy finder that saves you time.

Jinzhou Zhang 3.7k Jan 8, 2023
🧠 A command-line utility for switching git branches more easily. Switch branches interactively or use a fuzzy search to find that long-forgotten branch name.

git-smart-checkout A git command extension for switching git branches more efficiently. About Interactively switch branches or fuzzy search for that f

Cezar Craciun 51 Dec 29, 2022
🤖 just is a handy way to save and run project-specific commands.

just just is a handy way to save and run project-specific commands. (非官方中文文档,这里,快看过来!) Commands, called recipes, are stored in a file called justfile

Casey Rodarmor 8.2k Jan 5, 2023
Uses the cardano mini-protocols to receive every block and transaction, and save them to a configurable destination

cardano-slurp Connects to one or more cardano-node's, streams all available transactions, and saves them to disk (or to S3) in raw cbor format. Usage

Pi Lanningham 16 Jan 31, 2023
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 369 Jan 2, 2023
Workflows make it easy to browse, search, execute and share commands (or a series of commands)--without needing to leave your terminal.

Workflows The repo for all public Workflows that appear within Warp and within commands.dev. To learn how to create local or repository workflows, see

Warp 227 Jun 1, 2022
fas stand for Find all stuff and it's a go app that simplify the find command and allow you to easily search everything you nedd

fas fas stands for Find all stuff and it's a rust app that simplify the find command and allow you to easily search everything you need. Note: current

M4jrT0m 1 Dec 24, 2021
fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find

fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.

David Peter 25.9k Jan 9, 2023
Find potential unused enabled feature flags and prune them.

Potential unused, enabled feature flag finder and pruner. This cargo tool allows you to find and prune enabled, but, potentially unused feature flags

Timon 118 Jun 29, 2023
Help Skelly to find bones, combine them to build his body back

Bones Collector Help Skelly to find bones, combine them to build his body back! Game made for the bevy Jam#2. Play it here in your browser: itch.io! R

Thomas 2 Nov 15, 2022