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.