Small CLI tools that I use every day
Small, invisible but anyway essetial
Published on
• Last update on
Hi! It’s July ‘24, and finally I’m writing a list of tools for terminal that I’ve collected over the years.
I mostly live in the terminal, so I decided to clean my configuration and make it reliable and maintainable.
I hope this list will make you discover something new. Most of them are really—really—famous but hey, how knows! 😉
NB
- I’m using them in
Alacritty
. - This is list made just by personal preferences.
- This post has a section containing the suggestions from the readers. Write me to add yours!
zoxide
The king 👑 of tools for terminals. I think I just can’t make it without it. Maybe only with the next tool.
zoxide
remembers which directories you use most frequently, so you can “jump” to them.
You can also reorder the priority and add folders manually.
It stores everything in a local sqlite
database.
Install zoxide
brew install zoxide
fzf
fzf
is a general-purpose fuzzy finder and is just the best.
I started using it in my neovim
config inside telescope
.
After a while I just thought about integrating it better in my workflow.
This way I learned that can be used also to:
- search through the commands’ history (
CTRL-R
) - search for a file name while typing a command in the shell and paste the path in the command (
CTRL-R
) - move in a directory by searching the name (
CTRL-C
)
Install fzf
brew install fzf
trak
As a freelance I need to keep track of things I do for my customers.
Since I don’t want to write down manually all the session of work that I do
or use a complicated tool I create trak
.
It’s a small CLI that allow you to create sessions of work related to projects. You can also manage “sprints” if you want.
I think it can be useful also to those that wants to create a habit. For example to those who are trying to keep up with their blog.
Give it a try and let me know.
Install trak
brew install lcfd/trak/trak
eza
(ex exa
)
eza
is fork and replacement for ls written in Rust.
I’ve used exa
for quite some time, but lately I discovered that was unmaintained.
It’s tricky to get it because the repository isn’t archived because, as they say:
(This repository isn’t archived because the only person with the rights to do so is unreachable).
Install eza
brew install eza
bat
Bat is a replacement for cat
.
It supports syntax highlighting, it communicates with git and does automatic paging.
Install bat
brew install bat
zellij
Zellij isn’t for everyone. Unlike the other tools in this list, it radically modifies the workflow instead of integrating seamlessly.
Install zellij
brew install zellij
mise-en-place
(or just mise
)
Mise
is a replacement for asdf
.
It’s simpler and faster.
To install something with asdf
I had always to refer to the documentation.
As soon as I’ve tried it I haven’t look back.
It installs and manages dev tools/runtimes, manages environment variables, and is a task runner.
Install mise
brew install mise
yq
It’s a YAML, JSON and XML processor.
It’s similar to jq
, but it handles more file formats.
You can read, update, merge and convert the supported file formats.
I prefer this over jq
because it is more versatile.
Install yq
brew install yq
lazygit
That’s one of the latest tools added to my belt. It took me a while to finally give it a serious try.
My tools of choice, talking about git, were the standard CLI and the vscode
integrated UI.
In neovim
I was using neogit
, but it wasn’t enough.
I decided then to try with lazygit.nvim
and after a few days of fatigue I managed to learn some combo.
There are still certain things that I need to get accustomed to, like the comprehension of diff and the resolution of conflicts.
This addition has been a W, for sure.
Install lazygit
brew install lazygit
fd
It’s a simple alternative to the find
command.
With fzf
In combination with fzf
it makes searching files a lot faster.
For example:
# Generate input
export FZF_DEFAULT_COMMAND='fd --type file'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Install fd
brew install fd
starship
https://github.com/starship/starship
antigen
In order to use all those tools at the best of their possibilities I needed to configure zsh
also at the best.
To do this I use antigen
.
By using it you can install just what you need instead of tons of packages you’ll end up not using.
gh
The CLI for GitHub. I’m just experimenting with it. Sometimes I just want to avoid using the browser UI, so this can be a good alternative.
For example, I can list the issue in a repository by typing gh issue list --assignee "@me"
.
Install gh
brew install gh
xplr
xplr
is a TUI file explorer.
I’m still trying to understand if it can fit in my workflow.
It’s preferable than using the macOS Finder
if I can make it work.
Install xplr
brew install xplr
toot
If you want to interact with Mastodon from the terminal this CLI is perfect.
Install toot
brew install toot
Other tools
I want to keep this list short, so those are other tools that I use less frequently.
- https://cht.sh/
- https://github.com/samtay/so
- https://github.com/atuinsh/atuin replaces your existing shell history with a SQLite database
Am I missing something?
I’m sure I’m missing something. If you have suggestions write me on Maston or X!
🆙 More points if it’s something about Neovim, Python or DevOps.
Suggestions from the readers
I’ve been trialing yazi for my terminal file browser. Bonus points, it also uses Lua for config.