---
title: Introduction
author: Franklin Bristow
---

We've been *using* the command line, at least a little bit, throughout the
course. Despite its simple appearance, the command line is an incredibly rich
and diverse environment, and lets you compose really complex commands that would
be difficult to do with the visual desktop tools that you have at your disposal
right now.

We'll spend some time looking at how to use our shells effectively, and we'll
look at how to build up pipelines of programs to accomplish complex tasks.

We're also going to digress a *little bit* and look at backing up our data.
Pretty much everything you're doing
at school (and in life!) is digital: you're writing source code, you're writing documents,
maybe you're making spreadsheets or taking photos. Losing this data could be
catastrophic, especially if you're in a situation where you couldn't possibly
bail out.

While version control is a tool that you can effectively use as a remote backup,
its main purpose is not as a backup of your software. In fact, version control
software is downright terrible as a backup strategy for documents that aren't
plain text (like pictures!).

We're going to talk about what a good, automated backup strategy is,
the kinds of tools that you can use to do it, and get our machines configured so
that we're able to quickly back up our assignments to aviary.



::: outcomes

* [ ] Redirect the output from a program to a file.
* [ ] Redirect a file to be the input for a program.
* [ ] Send data between programs using a pipe.
* [ ] Choose an appropriate backup strategy for protecting your files.
* [ ] Install and configure software to backup your files to a remote server.
* [ ] Restore and verify your backup from the remote server.

:::
