Who should read this book

This book is intended to help you on your path to becoming a skilled programmer. It covers the basics of command line usage in a Unix-like environment, which includes Linux and Mac OS X. It does not include Windows PowerShell or Windows Command Prompt usage. It is assumed that you know the basics of using a computer and have run a command on the command line before. Knowledge of programming is not required.

Getting the Most Out of this Book

There are a few things you must do to successfully learn the lessons in this book. First, try things out and make what you've learned your own. Don't want to mess up your own computer or server? No problem: you can easily set up a separate server or virtual machine to mess around with. See the next section for some suggestions. Second, do the exercises. They are there to give you a real-world understanding of the command line and will help you remember what you've learned. Third, explain what you've learned to a friend or coworker, or to a rubber duck if that's more comfortable.

Server Setup

If you don't want to mess up your computer's console while going through the examples in this book, you can set up a server using one of many online cloud services or set up your own virtual machine. The following are some of the available options:

  1. Sign up for a service that provides a full, in-browser development environment, such as Cloud9. Once you've set up an account, you can ignore everything except the terminal or console. We recommend this option if you're new to the command line, as it takes the least amount of effort to set up.

  2. Use Rackspace or Digital Ocean to set up a managed server that provides console access. For this option, you'll need a little bit of experience with servers.

  3. Set up a virtual machine or container on your computer. You can use Virtualbox, VMWare, Vagrant, Docker, or a combination of these. Setting up a virtual machine or container is out of the scope of this book, but a quick Google search should be enough to get you going. You should have a lot of hands-on experience with configuring software and in-depth knowledge of computers before taking this option.