0
()
submitted a long while ago by @ to c/@
all 50 comments
sorted by: hot top controversial new old
[-] Lantern@lemmy.world 15 points 10 months ago

You should probably explain what a distribution, a DE, a WM, and a DM are. I feel like this is something that Windows users lack in particular, as they have little control over these features.

[-] MrCamel999@programming.dev 13 points 10 months ago

This looks like an amazing class! I would absolutely take it, it looks awesome to me.

[-] clif@lemmy.world 3 points 10 months ago
[-] eeleech@lemm.ee 12 points 10 months ago

I would consider that ifconfig is deprecated on many distros and would therefore teach about iproute2 (mostly the ip and ss commands) instead. Additionally I would consider editing files essential, even if it is with nano.

Maybe mention more modern and simpler help tools like tldr, as they could be even more useful to beginners.

To introduce the shell and utilities, I would try to find a somewhat realistic use case that combines multiple aspects, like analyzing some files or spellchecking instead of simply mentioning every feature one by one.

[-] clif@lemmy.world 6 points 10 months ago

Now I'm learning something. I've defaulted to using ifconfig for so many years I didn't even realize that ip and ss were around. I'll look into them, thanks for the pointers.

And yeah, good idea on file editing. Maybe I should move nano up to the essential category for basic editing and keep vim in the "extras" since it takes a little more training to use effectively, while providing a lot more functionality if you know how to take advantage of it : D

[-] eeleech@lemm.ee 7 points 10 months ago

Keeping the details about vim in the extras is what I would do as well, but I would definitely tell the students that vim and vi exist, because they are the only editors available on many systems.

[-] wviana@lemmy.eco.br 11 points 10 months ago

It's missing GNU ๐Ÿ‚ project and free ๐Ÿ•Š๏ธ software.

[-] possiblylinux127@lemmy.zip 3 points 10 months ago

Beat to to it

[-] selokichtli@lemmy.ml 10 points 10 months ago* (last edited 10 months ago)

It's too much for 20 hours, if it's introductory. Also, wouldn't you want to teach them how to actually install Linux?

[-] mvirts@lemmy.world 9 points 10 months ago

For the love of God make them all practice using tab completion in shells, and show them nice shells that do completion for command options. I spend a significant amount of time dictating commands that could be completed by the shell ๐Ÿ˜…

[-] russjr08@outpost.zeuslink.net 6 points 10 months ago

Also, some of the other bash/readline niceties - like Ctrl+r for reverse-search, or Ctrl+x Ctrl+e to open the currently typed in command in $EDITOR (saving will execute the command). Good for when you have one of those really long commands and you have to do some more extensive editing.

[-] atlasraven31@lemm.ee 8 points 10 months ago* (last edited 10 months ago)

With files, include user and group permissions (read, write, execute).

You could talk briefly about the FOSS philosophy.

[-] clif@lemmy.world 6 points 10 months ago* (last edited 10 months ago)

Ah, great point on FOSS. I know I have it in my original notes somewhere but I need to be sure it makes it into my outline.

I added chmod and chown into the permissions bullet.

[-] atlasraven31@lemm.ee 1 points 10 months ago* (last edited 10 months ago)

Everything else is great. It looks very comprehensive.

[-] ExLisper@linux.community 7 points 10 months 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 10 months 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.

[-] HerbalGamer@lemm.ee 7 points 10 months ago

Maybe the linuxupskillchallenge is a good inspiration?

[-] Cornelius@lemmy.ml 6 points 10 months ago* (last edited 10 months ago)

I would consider teaching them about a CLI shell, like Fish or ZSH (through oh my zsh), whilst they're not usually going to have the luxury of a nice shell on a remote server but they will if they're on a desktop. A good shell makes the CLI soooooo much easier, and faster, to use. Work smarter not harder, install a shell other than bash.

I would also HIGHLY consider teaching them about desktop app software development on Linux, there's a surprising number of developers who don't know about the different ways you can distribute software on Linux:

  • Native system packages
  • Snap packages
  • Flatpaks

Teaching them about this is definitely a must imho, there are so many OSS projects out there that insist on distributing their software via native system packages (without supporting most distros). They're also likely to run into it even if they're just in IT, the server market uses Snaps quite a bit.

[-] secret301@sh.itjust.works 2 points 10 months ago

I've been using bash forever maybe I should try zsh

[-] Cornelius@lemmy.ml 2 points 10 months ago

I highly recommend it, I've been using OMZ for almost a year now, it's super nice and I have no performance issues.

[-] theshatterstone54@feddit.uk 1 points 10 months ago

