15 Greatest Open Source Terminal Applications Of 2012

by on December 11, 2012 · 72 comments· LAST UPDATED January 7, 2013

in Command Line Hacks, Open Source, Web Developer

Linux on the desktop is making great progress. However, the real beauty of Linux and Unix like operating system lies beneath the surface at the command prompt. nixCraft picks his best open source terminal applications of 2012.

Most of the following tools are packaged by all major Linux distributions and can be installed on *BSD or Apple OS X.

#1: siege - An HTTP/HTTPS stress load tester

Fig.01: siege in action

Fig.01: siege in action


Siege is a multi-threaded http or https load testing and benchmarking utility. This tool allows me to measure the performance of web apps under duress. I often use this tool test a web server and apps. I have had very good results with this tool. It can stress a single url such as example.com/foo.php or multiple urls. At the end of each test you will get all data about the web server performance, total data transferred, latency, server response time, concurrency and much more.

#2: abcde - A better CD encoder

Usually, the process of grabbing the data off a CD and encoding it, then tagging or commenting it, is very involved. abcde is designed to automate this. It will take an entire CD and convert it into a compressed audio format - Ogg/Vorbis, MPEG Audio Layer III, Free Lossless Audio Codec (FLAC), Ogg/Speex, MPP/MP+(Musepack) and/or M4A (AAC) format(s). It will do a CDDB query over the Internet to look up your CD or use a locally stored CDDB entry.

#3: ngrep - Network grep

Fig.02: ngrep in action

Fig.02: ngrep in action


Ngrep is a network packet analyzer. It follows most of GNU grep's common features, applying them to the network layer. Ngrep is not related to tcpdump. It is just an easy to use tool. You can run queries such as:

## grep all HTTP GET or POST requests from network traffic on eth0 interface  ##
sudo ngrep -l -q -d eth0 "^GET |^POST " tcp and port 80
 

I often use this tool to find out security related problems and tracking down other network and server related problems.

#4: pv

Fig.03: pv command in action

Fig.03: pv command in action


The pv command allows you to see the progress of data through a pipeline. It provides the following info:

  1. Time elapsed
  2. Percentage completed (with progress bar)
  3. Current throughput rate
  4. Total data transferred
  5. ETA

See how to install and use pv command under Linux. Or download pv by visiting this page.

#5: dtrx

Fig.04: dtrx in action

Fig.04: dtrx in action


dtrx is an acronmy for "Do The Right Extraction." It's a tool for Unix-like systems that take all the hassle out of extracting archives. As a sysadmin, I download source code and tar balls. This tool saves lots of time.

  • You only need to remember one simple command to extract tar, zip, cpio, deb, rpm, gem, 7z, cab, lzh, rar, gz, bz2, lzma, xz, and many kinds of exe files, including Microsoft Cabinet archives, InstallShield archives, and self-extracting zip files. If they have any extra compression, like tar.bz2 files, dtrx will take care of that for you, too.
  • dtrx will make sure that archives are extracted into their own dedicated directories.
  • dtrx makes sure you can read and write all the files you just extracted, while leaving the rest of the permissions intact.
  • Recursive extraction: dtrx can find archives inside the archive and extract those too.
  • Download dtrx

#6:dstat - Versatile resource statistics tool

Fig.05: dstat in action

Fig.05: dstat in action


As a sysadmin, I heavily depends upon tools such as vmstat, iostat and friends for troubleshooting server issues. Dstat overcomes some of the limitations provided by vmstat and friends. It adds some extra features. It allows me to view all of my system resources instantly. I can compare disk usage in combination with interrupts from hard disk controller, or compare the network bandwidth numbers directly with the disk throughput and much more.

#7:ffmpeg - Record, convert, stream and play multimedia content

Fig.06: ffmpeg in action (ogv to mp4 conversion)

Fig.06: ffmpeg in action (ogv to mp4 conversion)


Recently, I started a youtube channel for nixCraft. I need to convert video and audio in various format such as Youtube HD web streaming format. This tool saves lots of my time. I often use this tool for audio/video conversion. This is the best tool for converting Audio, AVI, MP4, Ipod, Mobile phone, PSP, Quicktime, Rockbox, Web (Flash), WMV and much more.

#8:mtr - Traceroute+ping in a single network diagnostic tool

Fig.07: mtr in action

Fig.07: mtr in action


The mtr command combines the functionality of the traceroute and ping programs in a single network diagnostic tool. Use mtr to monitor outgoing bandwidth, latency and jitter in your network. A great little app to solve network problems. If you see a sudden increase in packetloss or response time is often an indication of a bad or simply overloaded link.

