Level: Beginner | Offered: Fall 2026 | Time: 1–2 hours
This workshop is designed for beginner and intermediate Linux users. Most of the talk is focused on the basics, but some topics covered are outside what is normally covered and are intended for those who know the basics, but are interested in the inner workings.
To complete this workshop, follow along in the slides and complete the tasks on your computer as they appear.
Tasks
Task 0: Requirements
-
Log in to your machine
Open your terminal.On Windows, it is called cmd or PowerShell (ps), either should work.
On MacOS, open the Terminal application.
On Linux, open your terminal emulator of choice.
Make sure you are using the stock ssh binary, other clients (eg. kitten ssh) will not work.Type the following command:
ssh <your Purdue username>@workshop.esap.devFor example:
ssh bondarv@workshop.esap.devFollow the instructions to log in:
- For the secret word, it will be announced in class.
- Then go to your email, and copy the code
You will then be placed into a shell, eg:
bondarv@esapworkshop:~$(raise your hand if you have any issues)
⚠️ Warning Please do not do anything bad with this access. Bad things will happen.
Task 1: Run your first command
-
Try the following commands, and see what they do:
whoamipwddateecho "test" -
Write a command to welcome yourself
-
Scroll and and down through your commands with the up and down arrows, and through a command with a side to side arrow
-
Clear the screen with
clear -
Auto complete
dawith the <Tab> key
Task 2: Working with files
-
Go to your home folder (
~is "home"):cd ~ pwd -
Make a folder for the workshop and move into it:
mkdir workshop cd workshop -
Create an empty file:
touch notes.txt ls -
Write a line into the file (
>overwrites,>>appends):echo "First line" > notes.txt echo "Second line" >> notes.txt -
Read the file:
cat notes.txt -
Edit the file in a text editor:
vim notes.txtor
nano notes.txt- Add a line of your own.
- Save and exit (clear on nano,
:wqin vim normal modee)
-
Copy the file:
cp notes.txt notes-backup.txt ls -
Move the file:
mv notes-backup.txt old-notes.txt ls -
Make a subfolder and move a file into it:
mkdir archive mv old-notes.txt archive/ ls archive -
Go up one level and back down:
cd .. pwd cd workshop -
Delete (permanently) a file
rm archive/old-notes.txt rmdir archive ls
Task 3: An aside on Linux itself (system files, users, processes, sudo)
System files
- Look at the very top of the file system. / = root
ls / - Peek at a few important folders:
ls /etc ls /home ls /var/log - Find out which Linux you're running:
cat /etc/os-release
Users
- See your user ID and the groups you belong to:
id - See the list of users on the system:
cat /etc/passwd - Look at file ownership and permissions:
ls -l ~/workshop- The first column (e.g.
-rw-r--r--) shows who can r - Read, w - Write, x - eXecute - The next names show the owner and group.
- The first column (e.g.
Processes
- See the programs you're running in this terminal:
ps - Start a program in the background (
&runs it in the background):sleep 300 & ps - Stop it using its process ID (PID) from the
psoutput:kill <PID> ps - See everything running on the machine (press
qto quit):top
sudo
- Try to read a protected file:
You'll get
cat /etc/shadowPermission denied. - Run it again as the administrator (root) using
sudo:sudo cat /etc/shadow
Sudo is a very powerful tool, and you should only use it when it is nedded
Task 4.1: Let's make a basic website - Creating the files
- Create the folder ~/website
- Create the file ~/website/index.html
- Add to it
<html> <head> <title>Hello</title> </head> <body> <h1>Hello from Linux!</h1> <p>Botton Text.</p> </body> </html>
- Save
- Check it was saved using
cat
Task 4.2: Let's make a basic website - Learning about programs and install nginx
-
Find where
lslives:which ls -
Look at some of the other programs installed:
ls /usr/bin -
Check whether nginx (a web server) is installed yet:
which nginxNo output means it isn't installed.
-
Update the list of available packages:
sudo apt update -
Install nginx and curl
sudo apt install -y nginx curl -
Check it's installed now:
which nginx -
Check that nginx is running as a service:
systemctl status nginxCheck if it apears to be active.
-
Requst the page using the curl command:
curl http://localhost -
Go to https://workshop.esap.dev/<your purdue username>/80/
Ex. https://workshop.esap.dev/bondarv/80/
Check out your website there
-
Try stopping and starting the service, refresh the browser to see the result:
sudo systemctl stop nginx sudo systemctl start nginx
Task 4.3: Let's make a basic website - Putting everything together
-
Look at where nginx keeps its web pages:
ls -l /var/www/htmlNotice the files are owned by
root. -
Copy your page there (use
sudo):sudo cp ~/website/index.html /var/www/html/index.html -
Check it's there:
ls -l /var/www/html -
Refresh your previously opened page
-
Make a change to your page:
Add a new line, e.g.
<p>test</p>, then save and exit. -
Publish the update and refresh the browser:
sudo cp ~/website/index.html /var/www/html/index.html -
See what nginx logs:
sudo tail /var/log/nginx/access.log
Extra Resources
- Debian Documentation
- Arch Wiki, good resource, even if you are not using Arch
Contributions
- Slide deck and exercises: Vlad Bondar