raw

Tiny Programs

I like small programs that work sensibly from inside the terminal.

Here is a list of some of my favorites. I include a link to each project page, but they will likely be available through your package manager, or already installed.

tmux

Just because everyone knows about it doesn’t mean it isn’t great :)

Effectively a window manager for the terminal. Allows for resuming sessions, pair programming, scripting, customization… You name it.

tig

Text-mode interface for git. Easy to remember, because it’s “git” backwards! tig lets you interactively explore your repository history, see diffs at each commit, and help to modify the stage by chunks.

It doesn’t do anything can’t be done with git alone, but it does so in a human-friendly way, comfortably filling the GUI client niche without forcing you to leave the terminal.

ncdu

NCurses Disk Usage. Offers similar functionality to du, but lets you explore where space is being used graphically. There are command line switches to not stray across physical device boundaries. Extremely useful when a drive is filled up and you want to quickly know what to delete.

I actually discovered this when looking for a terminal equivalent of WinDirStat.

tree

Tree is a recursive directory listing command that produces a depth indented listing of files.

Similar to find, but a little more human-readable. Good if you want to quickly understand the structure of a project.

stow

GNU Stow is a symlink farm manager which takes distinct packages of software and/or data located in separate directories on the filesystem, and makes them appear to be installed in the same place.

Useful for taking a directory full of stuff and symlinking all of them to another location… Or removing them all again, without disturbing other things in the process.

rename

rename is a perl script which can be used to mass rename files according to a regular expression.

An example for renaming all “.JPG” files to “.jpg” is:

rename 's/\.JPG$/.jpg/' *.JPG

I do love regex. Often I find myself in a situation where I have a bunch of files, all formatted wrong. rename lets me write a regex to go from one to the other, and then pass a list of all files to operate on.

This is installed already on most GNU/Linux systems.

iftop

iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current bandwidth usage by pairs of hosts. Handy for answering the question “why is our ADSL link so slow?”.

sshfs

weechat

deluge

Torrent client. Has a web and command line interface.

mpd

Music Player Daemon. Can stream your audio collection via pulse, alsa, or directly over http if you have a headless/virtual server, and then control it over the network from your favorite client.

ncmpcpp

mpd client. Not entire sure about this one in terms of usablility, but it’s the best I’ve found so far.

tintin++

MUD client for playing text games.

Honestly this isn’t wonderful, but it’s the best I’ve found.