Topics for a Linux intro course

clif@lemmy.world to Linux@lemmy.ml – 116 points –

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 - so they have a "real" environment to learn with) 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

  • EDIT: Basic file editing with nano

  • How to search for files (find... maybe locate)

  • Archives and compression (tar, gzip, bzip2)

  • Overview of permissions (read/write/execute, owner, group, chmod, chown)

  • 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, ctrl+a, ctrl+e, 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

  • How to change your passwd (maybe how to change your default shell too)

  • 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
  • EDIT: More advanced CLI text editing with vim
  • 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.
  • Alternatives to well known win/mac utilities and how to find them. EG: GIMP to replace Photoshop.

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?

O, and if you have any good ideas for practical exercises I'd love to hear those too. I want to keep them <15min but things like "create a new directory, cd into it, touch a file, list the contents of / and write the output into the file you just created" are perfect.

Thanks!

48

You are viewing a single comment