Skip to main content

Software for a command-line world

Below are a list of programs that can all be used over an SSH connection with no need for an X connection.

  • mail (command-line; uses local mailboxes)
  • mutt (full-screen; uses local mailboxes, POP3, or IMAP)
  • elm (full-screen; uses local mailboxes, may support POP3/IMAP)
  • mh/nmh (mail-handler/new-mail-handler; command-line; uses "MH" format, supports POP3 via fetchmail)
  • pine/alpine (full-screen; uses local mailboxes, POP3, or IMAP)
  • offlineimap
  • and many others
  • lynx (the classic full-screen text-browser)
  • links/links2 (a full-screen text-browser with more visual layout engine)
  • elinks (a full-screen text-browser with more visual layout engine)
  • w3m
  • edbrowse (it's an editor, it's a browser, it's command-line)
Text Editing:
  • vi/vim (the classic full-screen text-editor)
  • emacs (another popular and extensible choice in full-screen text-editors)
  • ed (the classic command-line text editor)
  • nano (a simple full-screen editor)
  • pico (a simple full-screen editor)
  • edbrowse (it's like ed on steroids)
  • and countless others

these can be used in concert with various markup syntax such as Markdown, HTML, DocBook, LaTeX, etc to produce publishable documents; you can use packages like antiword or wordview ("wv") to convert .DOC files to a usable format.

  • Spreadsheet:
    • sc (a simple full-screen spreadsheet with vi-like keybindings)
    • sc-im (like sc above but with the ability to import/export xls/xlsx files)
    • slsc (based on sc)
    • oleo (a simple full-screen spreadsheet with a more Emacs-like feel)
  • Math:
  • Graphing:
  • Calculator
    • bc (a simple command-line calculator)
    • python (the full power of Python, at a command-line)
  • calendar (show events on given days)
  • remind (like the previous calendar program on steroids)
  • cal (display a calendar)
  • pcal (good for printing)
  • cron (for scheduling repeated tasks)
  • at (for scheduling a single job sometime in the future)
  • gcalcli (interact with Google Calendar from the command-line)
  • khal
  • mencal and mencal2 (menstruation calendars)
To-do/time management:
TimeTracker (a simple command-line time-tracker in the spirit of many VCS tools, written by yours-truely in response to this post, and somewhat documented here)
  • finch (a console version of Gaim/Pidgin)
  • centericq (support for ICQ, Yahoo!, AIM, IRC, MSN, Gadu-Gadu and Jabber protocols)
  • naim (support for AIM, ICQ, IRC, and the lily CMC protocols)
  • irssi (popular IRC client)
  • weechat
  • gtmess (MSN client)
  • psql interface to PostgreSQL
  • mysql interface to MySQL
  • sqlite interface to the sqlite database
  • all the major databases have command-line clients
Version control:
I currently use git, Mercurial, Bazaar, Subversion and RCS depending on the project context
  • top, ps, kill, who, last
  • ping, traceroute, dig, ifconfig, ip, netstat, nslookup
  • openssl, ssh, sftp, scp, rsync
  • iotop an I/O monitor like "top"
  • weather

I also find that using "tmux" or GNU "screen" vital to being productive, as I can do many, many things all at the same time, each in their own window. It also allows me to disconnect and then reconnect from another machine later, resuming where I left off.