A few things you need to know:

  1. In my experience, my super-customised Zsh is a bit slower

  2. It is far more customisable

  3. When loading plugins, do NOT use oh-my-zsh or other plugin managers. In most cases, the plugins are just zsh files, so just source the files directly into your .zshrc to have better performance. For me, zsh with oh my zsh is unbearably slow. Without it, zsh is so much faster.

  4. Add a zsh history file to save your history. This is especially useful if you want to use something like autosuggestions and autocompletion.

  5. Check out my zsh config at https://gitlab.com/theshatterstone/dotfiles for examples of how to do 3 and 4. If you need any help, let me know.

[-] Cornelius@lemmy.ml 1 points 10 months ago

When loading plugins, do NOT use oh-my-zsh or other plugin managers. In most cases, the plugins are just zsh files, so just source the files directly into your .zshrc to have better performance. For me, zsh with oh my zsh is unbearably slow. Without it, zsh is so much faster.

Maybe you used a much older version of oh my ZSH, but at least the latest versions of OMZ I use have no issues with performance at all. It's a possibility that some of the plugins you're using just don't play nice through OMZ in terms of performance. I know there's been many updates to OMZ as of recent years that have massively improved performance.

For context the slowest device I use is a laptop (granted with a 5800U), on battery it'll struggle to load pages quickly, but such is the way of a laptop if you want reasonable battery life. Doesn't help that the web is a mess though :/

[-] snowraven@sh.itjust.works 6 points 10 months ago

I think you've got it all covered. But for my 2 cents: maybe resources to keep them engaged after these classes, a beginner's book like "the command line by william schotts" might be an Excellent resource to recommend.

Throwing in a word for foss as someone else is also a nice idea. It would be even better if you could relate it your own life. For example - I use tons of custom scripts for purposes like creating automated git backups and syncing my gdrive using rclone. If you could show your students a glimpse of what you as a enthusiast could accomplish(and what they might customise someday too) it can leave a very lasting positive impression and desire to learn more in their minds.

[-] clif@lemmy.world 2 points 10 months ago* (last edited 10 months ago)

Excellent suggestions.

I've got one example for the shell scripting section - a script I wrote decades ago called serial_killer.sh that's used to terminate "bad" processes that spin up tens to hundreds of copies of themselves. You do something like serial_killer.sh my-bad-program and it will use a few CLI commands to find the PIDs for all processes named "my-bad-program", ask you to input the signal (sigterm/sigkill) to use, ask you for confirmation that you want to send that signal to the list of processes (listing all of them with program name, owner, PID, PPID, etc), then kill all of them in one go if you confirm.

That was a hacky fix to a bad approach/configuration, but it was a fun script : )

[-] kylian0087@lemmy.world 5 points 10 months ago

For package management i would also give a brief explenation about repositorys.

[-] possiblylinux127@lemmy.zip 4 points 10 months ago

You should explain free software and copyleft

I would also consider having some sort of final project. It can be anything from a game server to a desktop widget

[-] qjkxbmwvz@lemmy.sdf.org 4 points 10 months ago* (last edited 10 months ago)

Looks awesome! I'd put a big emphasis on piping/IO redirection (maybe move it further up the curriculum?). I find this video, when Kernighan explains some basics, just amazing: https://youtu.be/tc4ROCJYbm0?si=3l48F_Ci9FYDkNEi

I'd also maybe move shell script basics up a bit


like the really basic stuff. I think it really hammers home the point that the command line and a script are doing the same thing


telling the computer what to do!

[-] PipedLinkBot@feddit.rocks 1 points 10 months ago

Here is an alternative Piped link(s): https://piped.video/tc4ROCJYbm0?si=3l48F_Ci9FYDkNEi

Piped is a privacy-respecting open-source alternative frontend to YouTube.

I'm open-source, check me out at GitHub.

[-] NegativeLookBehind@kbin.social 4 points 10 months ago

Keyboard shortcuts, for example, CTRL a to move to the beginning of the line, or CTRL e to move to the end. These are extremely important for moving around quickly and getting things done faster, and knowing just a few basic ones make huge improvements to productivity.

https://ss64.com/bash/syntax-keyboard.html

[-] slampisko@czech-lemmy.eu 1 points 10 months ago

I was gonna suggest Ctrl+r as the most important bash shortcut, and also Alt+b/Alt+f and Ctrl+w.

Also, I would teach them the basics of viewing text files in less, with a seamless transition into editing in vim.

[-] tla@sopuli.xyz 4 points 10 months ago

+1 for the FOSS philosophy and why that's important when it comes to privacy (ie closed source crypto implementation back doors etc) + full system control, lack of spyware etc. KVM for the VM demo - keep it Linux, right? Introduce the concept of how almost everything in Linux is a file and can be read from / written to. This is important when understanding pipes. Show pipelines - logical && ie cat x | grep y | grep z. Logical || ie grep -E 'x|y|z' Useful commands like top and ps. Explain selinux and why it's a good idea.

[-] eruchitanda@lemmy.world 4 points 10 months ago

I'm not sure it's the 'right' topic to learn, but I'd want to learn about some of the terms. At least why there are so much 'Linuxes', and what is a distro. It doesn't have to be a full day, but some background is important, IMO.

[-] clif@lemmy.world 1 points 10 months ago

Great point. I think I have a "flavors" note in my margins somewhere but I'll ensure it makes it into the introduction.

[-] finickydesert@lemmy.ml 3 points 10 months ago

Why not align the course with a LPI cert?

[-] Swiggles@lemmy.blahaj.zone 3 points 10 months ago

I would put shell scripting basics higher up on the list as part of the introduction to cli, because that's one of the major benefits over using a gui.

Otherwise it looks really good, maybe sprinkle some vi(m) in there, because it is the defacto default editor outside of Ubuntu and few others.

Also maybe focus more on iptools2 over the legacy commands like ifconfig, netstat etc as they are not available everywhere anymore (use ip or ss instead). It is still very useful to know both though.

Finally you should pay close attention to anti patterns like "sudo su", "ps aux | grep ...", "cat ... | grep ..." etc and make sure to teach proper usage of the tools. I have seen it way too often done wrong in beginner guides.

[-] mub@lemmy.ml 3 points 10 months ago

Yey! I know all of these.

[-] Gebruikersnaam@lemmy.ml 3 points 10 months ago* (last edited 10 months ago)

Depending on your audience (don't overestimate your audience!) you might also want to have a look at the material from The Carpentries. The participatory live coding style works really nicely in workshops for minimally technical beginners. Also don't make the assignments too hard, or give multiple difficulty levels.

[-] ChunkMcHorkle@lemmy.world 3 points 10 months ago

How to access a system overview (installed hardware, memory, drivers, etc.) It doesn't have to be super detailed or interactive; I'm thinking of the System Information report available on Macs.

[-] timkenhan@sopuli.xyz 3 points 10 months ago

I happened to have put together a class curriculum for something quite similar when I was doing volunteering work at FreeGeek. This was a few years ago, but it should still be good.

https://gitlab.com/Free_Geek_PDX/command-line-guidance

[-] floppingfish@kbin.social 2 points 10 months ago

Before you talk CLI, I'd talk about; customizing the machine, connecting to networks, installing programs, backing up and other regular tasks.

[-] valentino@lemmy.ml 2 points 10 months ago

Lmao in university we had a Linux Kernel/OS - system calls class (4 months). You want to cover all of that in just 20hrs?

[-] gronjo45@lemm.ee 1 points 9 months ago

Personally, I'd enjoy if the class had an aside about how the display graphics are used to render graphics in something like Groff vs. a desktop environment like GNOME or KDE.

Also, emphasize that your students could choose vim/neovim or emacs to edit text rather than nano.

[-] MajorHavoc@lemmy.world 1 points 10 months ago
[-] immibis@social.immibis.com 1 points 10 months ago

@clif @linux I think your plan is way too technical if your goal is to teach non-technical people to use Linux. For grandma it's pretty much the same as Windows - click on "Internet" to open the googles. What is your target audience and what are they trying to get from the course?

[-] MNByChoice@midwest.social 1 points 10 months ago

Looks great. Suggestions, but I only slimmed your list and did not internalize.

  • I installed a thing. How do I run it? (And other fun topics.)
  • How do I find a program that does X? (Grepping man pages or a internet search engine.)
  • fifty ways to do a thing. (To emphasize how everyone does things differently. Most are fine, some are wrong, a few are horrifying.)
[-] secret301@sh.itjust.works 1 points 10 months ago

Can I take it?

[-] danielfgom@lemmy.world 1 points 10 months ago

Always start with GNU Project, Freedom in computing and Richard Stallman.

The Freedom of the User in Linux is absolutely number 1 in Abu discussion of Linux. This is the core and essence of Linux. Nothing is more important.

Then explain who Linus is and what the kernel is any why it's known as GNU/Linux.

Most people never consider or are aware of the concept of user freedom so learning this is paramount.

The rest of the course looks ok, but seems like a lot of terminal stuff. If your audience are IT Pros that's ok but if ordinary users, is way too much.

this post was submitted on 01 Jan 0001
0 points (NaN% liked)

0 readers
0 users here now

founded a long while ago