add initial 3 lessons
This commit is contained in:
+159
@@ -0,0 +1,159 @@
|
||||
# Basic Linux Commands (Bash)
|
||||
|
||||
Almost every software engineer, sysadmin, and DevOps person uses the terminal daily.
|
||||
This lesson takes you from never having used Linux to being comfortable navigating
|
||||
and managing files on a machine. You can practice on a Raspberry Pi, a cloud VM,
|
||||
or any Linux distro — the commands are the same.
|
||||
|
||||
## 1. What is a terminal?
|
||||
|
||||
A terminal is a text window where you type a command and press Enter. The program
|
||||
that reads your commands is called a **shell**. On most Linux systems (including
|
||||
Raspberry Pi OS) it's **Bash**.
|
||||
|
||||
To open one on the Pi, press `Ctrl+Alt+T` or find "Terminal" in the menu.
|
||||
|
||||
Commands in this lesson go in code boxes. Type exactly what's in the box and press
|
||||
Enter. Anything in a box by itself is a command; anything after `#` is a comment
|
||||
explaining it — don't type that part.
|
||||
|
||||
## 2. Your first commands
|
||||
|
||||
Run these one by one and read the output:
|
||||
|
||||
```
|
||||
whoami # prints your username
|
||||
pwd # prints your current folder (your "address")
|
||||
ls # lists the files in your current folder
|
||||
date # prints the date and time
|
||||
```
|
||||
|
||||
Linux organizes everything as files and folders in one big tree. The very top
|
||||
folder is `/` (the root), and your personal folder (like `/home/pi`) is your home.
|
||||
|
||||
## 3. Moving around
|
||||
|
||||
```
|
||||
ls # what's in this folder
|
||||
ls -la # everything, including hidden files, with details
|
||||
cd downloads # go into a folder (no space between cd and the name)
|
||||
cd .. # go up one level
|
||||
cd ~ # go to your home folder (cd with no argument does the same)
|
||||
```
|
||||
|
||||
Tip: type the first few letters of a folder name and press **Tab** — Linux
|
||||
autocompletes it for you. Use Tab constantly.
|
||||
|
||||
## 4. Files and folders
|
||||
|
||||
```
|
||||
touch notes.txt # create an empty file
|
||||
mkdir projects # create a folder
|
||||
mkdir -p projects/web/app # create nested folders in one go
|
||||
cp notes.txt backup.txt # copy a file
|
||||
mv notes.txt projects/ # move a file (or rename it)
|
||||
rm backup.txt # delete a file
|
||||
rm -r projects # delete a folder and everything inside it
|
||||
```
|
||||
|
||||
Warning: `rm` does not ask "are you sure?" and there is no trash bin. Deleted is
|
||||
deleted. Read your command carefully before pressing Enter — especially `rm -rf`,
|
||||
which deletes recursively without mercy.
|
||||
|
||||
## 5. Looking at files
|
||||
|
||||
```
|
||||
cat notes.txt # print the whole file
|
||||
head notes.txt # first 10 lines
|
||||
tail notes.txt # last 10 lines
|
||||
less notes.txt # scroll through a big file (press q to quit)
|
||||
```
|
||||
|
||||
## 6. Writing to files
|
||||
|
||||
```
|
||||
echo "hello" > notes.txt # write (overwrites the file if it exists)
|
||||
echo "second line" >> notes.txt # append (>> adds to the end)
|
||||
```
|
||||
|
||||
## 7. Editing files: nano
|
||||
|
||||
`nano` is the standard beginner editor. Open a file with:
|
||||
|
||||
```
|
||||
nano notes.txt
|
||||
```
|
||||
|
||||
Now you can edit. The keys you need are shown at the bottom of the screen:
|
||||
|
||||
- `Ctrl+O` then `Enter` — save (it calls saving "Write Out")
|
||||
- `Ctrl+X` — quit
|
||||
|
||||
If it asks "Save modified buffer?" when you quit, press `y`, then `Enter`.
|
||||
|
||||
## 8. Searching and pipes
|
||||
|
||||
```
|
||||
grep "hello" notes.txt # print only the lines containing "hello"
|
||||
ls | grep notes # list only files whose name contains "notes"
|
||||
```
|
||||
|
||||
That `|` is called a **pipe**. It takes the output of the command on the left and
|
||||
feeds it as input to the command on the right. Piping small tools together is one
|
||||
of the core ideas of Linux — small commands that each do one thing, chained up.
|
||||
|
||||
## 9. Getting help
|
||||
|
||||
```
|
||||
ls --help # short summary of how to use a command
|
||||
man ls # full manual page (press q to quit)
|
||||
```
|
||||
|
||||
When you don't know a command, `man` is the first place to look. It's on the
|
||||
machine itself, so it works even without internet.
|
||||
|
||||
## 10. Installing software: apt
|
||||
|
||||
On Raspberry Pi OS (and Ubuntu/Debian), software comes in packages managed by
|
||||
`apt`. `sudo` means "run this as the administrator" and it will ask for your
|
||||
password:
|
||||
|
||||
```
|
||||
sudo apt update # refresh the list of available packages
|
||||
sudo apt install -y curl # install a package (the -y means "yes to prompts")
|
||||
sudo apt remove curl # remove a package
|
||||
```
|
||||
|
||||
## 11. About your system
|
||||
|
||||
```
|
||||
uname -a # what machine and kernel this is
|
||||
df -h # how much disk space is left
|
||||
free -h # how much memory is in use
|
||||
history # everything you've typed so far
|
||||
clear # clear the screen
|
||||
```
|
||||
|
||||
## 12. Shortcuts that feel like magic
|
||||
|
||||
- **Tab** — autocomplete a command or filename
|
||||
- **Up/Down arrows** — cycle through your previous commands
|
||||
- **Ctrl+C** — stop whatever is currently running
|
||||
- **Ctrl+L** — clear the screen (same as `clear`)
|
||||
- **Ctrl+R** — search your command history: start typing the old command, keep
|
||||
pressing Ctrl+R to cycle through matches, Enter to run it
|
||||
|
||||
## Practice
|
||||
|
||||
Try these from memory (scroll up only when you're stuck):
|
||||
|
||||
1. Create a folder called `lesson1` and go into it.
|
||||
2. Create a file `hello.txt` containing the line `hello world`.
|
||||
3. Append a second line: `second line`.
|
||||
4. Print only the lines containing `hello`.
|
||||
5. Copy `hello.txt` to `hello-backup.txt`, then delete the original.
|
||||
6. Print the first line of `hello-backup.txt`.
|
||||
|
||||
If you can do all six without looking, you know the essentials: `pwd`, `ls`, `cd`,
|
||||
`touch`, `nano`, `cat`, `rm`, `cp`, `mv`, `grep`, and pipes. That's the toolkit
|
||||
you'll reach for on any Linux machine.
|
||||
Reference in New Issue
Block a user