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.
-
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 forcheat
becausecheat -l
shows all that's already saved, whiletldr -l
only shows commands I've already looked up andtldr
has downloaded or somehow found the cheatsheet. -
navi Looks more powerful than the previous, but I haven't tested it enough.
-
locate
andfind
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
andpeco
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: -
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 andbtop
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: -
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.
- hyperfine
Not strictly a
-
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.
-
lazydocker A docker UI.
-
ctop A top-like program for containers.
-
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).
- 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
-
mcfly An upgraded ctrl-r where history results make sense for what you're working on right now by using a small neural network.
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.
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.
-
rg (aka ripgrep) A search tool that combines the usability of ag with the raw speed of grep.
-
sd Intuitive find & replace CLI (sed alternative)
-
a
cut
orawk
replacement:
- vhs Generates a GIF from a script. Useful to demo CLI tools.
-
delta A syntax-highlighting pager for git, diff, and grep output.
Similar tools: `diff-so-fancy`, `git-split-diffs`, `difftastic`
I found
delta
better than:- diff-so-fancy
- git-split-diffs This one breaks my terminal
- difft (aka difftastic)
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
andlazygit
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.
-
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.
- vidir
Allows to edit filenames from a folder with a vi-like UI.
vidir
is part ofmoreutils
package, which have several other cool tools.
-
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.
-
httpie human-friendly CLI HTTP client for the API era
-
curlie The power of curl, the ease of use of httpie.
-
sniffnet Monitor your network traffic.
-
mosh an
ssh
replacement Several cool features, the main one: it stays connected.
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.
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: -
cat
replacements: -
dig
replacements: -
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
.
- mtr
Didn't find it cool enough to replace good ol'
-
'locate' replacement:
- plocate
It claims to be faster, but I'm satisfied with
find
,broot
orfzf
.
- plocate
It claims to be faster, but I'm satisfied with
-
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 expandcd
functionality, I'll make it work likefzf
orbroot
, 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.
While building this list I reviewed other people's work. Here are links to similar listings:
-
Julia Evans' List of Newish CLI tools
-
ibraheemdev's Modern Unix Apps
-
Emre Sevinç's CLI for the 21 Century