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”
- GNU Parallel – Run Concurrent Commands
- awk – Easily Process Delimited Data
- xan – csv File Processing
- python – Do Anything Else
- vim/neovim – Edit Files on the Command Line
jq – “a lightweight and flexible command-line JSON processor”
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.
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.