#9:multitail - Tail command on steroids

Fig.08: multitail in action (image credit - official project)

Fig.08: multitail in action (image credit - official project)


MultiTail is a program for monitoring multiple log files, in the fashion of the original tail program. This program lets you view one or multiple files like the original tail program. The difference is that it creates multiple windows on your console (with ncurses). I often use this tool when I am monitoring logs on my server.

#10: curl - Transfer data and see behind the scenes

Fig.09: curl command in action

Fig.09: curl command in action


Curl is a command line tool to transfer data from or to a server, using one of the supported protocols. The command is designed to work without user interaction. curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, and much more. I often use curl command to:

  1. Troubleshoot http/ftp/cdn server problems.
  2. Check or pass HTTP/HTTPS headers.
  3. Upload / download files using ftp protocol or to cloud account.
  4. Debug HTTP responses and find out exactly what an Apache/Nginx/Lighttpd/IIS server is sending to you without using any browser add-ons or 3rd party applications.
  5. Download curl

#11: netcat - TCP/IP swiss army knife

Fig.10: nc server and telnet client in action

Fig.10: nc server and telnet client in action


Netcat or nc is a simple Linux or Unix command which reads and writes data across network connections, using TCP or UDP protocol. I often use this tool to open up a network pipe to test network connectivity, make backups, bind to sockets to handle incoming / outgoing requests and much more. In this example, I tell nc to listen to a port # 3005 and execute /usr/bin/w command when client connects and send data back to the client:
$ nc -l -p 3005 -e /usr/bin/w
From a different system try to connect to port # 3005:
$ telnet server1.cyberciti.biz.lan 3005

#12: nmap - Offensive and defensive network security scanner

Fig.11: nmap in action

Fig.11: nmap in action


Nmap is short for Network Mapper. It is an open source security tool for network exploration, security scanning and auditing. However, nmap command comes with lots of options that can make the utility more robust and difficult to follow for new users.

#13: openssl command line tool

The openssl command is used for the various cryptography functions of OpenSSL's crypto library from the shell. I often use this tool to encrypt files, test/verify ssl connections, and check the integrity of downloaded files. Further, openssl can be used for:

  1. Creation of RSA, DH and DSA key parameters
  2. Creation of X.509 certificates, CSRs and CRLs
  3. Calculation of Message Digests
  4. Handling of S/MIME signed or encrypted mail

The following few examples demonstrate the power of openssl command:

File integrity verification (cryptographic hashing function)

Verify that a file called financial-records-fy-2011-12.dbx.aes has not been tampered with:

 
openssl dgst -sha1 -c financial-records-fy-2011-12.dbx.aes
openssl dgst -ripemd160 -c financial-records-fy-2011-12.dbx.aes
openssl dgst -md5 -c financial-records-fy-2011-12.dbx.aes
 

Sample outputs from the last command:

MD5(financial-records-fy-2011-12.dbx.aes)= d4:1d:8c:d9:8f:00:b2:04:e9:80:09:98:ec:f8:42:7e

Encryption and Decryption with Ciphers (files)

 
## encrypt file ##
openssl aes-256-cbc -salt -in financial-records-fy-2011-12.dbx   -out financial-records-fy-2011-12.dbx.aes
## decrypt file ##
openssl aes-256-cbc -d -in financial-records-fy-2011-12.dbx.aes -out financial-records-fy-2011-12.dbx
 

SSL/TLS client and server tests

## connect to gmail mail server for testing purpose ##
openssl s_client -connect smtp.gmail.com:995
openssl s_client -connect smtp.gmail.com:995 -CApath /etc/ssl
 

#14: lftp: A better command-line ftp/http/sftp client

This is the best and most sophisticated sftp/ftp/http download and upload client program. I often use this tool to:

  1. Recursively mirroring entire directory trees from a ftp server
  2. Accelerate ftp / http download speed
  3. Location bookmarks and resuming downloads.
  4. Backup files to a remote ftp servers.
  5. Transfers can be scheduled for execution at a later time.
  6. Bandwidth can be throttled and transfer queues can be set up.
  7. Lftp has shell-like command syntax allowing you to launch several commands in parallel in background (&).
  8. Segmented file transfer, that allows more than one connection for the same file.
  9. And much more.
  10. Download lftp

#15: Irssi - IRC client

Fig.#12: irssi in action (image credit wikipedia)

Fig.#12: irssi in action (image credit wikipedia)


