Everyone recommends the same F-Droid apps.
These aren't those.
No NewPipe.
No Organic Maps.
No KeePassDX.
These are 10 hidden FOSS apps people install once... then wonder how they ever used Android without them.
Let's start.
Nobody can learn Linux from a course.
If I had to learn Linux from scratch, this is exactly how Iโd do it:
1๏ธโฃ Start with a virtual machine:
โ Install VirtualBox and create an Ubuntu VM.
โ Learn to install Ubuntu, update it with apt update && apt upgrade, and take snapshots before experimenting.
โ Treat the VM as your Linux playground where breaking things is completely fine.
2๏ธโฃ Learn the Linux filesystem:
โ Explore /home, /etc, /var, /usr, /tmp, /dev, and /proc
โ Practice pwd, ls, cd, mkdir, cp, mv, rm, and find
โ Understand why configuration files live in /etc and logs commonly live in /var/log.
3๏ธโฃ Get comfortable with the terminal:
โ Learn cat, less, head, tail, grep, sort, wc, and pipes.
โ Practice commands like cat file.txt | grep "error"
โ Start doing everyday tasks without opening the GUI.
4๏ธโฃ Understand users and permissions:
โ Learn whoami, id, sudo, useradd, passwd, and groups
โ Experiment with chmod, chown, 755, 644, and file ownership.
โ Create another user and see what they can and cannot access.
5๏ธโฃ Learn how processes work:
โ Use ps, top, and htop to see what's running
โ Learn about PIDs, background processes, signals, and kill
โ Find a process consuming too much CPU and figure out how to deal with it.
6๏ธโฃ Learn package management:
โ Use apt install, apt remove, apt update, and apt upgrade.
โ Install Nginx, find its configuration files, and understand what it changed.
โ Learn how Linux installs, updates, and removes software.
7๏ธโฃ Learn networking:
โ Use ip addr to understand network interfaces and IP addresses.
โ Practice ping, curl, ss, and dig to understand connectivity, ports, and DNS.
โ Connect to your VM with ssh user@ip-address and manage it remotely.
8๏ธโฃ Learn services and systemd:
โ Learn systemctl start, stop, restart, enable, and status
โ Install Nginx, stop it, restart it, and configure it to start automatically.
โ When something breaks, use journalctl and systemctl status to find the problem.
9๏ธโฃ Learn storage:
โ Understand disks, partitions, filesystems, and mount points
โ Practice with lsblk, df -h, du -sh, and mount
โ Create a virtual disk, format it, mount it, and understand where your data actually lives.
๐ Learn Bash:
โ Start with variables, conditions, loops, functions, and exit codes
โ Learn $?, $1, pipes, redirection, and #!/bin/bash
โ Write scripts that automate things you actually do.
1๏ธโฃ1๏ธโฃ Learn troubleshooting:
โ When something breaks, don't immediately search for the error.
โ Check journalctl, /var/log, systemctl status, and application logs.
โ Learn to go from symptom, evidence, cause, and fix
1๏ธโฃ2๏ธโฃ Break things on purpose:
โ Stop services, change permissions, modify configurations, and kill processes
โ Figure out why you broke something and recover it yourself.
โ Restore your VM snapshot when you completely destroy it
1๏ธโฃ3๏ธโฃ Build something real:
โ Run Nginx, deploy an application, connect a database, and expose it over the network.
โ Manage everything through SSH and the terminal
โ Then learn Docker and understand what containers are actually doing underneath.
1๏ธโฃ4๏ธโฃ Delete Windows:
โ Once you're comfortable, install Linux directly on your machine.
โ Make it your daily driver and learn to solve problems without switching back.
โ Expect plenty of man, --help, searching, breaking things, and fixing them
Don't memorize Linux. Use it until you understand what's happening underneath. ๐ง