I get a lot of questions on how to perform various tasks from a Linux shell/terminal. In the interest of making a simple cheat sheet—something I can point people to that will help them get rolling with terminal powers—what follows are my recommendations for how to perform various types of communication from your shell.
I’m talking about the normal sort of communication most people perform via a web browser (or a handful of graphical applications) nowadays: Email, instant messaging, that sort of thing. Except, you know, running them entirely in a terminal—which you can run just about anywhere: in an SSH session on a remote server, on a handheld device, or even on your Android phone/tablet.
Apologies in advance if your favorite bit of software is not listed here; these are simply my favorites at the moment.
Email from a Linux shell
Both are full-featured email clients that can, for most people, easily replace a webmail client (such as Gmail) or a dedicated graphical email client (such as Thunderbird or Outlook).
If you feel intimidated by using a terminal-based email client, I’d go with Alpine. It’s a bit easier to get used to and comfortable with than mutt. Very much your average, typical email client—only entirely text based.
Mutt, on the other hand, is a bit more powerful. Configurable keyboard bindings and macros have proven to be astoundingly handy for me. The security features are excellent as well. With that extra customizability, though, comes a bit of complexity—or more accurately, perceived complexity. In truth, you can configure and get used to mutt pretty quickly. It just can seem daunting at first glance.
Instant messaging from a Linux shell
Messaging from a shell is astoundingly easy and enjoyable.
If you are used to traditional instant messaging desktop applications, I highly recommend taking a look at Finch. It is, in a nutshell, a fully text-based version of the graphical Pidgin IM software. It has contact lists, multiple windows—the whole shebang. It also includes support for a pretty large number of networks and protocols.
The one downside to Finch is that you’ll need to learn a few tricks in order to comfortably use the text-based user interface. Moving between different open windows (all drawn in ASCII style) with different chat sessions is simple, but you’ll need to check out the Finch reference page to learn which keys do what.
If you have come to rely on Google Hangouts rather extensively, you might also want to take a look at hangups.
The nice part about using hangups is you get the full chat history of your conversations (just like in the web and GUI app versions of Google Hangouts)—all in a very nice, easy-to-use, tabbed interface. Installing hangups is fairly straight forward but slightly more complex than the other software mentioned here (in a nutshell: “pip3 install hangups”).
Terminal-based IRC options
If you use and rely on IRC, you likely already have pretty strong opinions about which IRC client is the best. I’m not going to try to change your mind. Because I would lose that battle.
But if you’re looking for a new IRC client, there are some excellent (terminal-based) options out there. WeeChat, ircII, Irssi and BitchX spring immediately to mind as clients that people swear by. All of them will do the job (though ircII will do the job in a pretty bare-bones way).
That about covers it
Communicating entirely from a Linux shell/terminal is astoundingly easy. And the benefits (low resource usage, similar/same software across systems, portability, ability to work entirely in a remote SSH instance) make doing so pretty enticing.
I’m not saying you should give up all of your graphical email/IM applications and move entirely to a text-based world, but it might be worth considering.