Topics for a Linux intro course
Topics for a Linux intro course - Lemmy.world
Hello fellow Linux Lemmings! I’ve been tasked with putting together a 20 hour class for “Introduction to Linux” and I’d like to solicit your opinions for topics that should be covered. The class is targeted for at least minimally technical people - maybe developers, or future developers, but regardless of background they’ve never seen or worked with Linux before. I plan to do a VERY short overview of installing Linux (to a VM - mostly using defaults) and the GUI but the primary focus will be CLI. Imagine tools and tasks you come across while working on a “real” server (or VM). A high level overview of the topics I currently have allocated is : - Super brief history of Linux - Benefits and use cases of Linux - General overview of the file system and the purposes of the pre-defined directories (/dev, /proc, /etc, /home, /bin, etc) - “Everything is a file” - File extensions don’t matter (windows users : ) - Note on responsibility - you can delete “in use” files. It will do exactly what you tell it with sometimes minimal guardrails. - Everything from here down is CLI only! - What is a terminal/CLI and how do we use it? - How do we navigate the file system using the CLI - How to list, create, copy, move, delete, and read files/directories - Overview of permissions (read/write/execute, owner, group) - Brief overview of different shells (bash, zsh, etc) - How to get help on the CLI (man, info, --help) - Tab completion, history - Shortcuts / control codes (ctrl+c, ctrl+d, and coverage of ctrl+z later) - grep - Checking processes (top, ps, kill) - Signals (sigterm, sigkill, etc - related to kill above) - Backgrounding and multitasking (ctrl+z, fg, bg, jobs, nohup, &) - Linking (ln) - STDIN, STDERR, STDOUT and redirection - Redirection (>, >>, <) - Command pipes - How to access a remote machine via SSH with UN/PW - How to access a remote machine via SSH with key auth (think cloud VMs like EC2) - Administrative commands and tasks (su, sudo, how it works, when to use it) - Add users and groups - Restart, shutdown, halt - How to install/remove software (package managers, packages, pre-compiled binaries, maybe compilation with make if time allows) - Configuring your profile for customizing your environment - ENV variables and aliases - Network information (ifconfig) and tools (curl, wget, netcat, etc) Everything from here down is “extra” if time allows (AKA - ensuring I don’t run out of material :) - Encryption (gpg - symmetric and asymmetric) - Backups (rsync, maybe dd) - screen/tmux - How to setup key based logins/auth - CLI text editors as an “extra” if we have time (VIM, nano, elvis… no emacs : ) - sysreq commands - srm/shred - Shell scripting basics - init vs systemd, how to start/stop/status services. - Maybe how to create a simple service - Run levels - sed, awk basics - File system types, file system checking, formatting… I hesitate to get into partitioning but it’s always an option if I need it. What do you think? Did I miss anything that you deem super important? Anything that I should definitely keep in the “only if I run out of material” category? Thanks!