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
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
httpstat
visualizes curl
statistics. It tells you where did your request spend time.
sslscan
sslscan
is a test utility that tells you information about SSL/TLS enabled services and discovers supported cipher suites. Check the readme.
mitmproxy
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
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.
Others
tldr
tldr
shows you help pages:
navi
navi
is like an interactive cheatsheet:
up
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.
You can watch the same as an asciicast.
hhighlighter
(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
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
55
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
asciinema
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.