Speak directly to your system. With its simple commands, flags, and parameters, a well-formed command-line application is the quickest way to automate a backup, a build, or a deployment and simplify your life. With this book, you’ll learn specific ways to write command-line applications that are easy to use, deploy, and maintain, using a set of clear best practices and the Ruby programming language. This book is designed to make any programmer or system administrator more productive in their job. This is updated for Ruby 2.

Build Awesome Command-Line Applications for Ruby 1.9 is available here

Buy Now

Select a DRM-free Format:

In Stock
In Stock
In Stock
Buy the eBook and get these DRM-free formats delivered immediately:
  • epub (for iPhone/iPad, Android, eReaders)
  • mobi (for Kindle)
  • PDF
We can automatically send them to your Dropbox. (You'll need to log in to enable these options.)

About this Book

  • 224 pages
  • Published:
  • Release: P1.0 (2013-11-14)
  • ISBN: 978-1-93778-575-8

Writing a command-line application that’s self-documenting, robust, adaptable and forever useful is easier than you might think. Ruby is particularly suited to this task, because it combines high-level abstractions with “close to the metal” system interaction wrapped up in a concise, readable syntax. Plus, Ruby has the support of a rich ecosystem of open source tools and libraries.

Ten insightful chapters each explain and demonstrate a command-line best practice. You’ll see how to use these tools to elevate the lowliest automation script to a maintainable, polished application. You’ll learn how to use free, open source parsers to create user-friendly command-line interfaces as well as command suites. You’ll see how to use defaults to keep options simple for everyday users, while giving advanced users options for more complex tasks. There’s no reason why a command-line application should lack documentation, whether it’s part of a help command or a man page; you’ll find out when and how to use both. Your journey from command-line novice to pro ends with a look at valuable approaches to testing your apps, and includes some fun techniques for outside-the-box, colorful interfaces that will delight your users.

With Ruby, the command line is not dead. Long live the command line.

What You Need

An installation of Ruby 2, along with a few open-source Rubygems.

Contents and Extracts

Full Table of Contents


  • Have a Clear and Concise Purpose
  • Be Easy To Use excerpt
  • Be Helpful
  • Play Well with Others excerpt
  • Delight Casual Users excerpt
  • Make Configuration Easy
  • Distribute Painlessly
  • Test, Test, Test
  • Be Easy To Maintain
  • Add Color, Formatting, and Interactivity
  • Common Command-Line Gems and Libraries

About the Author

David Bryant Copeland is a veteran professional software developer who spends most of his time on the command line. He speaks frequently at national and regional Ruby conferences and has built many command-line and web applications.

Comments and Reviews

  • Some command-line applications save time and are a joy to use. Others just make you want to tear your hair out. David Copeland has written a guide to writing the kind of command-line apps that will make your users want to hug you. From providing a humane command-line interface, to being self-documenting, to integrating seamlessly with the rest of the command-line universe—this book will show you how to take your scripts from adequate to awesome.

    —Avdi Grimm Ruby developer, author, Exceptional Ruby, and blogger, Virtuous Code
  • This book proves that text mode is not the just the domain of batch scripts and glue code. Beyond the extensive survey of current Ruby CLI tools, David brings an unmatched focus on user experience and testing. Every full-stack developer should learn how to build the kinds of apps covered in this book.

    —Wynn Netherland CTO Pure Charity
  • I know of no other Ruby book that covers the content in this useful work, especially with its eye toward making Ruby command-line applications better citizens.

    —Noel Rappin Senior engineer at Groupon and author, Rails Test Prescriptions
  • This well-written book teaches ideas that are really important: that Ruby is a powerful language for writing command-line tools; that CLI tools, unlike GUI tools, can be combined in an infinite number of ways; that the effort required to automate small recurrent tasks pays off; and that there are time-tested best practices for succeeding with command-line tool development. Not only are the scripts in this volume awesome, so is the book.

    —Staffan Nöteberg Author, Pomodoro Technique Illustrated
  • I want a few people on my team to have this book now. I especially can’t wait to get this in the hands of our software lead, who’s a whiz at shell scripts and would be delighted to see how much easier and more reliable option parsing is in Ruby.

    —Ian Dees Ruby developer and coauthor, Using JRuby
  • This book teaches you how to write command-line tools your mother would be proud of.

    —Matt Wynne Independent consultant, programmer, coach, and author, The Cucumber Book