My favorite cli tools (not only) for development

I recently reinstalled one of my dev machine at work and I needed to reinstall stuff I use for web development. So here is the list with tools / scripts I use all the time. These tools are not really intended for developers only, these can be used by anyone working with cli (command line interface)

My dev machine is Linux (currently Kubuntu, that’s Ubuntu with KDE – I like KDE a lot) – most of these tools are also available for Mac and some for Windows.


exa - a replacement for ls

exa is a replacement for the ls command.

    • colors
    • git : shows which files or dirs were modified, created etc.
    • tree view – just add –tree and you get a nice tree view of your files and sub dirs.

you can simply use it by executing “exa” in your terminal, but personally I created an alias in my .zshrc file for “ls”:
ls='exa --long --header --git'

get exa here.


byobu is a terminal multiplexer. With it you can use tabs and split-windows in one terminal session. To create a new tab you press F2, to switch between tabs you press ALT+RIGHT or LEFT. You can create split-views: I use it to see the output of a file watcher (eg. webpack) and do other terminal stuff in other view. byobu is simply one of the first programs I install everywhere because it makes me very productive. Of course that’s not all byobu can do for you, there are bunch of other cool things.


get byobu here


as the mame says, git for lazy people 😉 – you can start lazygit in a directory with a git repository and you can see everything important on one page, you can see your history, which files are modified, what exactly was modified, you can execute most git command by pressing a key. I use it very often to see what has been modified and I use it to commit / push / pull.


get lazygit here


lazydocker was developed by the same developer as lazygit. I use it to see which container are running and see logs and cpu stats. Very easy to use.


get lazydocker here


broot or br is a small tool listing files. It is like a file manager. I use it often to quickly navigate / search inside a project directory. Just start typing and it will show you where the file in your project dir is. Then you can execute various commands, like removing the file or cd-ing into that dir and more. It has also a usage feature, it will show you where the biggest files are.

I am broot
broot (br)

in the above picture I typed in “controller” It showed me all files with controller in their names -Instantly.

get broot here


It acts as a powerful server / router. It is easy to configure: you simply edit a file called Caddyfile which is similar to yaml and json. What I use it for: on my dev machine I use it as a reverse proxy so I can map someproject.local to the proper docker container (or whatever you like). E.g. I have a web server running on port 7999, instead of accessing it by http://localhost:7999, I can reroute it to something.local – For this the Caddyfile looks like this:

caddy is also able to serve your stuff using ssl (automatic certs powered by letsencrypt). Caddy can also be used in production, it also can act as load balancer which is also very easy to configure.

Notice: I am aware of docker reverse proxy, it is good for docker containers but caddy is more general and can be used for everything.

get caddy here

ag (Silver Searcher)

ag silversearcher

ag (aka silver searcher) is a FAST search tool for your code. I use it all the time. It works like grep but is easier to use and looks better. It will show you the results in a cool way. How to use? just enter ag sometext – it will show you the results as fast as possible.  Of course it also understands regex. By default it skips directories / files in your .gitignore.

get silver searcher here

That’s just a small list of some of my favorite cli tools I use every day.

Do you have your own favorite cli tools you can’t live without? Or did you create your own tool? Write them in the comments! 🙂

Please follow and like me:

Leave a Reply

Your email address will not be published. Required fields are marked *