beanz Magazine

Command Line Interfaces (CLI)

Jean Baptiste Paris on Flickr

Whiz around your computer’s folders and modify files at lightning speed like a pro.

The Raspberry Pi is a really cool piece of hardware, a tiny low-power $35 computer that’s roughly as capable as a desktop computer from the ‘00s. With a computer so small & portable you might not even have it connected to a mouse, keyboard, or a monitor. I have one sitting in my apartment, connected to the tv, the router, and a tiny external hardrive where I keep all my music and archives of movies.

When I need to operate the pi, I could attach a keyboard & mouse; but that would be work. A much easier way to run programs on my Pi is to connect to it remotely from my laptop and control it from the command line.

That’s my awkward transition to saying that in this article we’ll be giving an introduction to using the command line in Linux, with a special emphasis on the things you’d need to know to administer a Raspberry Pi.

First off, for this article I’m going to be assuming you either have a computer running Linux or Apple’s OSX in front of you. Windows has its own command line interface that’s different enough from Linux or OSX that a lot of things we’ll be talking about don’t apply. Further, this article is mostly focused on Linux because that’s almost always what’s installed on the Raspberry Pi. OSX is closely enough related to Linux that its command line is basically the same.

The first thing you need to do is open a terminal. On both Linux and Mac there should be a program called “terminal” or possibly “terminal emulator”: Open it and you should see something that looks like the following:

What do you do from here? Well, for your very first command type ls at this command line and hit enter. You should see a list of files in the current directory.

In my case it looked like:

Here’s a little note of terminology (more like terminal-ogy, eh??): If you’re used to use a graphical interface on a computer you might think of the containers that hold all your files as “folders”. When you read documentation about command-line interfaces you’ll see people call them directories instead, which is the terminology I’ll use in this series of articles.

Our next command is cd, which stands for change directory. This is our first command needs to be given an extra piece of data, called an argument. On the command line, commands are separated from their arguments by a space.

So if I want to move into the directory called “Documents” then I would type:

cd Documents

Now is the time to introduce a nice little shortcut that will save you a lot of typing: the tab key functions as an autocomplete at the command line. So all I need to type is “cd Do” and hit tab and then it turns into cd Documents/. There are a few other small shortcuts related to files and directories that you might also find useful.

First, that the tilde, which is the “~” character on your keyboard, stands for your home directory. So I can say…

cd ~/projects 

…and the computer understands it as:

cd /home/clarissa/projects. 

In order to go up one level in the directory structure you can type cd .. (two periods with no space between them). In general when dealing with directories in Unix/Linux/OSX the “..” means “the directory that contains the directory I’m in”.

This might be a good time to try moving between directories and looking at what’s in them with the ls command, getting a feel for navigation at the command line.

Next, let’s talk a little bit about optional arguments to commands. I can type “ls” to see a basic view of all the files in a directory, but I can also type ls -s to see not just the names of the files but their size, or ls -a to see all the files, even the hidden files and directories that contain extra data and configuration for the programs on your system. For example, if I type “ls -a” in my home directory I see this:

Most commands have these optional arguments, and the general rule is:

  • Optional arguments start with a dash and one or two letters or
  • Optional arguments start with two dashes (–) and are followed by a word

Often there’s both a shorter and a longer way of specifying optional arguments. For example, “ls –all” and “ls -a” do the same thing.

Now we’re going to introduce three more commands to round out your file system skills: rm to remove files, mv to move files, and cp to copy files.

The rm command is both straightforward and dangerous. You can use it to delete a file or directory permanently. I recommend that while you’re new to the command line you should always call “rm” with the “-i” argument for “interactive”. This will ask you about each file before deleting it. If I have a file called “OMGTerribleFanFic.txt” then I can delete it with rm -i OMGTerribleFanFic.txt. If I want to delete a directory, like a directory called “TerriblePhotos”, then I’d type rm -i -r TerriblePhotos; the “-r” stands for recursive and is needed to get rid of entire directories.

The “cp” and “mv” commands copy and move files, respectively. You can say cp thisFile thatFile to copy a file or mv thisFile thatFile to move it instead. You can reference the entire directory structure in these commands, like mv ~/Videos/cats_being_weird.mp4 ~/Dropbox/bestcatever.mp4. You don’t have to do anything special in order to move a directory, but to copy a directory you have to say “cp -r” just like removing a directory.

Finally, here’s a little trick to let you handle a bunch of files or directories at the same time: wildcards.

At the command line you can reference a bunch of files at once by typing an asterisk, which is the * symbol. If you type mv Videos/*.mp4 Dropbox/. you’ll move every file that ends with “.mp4” from the Videos directory to the Dropbox directory with the same file name.

That wraps up our introduction to using the command line. Now you know enough to handle basic file management, which is very useful. Next time we’ll talk about calling other programs from the command line, editing files from the command line, and doing some more system administration.

Learn More

A good tutorial that takes a faster pace

The “man” command (short for manual)


The command line has a programming language built into it so you can write programs that behave like the built in commands.

Also In The June 2018 Issue

Logic puzzles help develop reasoning skills useful for programming, computer science, and anything you might do.

Find perfect and fun gifts for your loved ones that teach STEAM concepts and skills.

From light-up bow-ties to conductive thread, you’ll be the life of the party with this STEAM-inspired gear.

A free online test service reveals how much personal data your web browser is giving away.

Add more tools to your command line arsenal, including running mini-scripts and making backup copies.

Use switches to take your robotic creations to the next level.

An old classic with a electronic twist, featuring JavaScript and micro:bit.

Create the American flag in SketchUp using this detailed tutorial.

From lasers to supernovas, Berboucha is making science communication a priority.

Code can always be improved. Check out these tips to make you the best programmer you can be!

It’s a programming language unlike any you’ve seen before. Check out this symbolic system designed for mathematical calculations.

New, improved, faster, and sleeker - it’s Scratch 3, your new favourite block language!

Learn about the brilliant algorithm behind all of your GPS devices.

It’s free, comprehensive, and available on-the-go. This cool app helps you master Python faster than ever before.

Open up whole new worlds to explore through these interesting, diverse add-ons.

Links from the bottom of all the October 2018 articles, collected in one place for you to print, share, or bookmark.

Interesting stories about computer science, software programming, and technology for October 2018.