Irssi is a modular Internet Relay Chat client. It is highly extensible and very secure. Being a fullscreen, termcap based client with many features, Irssi is easily extensible through scripts and modules. I often use this client to get help about certain problmes from IRC rooms or just to hang out with old buddies.

#16: Rest...

  • Mutt - Email client and I often use mutt to send email attachments from my shell scripts.
  • bittorrent - Command line torrent client.
  • screen - A full-screen window manager and must have tool for all *nix admins.
  • rsync - Sync files and save bandwidth.
  • sar - Old good system activity collector and reporter.
  • lsof - List open files.
  • vim - Best text editor ever.
  • elinks or lynx - I use this browse remotely when some sites (such as RHN or Novell or Sun/Oracle) require registration/login before making downloads.
  • wget - Best download tool ever. I use wget all the time, even with Gnome desktop.
  • mplayer - Best console mp3 player that can play any audio file format.
  • newsbeuter - Text mode rss feed reader with podcast support.
  • parallel - Build and execute shell command lines from standard input in parallel.
  • iftop - Display bandwidth usage on network interface by host.
  • iotop - Find out what's stressing and increasing load on your hard disks.

Conclusion

This is my personal FOSS terminal apps list and it is not absolutely definitive, so if you've got your own terminal apps, share in the comments below.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

  • mesuutt

    You shares awesome articles.Thanks

  • Bubba

    I’m still a big fan of htop. I wish it had been included here.

  • bits4beats

    What about htop, a nice colorful replacement of the famous top?

  • bits4beats

    Ops! few minutes after the Bubba comment! The same command :-)

  • j0j0

    screen > tmux? :-[

  • Techie Talks

    You got some cool console stuff. Yeah how about top? or htop?

  • phusss

    socat > netcat
    openssh > *
    :)

  • Brian

    You lost me at vim. :)

  • funkoolow

    the really missing one is screen for sure.

  • @yjmbo

    htop, for sure. Thanks for dtrx, I’d not heard of that one.

    mitmproxy (http://mitmproxy.org/) might be a nice complement for nc/nmap/openssl … it’s a curses-based HTTP/HTTPS proxy that lets you examine, edit and replay the conversations your browser is having with the rest of the world …

  • CorkyAgain

    Some of my personal faves:

    vifm – file manager
    ncdu – curses frontend for du
    rawdog – rss accumulator
    mpg123 – music player
    tmux – terminal multiplexer
    movgrab – video downloader
    vidir – edit directories (part of the ‘moreutils’ package)

    And I use avconv instead of ffmpeg to convert audio/video files.

  • ARADTech

    Good stuff!
    htop ,atop, mc ,mytop, lshw I would say are also missing from that list.

  • Philipp

    Absolutely incredible article! Very useful, thanks!

  • Crouse

    Nah, number one and two will always be screen, and vim, followed very closely by irssi. The others are nice, but I just wouldn’t want to function as an Admin without those three. :-)

  • atrent

    I would also add apt-dater and dsh

  • Chris Bennett

    Great list! Don’t forget rtorrent as an alternative to ‘bittorrent’ and possibly ‘nzbget’ for the equivalent terminal goodness for NNTP.

  • Fabio

    I would add rubyripper as a good audio cd ripper :)

  • Chas. Owens

    Before I found watch, I often had to write while 1; do somecommand; sleep 1; clear; done (http://www.linfo.org/watch.html)

    ack is a better grep (http://betterthangrep.com/)

    dtach is a lightweight version of screen or tmux (http://dtach.sourceforge.net/)

    strace can be a lifesaver (http://en.wikipedia.org/wiki/Strace)

    I haven’t gotten a chance to try it yet, but mosh looks like it has a good chance of replacing ssh as my default remote shell client (http://mosh.mit.edu/)

    And, of course, perl is great for complex commandline hacks and actual programming (http://perl.org)

  • Alpesh Bhavsar

    Hi Vivek,

    This site gives valuable information in all post. Whenever I do search for any help in linux, your website’s links comes on first page.

    Keep it up. Awesome work.

  • alex

    What? No mc? Nothing to do here…

  • tim

    Great article!

    I love plowshare. http://code.google.com/p/plowshare/
    the best download tool I´ve ever used.

  • Uri

    nano for quidk editing.

    I love sshfs! A great replacement for sftp.

  • Rick Russell

    Have you seen nmon? Pretty click, just started using it over htop

  • Rick Russell

    **slick, fuck me, can’t edit

  • vj
  • crond

    I read “15 Greatest Open Source Terminal Applications Of 2012″ , but I can count, 16. ;)
    BTW, good collections… thanks…

  • cap10crunch

    Schism Tracker for some music!

  • J. Christopher Ross

    Great list but I would replace irssi with weechat. Weechat is easier to use and the user list is always visible on the right without a script.

  • turbor

    Useful tools missing:
    nethogs : to see which program is consuming your bandwidth
    and trickle : bandwidth control wrapper for almost anything network related

  • Simon

    mpd && ncmpcpp – for listening to music
    httpie – a CLI, cURL-like tool for humans

  • Strx

    Good list, take a look here for some good combinations…
    http://www.bashoneliners.com/

    thanks, bye

  • NuLL3rr0r

    As a normal user the most useful terminal apps in my list are:
    * nano
    * ffmpeg
    * cclive

    And as a developer, these are my friends:
    * cmake
    * make
    * g++
    * nano

  • NuLL3rr0r

    also I forgot to mention ‘htop’

  • david

    ncmpcpp
    fd (fdclone file manager)
    alpine
    hierarchical notebook
    autojump

  • Mark T. Kennedy

    i prefer tmux over screen. it’s a far more ‘unix’-like tool, well-architected and well-written.

  • CorkyAgain

    vimoutliner for outlines
    (Never got the hang of hnb’s keymappings.)

  • CorkyAgain

    Here’s a link to what is probably the most comprehensive list of console applications anywhere:

    http://www.jaredandcoralee.com/CLIapps.html

  • Stoycho Ganev

    Yeah, me too!

  • Ryan

    aria2c maybe a good alternator to wget and bittorrent.

  • ectospasm

    I second mpd + ncmpc… though I have noticed it doesn’t always display a full directory. I’m still fairly new to using it (within the last two weeks), but I’ve figured out that I can add a radio stream from midnight-commander pretty easily, so that works.

  • ectospasm

    I second weechat >> irssi… I used irssi for a month (after I got fed up with X-Chat’s perceived lack of keyboard navigation controls), and remember liking it. Read about weechat, decided to give it a week of solid use… and I never went back to irssi. Weechat does a lot of things by default that I remember took third-party scripts in irssi. Not very friendly unless you’ve already built up all the scripts you’d want. Weechat has scripts too, in many languages. Weechat even has a script manager, a kind of in-application package manager called “weeget”. That alone is pretty cool. And the primary weechat developer is quite available and helpful in #weechat@freenode.

  • ectospasm

    vim
    – I was a forced convert to vi back in the day (“Yes, I love Big Brother!”), and vim rocks my socks off.

    midnight-commander (mc)
    – A friend suggested I start using this as my main file manager, and I’m so happy I did. It doubles as an ncurses-based filemanager, network browser (FTP,SFTP,CIFS,etc.), it will even dive into archives (.tar.*, .zip, etc.). It always has an interactive shell if you need to do heavy lifting from the CLI; that alone beats any other GUI file manager I’ve tried.

    OpenSSH
    – without both the daemon and client, much of what I do couldn’t happen. Thanks to the OpenBSD project for providing such a crucial tool

    transmission-cli
    – I’ve got this on my VPS, and I’m able to download BitTorrent magnet links with a single command. With the proper quotas set up, I don’t have to worry about exceeding my bandwidth cap.

    screen/tmux
    – I still use screen on a daily basis, though I’ve begun to explore tmux. Still need to figure the latter out. I ran into an issue where pasting from my primary buffer wasn’t working in one screen window, or some keys (such as ^L to clear the terminal) didn’t work at all. Enough to make me consider changing when I hadn’t before. The nice thing about tmux is you can re-bind keys to match what you’re used to in screen, with less arcane incantations to do so.

  • MKzero

    A list of one of my desktops(pretty fresh installation though, the counter would be higher on a normal system, as I tend to use really big histories for my shells)

    $> history | awk ‘{print $2};’ | sort | uniq -c | sort -rn | head -10
    226 ssh
    94 vim
    49 git
    46 cat
    32 sudo
    31 tree
    21 nano
    15 mopidy
    10 nslookup
    7 ncmpc

    (even the command line itself contains some of the most useful commands :3 )

  • xuedi

    Hmm, i prefer screen over multitail, in the end they do almost the same thing ^^

    If you place siege on the first place, maybe you can add hping, so siege will have something to look at ;-)

    Cheers
    xuedi

  • Jhon Morci

    By far.. tmux == ruby == slow.. tmux is for gays and noobs

  • atanok

    I found a typo in the article: s/vim/emacs/

  • Kartik

    youtube-dl for video downloads!

  • Jalal Hajigholamali

    Hi,

    Thanks a lot,

    what about atop ?

  • Ferk

    Actually I prefer a combination of dtach and dvtm. Good old Unix philosophy. Both tmux and screen are bloated.

  • majkinetor

    Don’t talk about tmux if u r n00b pls.

  • Charlie Kester

    I like dvtm too and am generally in favor of programs that adhere closely to the “do only one thing and do it well” philosophy.

    But the terminal library dvtm uses doesn’t play well with some of my other favorites. So when I do need to multiplex, which isn’t often, I go with tmux.

    If that makes me a n00b, so be it. I don’t care about chest-thumping braggadocio, I care about getting the job done.

    (But fwiw, I’ve been using one flavor or another of Unix since 1990.)

  • r6

    schism tracker is not terminal app
    im quite confortable with cmod, its basically just wrapper around libbassmod, found basic ncurses interface here https://github.com/jllodra/cmod

  • Mike J

    GoAccess – an open source real-time web log analyzer

  • Daniel Aleksandersen

    I think Newsbeuter should have made it higher on the list. It is such an excellent tool! :-)

  • Nathan Belomy

    Cool man. Some nice review and some new stuff. Good job.

  • Norman Base

    Since Tmux isn’t written in Ruby but in C I wonder what makes that you.

  • Brendon

    :)

  • Brendon

    This is a great list – some of these utilities I’ve only recently discovered and others I know will be super useful.

    Another one that hasn’t been mentioned here is iperf. From the Debian package description:

    Iperf is a modern alternative for measuring TCP and UDP bandwidth performance, allowing the tuning of various parameters and characteristics.

    Features:

    * Measure bandwidth, packet loss, delay jitter

    * Report MSS/MTU size and observed read sizes.

    * Support for TCP window size via socket buffers.

    * Multi-threaded. Client and server can have multiple simultaneous connections.

    * Client can create UDP streams of specified bandwidth.

    * Multicast and IPv6 capable.

    * Options can be specified with K (kilo-) and M (mega-) suffices.

    * Can run for specified time, rather than a set amount of data to transfer.

    * Picks the best units for the size of data being reported.

    * Server handles multiple connections.

    * Print periodic, intermediate bandwidth, jitter, and loss reports at specified

    intervals.

    * Server can be run as a daemon.

    * Use representative streams to test out how link layer compression affects

    your achievable bandwidth.

    Homepage: http://iperf.sourceforge.net/

    This is the first tool I use when I am troubleshooting file server transfer speeds, for example.

  • bla

    Nobody mentioning byobu?

  • Boy nux

    lsblk
    watch

  • NoNeedForAName

    Screen is to Tmux what a Model A is to a McLaren F1..

  • xr09

    +1 for mentioning autojump, is my new shiny app since I found it!!

  • Marc Cuculiere

    Like that post, but I’d like to add :
    iptraf for network … stats
    rtorrent for Torrent on CLI

    screen/tmux for terminal multiplex

  • ashwin kesavan

    mplayer is not just a audio player. it is a console based media player which also plays video file when invoked from terminal. Ofcourse you need to have X server running or you export your display to remote as in X11 forwarding.

  • Invention Sites

    fapg to generate m3u playlists for music files http://royale.zerezo.com/fapg/

  • Nathan Moos

    YES! vifm is awesome.
    Tmux makes it easy to use vifm with everything else I’m running.

  • Donna Cerca Uomo Milano

    I didn’t know about irssi … I used thunderbird for irc … I’ll give it a try

  • Pascal Poitras Dubois

    weechat (IRC client)
    tmux (terminal multiplexer)
    ncmpcpp (MPD client)
    bitlbee (IRC-To-IM gateway)
    znc (IRC Bouncer)
    zsh (best shell)

  • Whattteva

    This is not quite a terminal program, but Terminator is one of the best terminal emulators I know of out there. It makes multi-tasking in the terminal 100 times better, IMHO.

  • GrouchyGaijin2

    One note on lftp, you need to recompile it to have ssl included. The default version (at least the one I found) did not come ssl enabled.

  • gavin

    I’d like a ‘dtrx’-like tool, except I’d prefer it to be found in RHEL/Ubuntu repositories. Any ideas?

  • Brozer

    dtrx is in Ubuntu’s repo:
    $ apt-cache showpkg dtrx

    Package: dtrx

    Versions:

    6.6-1.1 (/var/lib/apt/lists/il.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages)

Previous post:

Next post: