Skip to content

Latest commit

 

History

History
370 lines (247 loc) · 16.2 KB

README.md

File metadata and controls

370 lines (247 loc) · 16.2 KB

Cool New GNU/Linux Apps

A list of cool new GNU/Linux apps.

Sure, you can stick to good old find, sed, awk and all those useful utilities that have served us well so many years. If you're a sysadmin/devops or a person who works with new machines all the time, you should stick to the basis.

On the other hand, if you have full control of your set up and it doesn't change regularly, maybe you should check this list of nice apps that sometimes bring new functionality to the CLI, and on other cases expand, replace or ease old functionality.

I'll try to not spam with new stuff that may not really add anything useful to my current workflow.

Cheatsheets

  • cheat cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.

    There're already made community sheets.

  • tldr Python command-line client for tldr pages.

    In the same vein of cheat. Haven't used any of them enough to make a decision. So far I'm inclined for cheat because cheat -l shows all that's already saved, while tldr -l only shows commands I've already looked up and tldr has downloaded or somehow found the cheatsheet.

  • navi Looks more powerful than the previous, but I haven't tested it enough.

Tools of the trade

  • locate and find replacements:

    • fzf CLI fuzz finder

    • peco CLI fuzz finder

    • broot Search as-you-type files and folders. Press ENTER to launch associated viewer.

    • fd Simple, fast and user-friendly alternative to find

    fzf and peco are more general utilities: basically you can pipe anything through them and use their features to search stuff.

  • diffoscope In-depth comparison of files, archives, and directories.

  • duf a replacement for df Colorfull output, arranged by type, and output JSON, and more.

  • A couple of du replacements:

    • ncdu Provides an arrow-keys navigable interface.

    • dust Presents not only the raw information, but also a bar graph so you can visually see disk consumption.

  • top replacements: (also see below the Maybe unworthy section)

    • htop My go-to process lister for many years.

    • btop Pretty cool: several display presets, highlighted hot-keys so you don't have to go to the help to recall how to use it, zoom into the information box you're more interested. The same author also built bashtop and bpytop which I didn't fully reviewed but seem to have the same set of features, only that bashtop is made in Bash, bpytop in Python and btop in C++.

    I'm an htop user, usually the only thing I want to look is which program is consuming all my CPU power or my RAM, so I don't think I'll be switching, however if I would, btop is the strongest candidate.

  • hexdump replacement:

    • hexyl Pretty cool: shows spaces and space-like characters in green, and more-than-one-byte unicode characters in yellow. Also shows the text version in a third column.
    • hxl A more performant version of hexyl made in C. I'm fine with hexyl.
  • time replacement:

    • hyperfine Not strictly a time replacement cause it does much more: see all those new utilities claiming to be faster than the other? You can use this benchmarking tool to check those claims yourself.
  • entr Run arbitrary commands when files change. A good replacement for specific development tools that watch for changes. One ring to rule 'em all.

  • tmate Share your terminal with someone, either in read-only mode, or you can give access to write too.

  • lnav Navigate your logs with colors.

  • agrind (aka angle-grinder) Allows you to parse, aggregate, sum, average, min/max, percentile, and sort your data. You can see it, live-updating, in your terminal. It lets you do sophisticated analytics on the CLI.

Docker

Shell history

  • atuin Several features, but I liked this the most: the same history across terminals, across sessions, and across machines. UPDATE 2023-08-20: tried it, but it doesn't deliver its promises:

    • the only thing that works is the importer, however I got my bash history with timestamps and the importer didn't take them in consideration. Database was filled with -1 as timestamp for all the commands imported.
    • it doesn't save into Sqlite database new commands, nor immediately, nor upon exiting shell, nor ever.
    • it doesn't communicate with local Postgres set up for syncing (I didn't want to send my history to the cloud, no matter how much they promise it's encrypted).

    So I'm keeping it around and not moving it into the Unworthy section yet. Will check later to see if the issues have been solved (yes, I reported them).

  • mcfly An upgraded ctrl-r where history results make sense for what you're working on right now by using a small neural network.

File transfer

Both croc and wormhole (aka magic-wormhole) are pretty good, however I like croc better as it comes in a single binary, while wormhole install several Python packages to work.

HTTP Resquests

CLI interaction with web services as human-friendly as possible. Cool tools for testing, debugging, and generally interacting with APIs & HTTP servers.

hx is a reimplementation of httpie that claims to have better performance. I didn't tested it as there's no package for Archlinux and I didn't want to install it locally.

Find & Replace

  • rg (aka ripgrep) A search tool that combines the usability of ag with the raw speed of grep.

    Similar tools: `ag`, `ack`

    Haven't tried any of those, I'm fine with ripgrep and didn't find any feature on those that made me want to try them.

  • sd Intuitive find & replace CLI (sed alternative)

  • a cut or awk replacement:

Screen recording and alike

  • vhs Generates a GIF from a script. Useful to demo CLI tools.

Git related

Git UIs

Untested, under review

I'm not fan of git UIs, but sometimes I use gitg to check the history. So maybe these (tig, gitui, lazygit, grv) can make it into the usual apps on my workflow.

  • grv So far this is the one I like the most. But have to look into its feature set more closely to decide if it helps me or not.

  • tig An ncurses-based text-mode interface for git. It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands.

  • gitui Blazing fast terminal-ui for git written in rust.

    Claims to break tig and lazygit on being fast on big repos.

  • lazygit I don't really like the motivations of the author. This is a serious candidate for the Maybe unworthy section.

Databases

  • pgcli Great CLI tool to works with Postgresql databases. Check it's site too.

  • iredis Terminal client for Redis with auto-completion and syntax highlighting.

Editing

  • vidir Allows to edit filenames from a folder with a vi-like UI. vidir is part of moreutils package, which have several other cool tools.

JSON

  • gron Transforms JSON into discrete assignments to make it easier to grep for what you want and see the absolute 'path' to it. It eases the exploration of APIs that return large blobs of JSON but have terrible documentation.

  • jq Command-line JSON processor.

  • ijq Interactive jq tool, like jqplay, but for the commandline.

  • jc CLI tool and python library that converts the output of popular command-line tools and file-types to JSON or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.

  • jless A command-line pager for JSON data. Use it as a replacement for whatever combination of less, jq, cat and your editor you currently use for viewing JSON files.

Requests / API exploration / Downloading

  • httpie human-friendly CLI HTTP client for the API era

  • curlie The power of curl, the ease of use of httpie.

Networking

  • sniffnet Monitor your network traffic.

  • mosh an ssh replacement Several cool features, the main one: it stays connected.

Markdown

  • glow CLI markdown renderer and file navigator

  • typora A minimal markdown editor and reader.

Shells

Tired of Bash? Try these:

  • fish Shell reimagined.

  • xonsh Python in your shell and shell in your Python. Pretty cool.

  • nushell Everything is data, instead of streams of plain text. Nu speaks JSON, YAML, SQLite, Excel, and more out of the box. Rather than being either a shell, or a programming language, Nushell connects both by bringing a rich programming language and a full-featured shell together into one package.

Maybe unworthy

I put here commands that, in my humble opinion and for my use case, don't worth my time. As they don't add any significant improvement, new features or easyness compared to the usual old command. Having colors is cool, but redoing a whole application just to add some colors is... Unnecessary (to put it kindly).

  • ls replacements:

    • exa Doesn't do anything useful that ls or git status doesn't already do.

    • lsd Doesn't do anything useful that ls doesn't already do. But looks cooler than exa to me.

  • cat replacements:

    • bat A cat clone with syntax highlighting and Git integration.

    • most This one's also colorful and can show images ANSI-converted.

      Besides syntax highlighting, I don't see real value to replace cat

  • dig replacements:

    • drill Utility from ldns C library.

    • dog

      I don't do a heavy use of dig, so take this with a grain of salt: drill looks the same as dig, maybe its output a little bit different. dog on the other hand may be useful for scripting, as you can ask for specifics fields and also request the output in JSON.

  • Other top replacements:

    • glances Awful UI. Adds extra info htop doesn't have, but it's a nightmare to watch.

    • zenith A little better than glances, but still far from the cool ones

    • gtop Smooth UI, but I think it wastes screen space with its memory, swap, disk usage, and network history boxes. Cause all of them use a big portion of the screen just to show a percentage. Also it doesn't show all my cores and the boxes are not real "windows" like in bottom.

    • bottom Neat UI and also adds more information than htop, also can scroll over my CPU cores. However it didn't catch my eye.

  • traceroute replacement:

    • mtr Didn't find it cool enough to replace good ol' traceroute.
  • 'locate' replacement:

    • plocate It claims to be faster, but I'm satisfied with find, broot or fzf.
  • fasd A kind of command abbreviator, but I really didn't like the way it works. I prefer to be explicit in my command line. Also repo's currently (2023-08-19) archived without reason (I hate when they do that) and hasn't received any new commits since 2015. So totally unworthy, not maybe.

  • cd replacements:

    None of these are my cup of tea. I don't like having to add folders into a database and I don't like writing obscure abbreviations on my command line. I'm fine working my way around pressing TAB key and autocompleting. If I'd expand cd functionality, I'll make it work like fzf or broot, greping through your folders and presenting the most likely one.

  • mc replacements:

    I don't usually use file managers, and when I need some visual aid in my file navigation pursuits, I have more than enough with good ol' Midnight Commander

  • direnv Yeah... I don't like this kind of magic. Loading environment variables when you require is just . env-file, so this is not worthy for me.

  • asdf A single version manager for any programming language. This is a cool project, but I won't really use it.

  • fuck Correct your commands when you mispell them. I don't like this kind of magic.

  • mdp A markdown presentation tool. Not interested, but I put it here for the sake of completeness, as I'm reviewing all listed tools in Julia Evans' post.

References and similar works

While building this list I reviewed other people's work. Here are links to similar listings: