116
submitted 1 year ago* (last edited 1 year ago) by clif@lemmy.world to c/linux@lemmy.ml

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!

you are viewing a single comment's thread
view the rest of the comments
[-] ExLisper@linux.community 8 points 1 year ago

I would do it completely differently. Do some intro about history and philosophy. Next:

  • everything is a file -explain and actually show /proc & /dev with some fun examples (/Dev/urandom /proc/cpuinfo and so on). Not necessarily CLI
  • explain the idea behind Unix way of having lots of small tools. Show examples of grep, cat, ps, head, tail...
  • explain piping and streams, show ps | grep and so on
  • combine it all and show some fun examples (a one liner to change display setup or something
  • explain processes, input output streams, pid, kill
  • combine and show how do a one liner to find and kill a process

I like to courses to have natural flow where you keep adding stuff and build more and more complex things. A lot of small tidbits are hard to follow.

[-] jagungal@sh.itjust.works 4 points 1 year ago

I like this idea, but I think you should work a bit of history/philosophy into each lesson by explaining why things work the way they do. The students are unlikely to engage with a history of a system they've never used before, so starting with that will lose their attention before you've even gotten it. Giving them a bit at a time means that they will slowly build a mental model of how *nix works and is built.

this post was submitted on 01 Sep 2023
116 points (98.3% liked)

Linux

47946 readers
1804 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS