Useful Raspberry Pi Commands

Getting starting with the Raspberry Pi command line can be a steep learning curve, with a whole heap of commands at your fingertips it’s hard to remember them all. Here then are a bunch of commands I use quite frequently.


A lot of the time you’ll probably need to run commands as a super user, so to do this you’ll want to prefix your command with the keyword “sudo”

sudo mycommand # Executes mycommand with super user permissions


As with any computer, it’s best to keep the system/packages installed on it up to date. This is done on the Raspberry Pi with 2 commands “update” and “upgrade”, where update syncs the internal database of available packages, and upgrade applies any updates.

sudo apt-get update # Syncronizes the package database
sudo apt-get upgrade # Upgrades installed packages inline with updated package database


Once you are logged in to your Raspberry Pi you are probably going to want to navigate around the files/directories on it.

LS – Listing files/directories

ls # List the contents of the current directory

CD – Changing directory

cd Desktop # Move into a folder called Desktop inside my current location
cd /Desktop #  Move into a folder called Desktop located at the root of my device
cd ~/Desktop # Move into a folder called Desktop located in the home folder of the current user
cd .. # Move into the parent folder of my current location

PWD – Ouput the current working directory

pwd # Prints out the path of the current working directory


Now that you can get around, you’ll probably want to be able to actually do something with those files.

MKDIR – Make a directory

mkdir myDir # Created a new directory named myDir inside the current working directory

RMDIR – Remove empty directories

rmdir oldDir # Removes the directory oldDir only if the folder is empty

RM – Remove a file

rm myFile.txt # Removes the file myFile.txt

CP – Copy a file/directory

cp oldFile.txt newFile.txt # Copies oldFile.txt into a new file named newFile.txt
cp oldFile.txt ~/tmp # Copies oldFile.txt into the ~/tmp directory
cp -r ~/tmp1 ~/tmp2 # Recursively copies files from ~/tmp1 into ~/tmp2

MV – Move a file/directory (TIP: Also handy for renaming files)

mv oldFile.txt newFile.txt # Moves oldFile.txt to newFiles.txt, effectively renaming it
mv oldFile.txt ~/tmp # Moves oldFile.txt into the ~/tmp directory
mv ~/tmp1/myFolder ~/tmp2/myFolder # Moves the myFolder directory from ~/tmp1 to ~/tmp2

WGET – Get a file from the internet

sudo wget # Downloads file.txt to the current working directory


There are many way that you can edit a file on your Raspberry Pi, but the easiest way is to probably use the nano command.

sudo nano myFile.txt # Opens myFile.txt in nano for editing

Once you are in nano, you’ll find yourself using the following commands quite frequently.

Ctrl+X # Exits nano (It will ask you if you want to save changes if changes have been made)
Ctrl+K # Cut the current line
Ctrl+U # Un-cut or pastes the previously cut line


If you are creating scripts to run on your Raspberry Pi, the likelihood is that you have written it in Python. To run your script, you’ll want to use the “python” command passing in the python script file name you want to run.

sudo python # Runs the python script


When it comes to shutting down or rebooting your Pi (say after making some system changes) the temptation is to just disconnect/reconnect the power, however this can lead to some unexpected side effects (corrupted SD card being the primary one). To shutdown/reboot safely then, you’ll want to use one of the following commands.

sudo reboot # Reboots the Pi immediately
sudo shutdown -r now # Reboots the Pi immediately
sudo shutdown -r 10 # Reboots the Pi in 10 minutes from now
sudo halt # Shuts down the Pi immediately
sudo shutdown -h now # Shuts down the Pi immediately
sudo shutdown -h 10 # Shuts down the Pi in 10 minutes from now

I will be updating this list in future with any other commands I find myself executing on a regular basis, but for now, that should be more than enough to get you started.

Hello World

As with any blog, it’s always tricky to know where to start, but I thought the best thing would be to setup some expectations.

In my day job, I work as an Umbraco developer, but if you have come here looking for blog posts on this subject, you will be better off looking over on Outfield Digitals blog as that is where I do all my work related blogging.

This blog then is more about the things I do in my spare time, which usually involves electronics or making in varying senses of the word. I can’t promise that everything will be of the greatest quality as this is really just going to be somewhere I can keep track of the steps I took to get things working (I have a habit of jumping from platform to platform so often forget what I learn) but never the less, if you are into making and hacking, I hope you’ll find what I write interesting.