Terminal Fun: Basic Utils Part 3

This is the third post of a series where I want to give some tips and tricks for the Terminal/CLI.
You might want to check out the first and the second posts. As previously, buckle-up, put your helmet on, grab a … frying pan and have fun.

Network Tools


httpie is a command-line HTTP client (like curl or wget) for the API era. It comes with JSON support, syntax highlighting, persistent sessions, wget-like downloads, plugins, and more. See the features on the Official Site or the readme.



httpstat visualizes curl statistics. It tells you where did your request spend time.



sslscan is a test utility that tells you information about SSL/TLS enabled services and discovers supported cipher suites. Check the readme.



mitmproxy is your swiss-army knife for debugging, testing, privacy measurements, and penetration testing. It can be used to intercept, inspect, modify, and replay web traffic such as HTTP/1, HTTP/2, WebSockets, or any other SSL/TLS-protected protocols.



mtr combines the functionality of the traceroute and ping programs in a single network diagnostic tool.

As mtr starts, it investigates the network connection between the host mtr runs on and a user-specified destination host. After it determines the address of each network hop between the machines, it sends a sequence ICMP ECHO requests to each one to determine the quality of the link to each machine. As it does this, it prints running statistics about each machine.



tldr shows you help pages:


navi is like an interactive cheatsheet:



up stands for Ultimate Plumber, it’s a tool for writing Linux pipes interactively, with a live preview of command results.

It helps interactively and incrementally explore textual data by making it easier to quickly build complex pipelines, thanks to a fast feedback loop. This is achieved by boosting any typical text-processing utils such as grep, sort, cut, paste, awk, wc, perl, etc. by providing a quick, interactive, scrollable preview of their results.

up-demo You can watch the same as an asciicast.


(hhighlighter](https://github.com/paoloantinori/hhighlighter) (h) is a tiny utility to highlight multiple keywords with different colors, it’s pretty nice for logs.

Pro Tip: alias hl='h ERROR INFO WARN DEBUG' (hl as highlight logs)
and you can do: cat logs/service.log | hl



mainframer was created to allow you to move your build process from a local machine to a remote one. Since it is a nice combo of ssh + rsync, it supports anything you can execute as a command. It will sync files to a remote machine, execute a command, and sync files back.

I found it very handy for performance testing, where the test suite is on your local box which will be copied (rsync) to a remote machine, then the tests will be executed (ssh) and the report will be synced back (rsync). It’s very simple solutions to run heavy operations on remote machines.

Please notice that 3.x is a complete rewrite of the project and it is not ready yet, the current version that you can use is 2.x.


GNU datamash

GNU datamash is a command-line program which performs basic numeric, textual and statistical operations on input textual data files (e.g.: count, sum, min, max, mean, stdev, string coalescing).

Example: sum the values in the first column

$ seq 10 | datamash sum 1

Example: calculating basic statistics like mean, 1st quartile, median, 3rd quartile, IQR, sample-standard-deviation, and p-value of Jarque-Bera test for normal distribution:

$ datamash -H mean 1 q1 1 median 1 q3 1 iqr 1 sstdev 1 jarque 1 < FILE.TXT
mean(x)   q1(x)  median(x)  q3(x)   iqr(x)  sstdev(x)  jarque(x)
45.32     23     37         61.5    38.5    30.4487    8.0113e-09

Thanks for the tip to Daniel Hinojosa


You might have noticed that some of your demos above were recorded in a seemingly weird but pretty nice way. With asciinema you can record and share your terminal sessions, the right way. :) You can forget screen recording apps and blurry videos. It’s a lightweight, purely text-based approach to terminal recording.


Posts in this series

Thanks to Peter, who let me know about some of these tools.