Wednesday November 29th, 2017
Excellent Command Line Tools
I spend most of my computer time on the command line. The command line is such a powerful environment. Unlike graphical user interfaces, command line programs are simple to create. That makes you can build your own more easily than graphical programs, and it also makes it much easier to chain them together to do tasks that dwarf the sum of their parts.
Excellent holistic tools are ones that are easy to learn and understand, but empower and inspire. When used well, you barely even notice that they’re there.
Here are some of my favourite tools, which empower and inspire me every day, along with short descriptions about what they are and why they’re useful:
bash: powers my command line!
termite: fast small easily configured terminal emulator
cat: writes files to standard out. can also be used as a write-only text editor!
cat > foo.md<CR>hello world<CR>^D
less: handy pager for viewing large amounts of output
grep: find text in standard out using regular expressions
sed: find and replace text in standard out using regex
vim: small text editor with lots of clever keybindings to edit and navigate text fast
gunzip: file compression tools
dmenu: create keyboard-driven selection dialogs from plain text
mosh: like ssh, but slow or lossy internet connections feel silky smooth
wit: simple unix-y wifi network management
xclip -clipboard; macOS:
pass: password management done simple! combine with
dmenuto make interactive password menus
tdag: manage complex task structures using the command line and a json file
tslide: write presentations using markdown
invoicer: generate PDF invoices from simple json data
strapdown: generate pretty web pages from markdown
marked: super simple markdown -> html tool
Peer-to-peer & Networking
airpaste: sends a file or input stream over the local network to another airpaste user – no configuration!
dat: share big and/or changing datasets over the internet or LAN with no central servers
rtorrent: download bittorrent torrents
curl: craft and send custom HTTP requests
curl, but for raw TCP and UDP sockets
scrot: take screenshots
scrot, but for taking webcam pictures
imagemagick: handy tools like
convertfor editing, resizing, and converting images
youtube-dl: download YouTube videos to your computer!
mplayer: simple video / audio player
zathura: simple PDF viewer
picast: I use this to send videos on my laptop to play on my TV, hooked up to a Raspberry Pi
xit: like Linux’s
xrandrfor screen/display management, but super easy to use
feh: simple image viewer
git: a time travel machine for files!
grepbut for structured JSON data
ecstatic: one-command HTTP server for sharing a directory of files
hcat, scat: take raw HTML or JS and view it in your browser
browserify: unix-y program that turns Node.JS code into something that your browser can run
common-readme: tiny tool that generates a nice default README markdown file for Node/JS projects
pkginit: helper tool that creates a new NodeJS
package.jsonfile for a new project
readme: just type
readme foobarto view a Node module’s README right in your terminal!
superlevel: handy LevelDB data viewer; writes to standard out