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.

Internet

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.

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.

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.

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.

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.

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 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.org. Irssi uses
a windowing interface that allows for dozens of server connections,
channels and messaging windows to be open and accessible at once.

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.

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.

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.