Operating systems & Linux
Shell, permissions, processes, filesystems, boot and maintenance of Linux, Windows and macOS.
Bash scripting basics: variables, conditions and loops
How to write your first useful Bash scripts: shebang, variables, quoting, arguments, if, for and while loops, exit codes and safer script options.
Which Linux distribution to choose: practical criteria
How to choose a Linux distribution: fixed or rolling release, long-term support, desktop, hardware, and how Ubuntu, Mint, Fedora, Debian and Arch differ.
Environment variables and PATH: configuring the shell with .bashrc
Environment variables on Linux and macOS: how PATH works, .bashrc versus .profile, useful aliases and the common mistakes that break a terminal.
Filesystems compared: ext4, Btrfs, XFS, NTFS, APFS and exFAT
How to choose a filesystem: the strengths of ext4, Btrfs and XFS on Linux, NTFS and APFS on Windows and macOS, and exFAT for drives used everywhere.
Finding files and text on Linux: find, grep and locate
How to find files by name, date and size with find, search text inside files with grep and ripgrep, and use locate for fast lookups, with examples.
First Linux shell commands: moving between files and folders
The essential Linux terminal commands explained with examples: pwd, ls, cd, mkdir, cp, mv, rm, absolute and relative paths, completion and history.
Archives and compression on Linux: tar, gzip, xz, zstd and zip
Creating and extracting archives on Linux with tar, how gzip, bzip2, xz and zstd differ, when to use zip and how to check an archive before extracting.
How Linux boots: UEFI, GRUB, kernel, initramfs and systemd
The stages of a Linux boot explained in order: UEFI firmware, EFI partition, GRUB, kernel, initramfs and systemd, plus commands for troubleshooting.
The Linux directory structure: what /etc, /var and /usr are for
A guide to the Linux filesystem hierarchy: what /etc, /var, /usr, /home, /tmp, /proc and /dev contain, where configs and logs live, what to leave alone.
Disk full on Linux: finding what takes up space with df and du
A method for freeing space on Linux: reading df, finding heavy folders with du and ncdu, cleaning logs, caches and old kernels, inodes and open files.
Memory and swap on Linux: reading free and the OOM killer
How Linux uses RAM: cache, available memory and swap, how to read free, create a swap file, tune swappiness and understand when the OOM killer steps in.
Linux package managers: apt, dnf and pacman compared
How software is installed on Linux: packages, repositories and dependencies, equivalent apt, dnf and pacman commands, Flatpak, Snap and rules to stay safe.
Disks and partitions on Linux: lsblk, mount and /etc/fstab
How to identify disks and partitions on Linux, create a partition with parted, format it, mount it by hand and make it permanent in /etc/fstab using UUIDs.
Linux permissions: read, write, execute and chmod
How file permissions work on Linux: owner, group and others, rwx, octal notation, chmod, chown, umask and the special setuid, setgid and sticky bits.
Linux processes: ps, top, kill and signals explained
What Linux processes are and how to manage them: PID, parent process, states, ps, top and htop, SIGTERM and SIGKILL, nice priority and background jobs.
Linux system logs: reading journalctl and dmesg
How to read Linux logs with journalctl and dmesg: filter by service, priority and time range, follow messages live and keep their disk usage in check.
Users, groups and sudo on Linux: managing access
How Linux users and groups work: UIDs, /etc/passwd and /etc/shadow, creating and changing accounts, and granting privileges with sudo and visudo.
Live USB and dual boot: installing Linux alongside Windows
How to try Linux from a live USB stick, install it alongside Windows in dual boot and solve the typical Secure Boot, BitLocker and clock problems.
macOS from the Terminal: Homebrew, launchd and system tools
macOS under the hood: Terminal and zsh, installing software with Homebrew, launchd services, Activity Monitor, logs and commands unique to Apple's system.
Shell pipes and redirection: stdin, stdout and stderr
Combining Linux commands with pipes and redirection: standard input, output and error, the > >> 2> and | operators, tee, /dev/null and log examples.
SSH on the client side: keys, config file, scp and rsync
Everyday SSH without hassle: ed25519 keys, ssh-agent, the ~/.ssh/config file with server aliases, copying files with scp and syncing with rsync.
Managing services with systemd: systemctl and unit files
How to start, stop and enable services on Linux with systemctl, read a unit's status and write a simple .service file without touching the system ones.
Windows, macOS and Linux compared: the differences that matter
The real differences between Windows, macOS and Linux: architecture, installing software, updates, security, supported hardware and who each one suits.
Windows maintenance: sfc, DISM, chkdsk and recovery
Built-in tools for repairing Windows: sfc for system files, DISM for the image, chkdsk for the disk, Event Viewer, restore points and the WinRE tools.
WSL: running Linux inside Windows without virtual machines
What the Windows Subsystem for Linux is, how to install it and pick a distribution, where to keep files for good performance and which limits to expect.