Command-Line Application Roundup

If you're wondering when the command line will die, the answer is simple: when we all decide to give up and use Windows.

The Linux graphical desktop has improved vastly since its inception some 18 years ago. Gone are the days in which system configuration necessitated use of the command line. The Ubuntu generation has come to age in a world where using the command line is optional. Although many people still choose to hone their console skills, just as many do not.

The command line, however, is far from irrelevant. Whether you are trying to get the most out of an older system or wanting to access your applications from anywhere over SSH, the console still remains one of the most powerful tools in the Linux user's toolbox. From traditional system utilities to Web and multimedia applications, there are many CLI (command-line interface) versions of our desktop staples. Here's a small selection of my favorites that are still in popular use today.


A wide selection of Web applications run on the Linux shell. Dedicated downloading and torrenting applications are a natural choice for running at the command line. With the addition of a tool such as screen or dtach, long downloads can be run remotely on an always-on machine. Likewise, text-based browsers can be used for executing downloads that are too deeply buried behind redirects for curl or wget. Console browsers also are invaluable as tools for testing Web site accessibility or avoiding noxious advertising—especially on machines with limited resources.

rTorrent (

A popular text-based BitTorrent client, rTorrent boasts an impressive feature set. It supports partial downloading of multifile torrents and session saving, and it can be used with screen or dtach. rTorrent also has a built-in XMLRPC interface with a number of third-party Web-based front ends available. This combined with rTorrent's ability to watch a specified directory for the appearance of torrent files—and when found, execute them—allows users to create a powerful remote torrenting tool with ease.

Wget (

Of course, a torrenting server with a Web-based front end is over-engineering the solution just a little if you need to download only an ISO or two without interruption. Wget is a simple utility for downloading files over HTTP, HTTPS and FTP. It is included in most Linux distributions. Wget can be used to download individual files or mirror entire Web sites. It supports downloading through proxies, resuming partial downloads and various forms of authentication.

Curl (

Another simple downloader, Curl is both a tool and a library for transferring data over a range of protocols. Curl, of course, supports HTTP, HTTPS and FTP, but it differs from Wget in also supporting LDAP, POP3 and DICT, among others. Curl also supports downloading through proxies, resuming partial downloads and various forms of authentication.

w3m (

A pager like less or more for HTML files, w3m supports rendering both local HTML files and remote URLs. It supports operating through a proxy, cookies and SSL. As it is designed to act as a file pager or viewer, w3m must be invoked either with a remote URL or a local file as an argument.

ELinks (

If you are looking for something with a little more functionality, ELinks is an extremely feature-rich text-mode browser. It's capable of displaying tables and frames, and as of version 0.10, ELinks can render CSS and supports up to 256 colors. ELinks makes for a powerful downloading tool. It's able to download multiple files at once and perform background file transfers while you are browsing.

Figure 1. ELinks, a Text-Mode Browser

Instant Messaging/Chat

Running a client in a screen session still is extremely popular among IRC users. Running IRC on a remote server accessed via SSH provides access to IRC from restricted networks and allows for messages to be left with your client for you to read on your return. Chat logs are kept in one place, instead of being spread across every computer you use. And, instant messaging can benefit from being run at the console for all of the same reasons.

Irssi (

Irssi is a very popular IRC client for the console. Features include logging, custom formatting and themes, configurable key bindings and many, many others. Irssi provides a powerful Perl scripting interface, with many contributed scripts available from Irssi uses a windowing interface that allows for dozens of server connections, channels and messaging windows to be open and accessible at once.

Figure 2. IRSSI IRC Client

Finch (

If you've used Pidgin, you'll find Finch hauntingly familiar. Finch is a CLI instant-messaging program that is part of the Pidgin codebase and uses the libpurple instant-messaging libraries. Finch's user interface is modeled as closely to Pidgin as ncurses will allow. They both will save their configuration to the same directory (~/.libpurple), and if Pidgin already is configured on your machine, Finch will pick up its settings automatically. Finch supports chatting on all of the protocols included with libpurple: AIM, MSN, Yahoo! and Jabber, just to name a few.

naim (

Supporting AIM, ICQ, Lily and IRC, naim is an elegantly designed alternative to Finch if you don't need all of libpurple's protocols. naim uses a very simple command-driven interface. All text entered with a preceding / is considered a command, and all other text is sent as a message to the current active window. naim supports simultaneous connections to multiple networks and IRC servers, with each “window” displayed in a slide-out list that can be called up with the Tab key.


static const char *usblp_messages[] = { "ok", "out of paper", "off-line", "on fire" }; Previously known as Jes Hall (


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


Anonymous's picture

did i miss a command line app that beats all others? cause uh, if u r using a browser and flash to stream ur account, u need to re-think your computer usage! lol PIANOBAR ftw!

more relevant than you'd think

kidd jmadd's picture

I'd lost most of my chops on cli tools until I got my android phone. I now ssh into my home machine to manage all kinds of things from home automation to script execution. Being reminded of alpine was a big help since I can use it to send files from my machine. That "ssh into a true *nix machine to do stuff my phone can't" use case definitely has a following. Lots of helpful info in this article.

Awesome list. I'm using a

Vinh Nguyen's picture

Awesome list. I'm using a few of those applications, and discovered quite a few more!