My Favorite Command Line Tools

Here’s a short list of the most useful command line tools that I have found in my career as a software engineer. I’ll occasionally add more details and tools.

jq – “a lightweight and flexible command-line JSON processor”

https://jqlang.github.io/jq/

I use this anytime I need to inspect/manipulate json data. It is extremely powerful. I highly recommend that you learn how to use it.

Example: Use curl to retrieve an array of todos from an API and then pipe that into jq which selects out all of the incomplete todos.

Bash
curl -sS https://jsonplaceholder.typicode.com/todos | jq '.[] | select(.completed==false)'

GNU Parallel – Run Concurrent Commands

https://www.gnu.org/software/parallel

I find it especially useful for doing multiple api requests simultaneously. MUCH faster than a simple while loop.


awk – Easily Process Delimited Data

https://www.gnu.org/software/gawk/manual/gawk.html#Getting-Started

Awk can be used to do a lot of stuff, but I think where it really shines is for processing lines of delimited text input.


xan – csv File Processing

https://github.com/medialab/xan


python – Do Anything Else


vim/neovim – Edit Files on the Command Line

Steep learning curve, but extremely useful for those times when you have to edit files in the command line.

I use the ideaVim plugin in intelliJ for code development so that I stay sharp with the vim motions.