Live data from Hacker News

Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

news.ycombinator.com

81–90 of 114 posts

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#81
I agree to use it on the desktop.

Next, get a book on bash or other shell. You’ll learn the most important parts quickly. Then do the same for Python.

If you make it that far, read the art of Unix programming to approach greybeard status.

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#83

I disagree with lots of advice here. My strategy to solidify my linux skills was simple: commit to linux desktop. We spend most of our time on our desktop, may as well let that time earn you skill points. I picked ubuntu and use the same on servers. You naturally learn a bit every day through daily use. This really adds up over time without extra effort of using a side system. Getting good at windows or osx is a wast…

That's how I learned as well. I started using Ubuntu Linux on my laptop and was forced to use the command line to install programs.

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#84
Raspberry Pi and free trials to O'Reilly Online (which I currently now subscribe and don't need credit card to sign up for). They've been giving 50% off Black Friday Special, so keep eye out for that.

Here are some of my favorite books:

https://learning.oreilly.com/library/view/ubuntu-server-cook... - really good one for learning real uses of linux

https://learning.oreilly.com/library/view/raspberry-pi-cookb...

https://learning.oreilly.com/library/view/raspberry-pi-netwo...

https://learning.oreilly.com/library/view/exploring-raspberr...

https://learning.oreilly.com/library/view/raspberry-pi-hacks...

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#85
post #39

Earlier quoted context omitted.

Counterpoint: I’ve been a Linux sysadmin and developer for close to 10 years at this point and I’ve never used Linux as a desktop. I’ve only used MacBooks. The skills you need to run Linux on the laptop aren’t particularly close to what you’d need to run Linux as a server, IMO, particularly Linux as a VM.

I remember I used Ubuntu Desktop in 2008 for a year or two. But Ubuntu is point and click and anyone can use it. I did not learn much about Linux using it. I felt that I really started understanding how things work when I switched to something requiring more reading - Archlinux. To get a running desktop it not only required doing all kinds of things I did not understand back then, it also provided great Wiki to get t…

Exactly the same experience can be had by installing Ubuntu server as your base and going from there.

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#86

Earlier quoted context omitted.

I agree you need to use it daily but disagree that an Ubuntu desktop provides any real insight. Here's some BASIC questions an ubuntu user might never encounter: Which processes are currently hogging the CPU? Which ports are currently open? How do you setup a remote git repo and/or add a user for limited ssh? How do you increase an existing swap part without locking the CPU during write at peak loads? How do you excl…

I do not think my beginner advice would include "find someone who will pay you to do the thing you can't yet do"

I disagree. That's the way all business works. In the beginning.

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#87
My approach to teaching Linux and programming leans heavily on using existing resources and ensuring students get a wide base of knowledge before beginning the "exploratory" stage of learning.

Start with installing a distro of your choice in a virtualization tool, I always recommend Ubuntu on VMWarePlayer because it was what I started with. Distro/Virtualization Software doesn't matter, what matters is that you use it.

Then I have students work through Linux Journey [1] one module at a time, while being available to answer questions as they go.

Once a student has finished the LJ modules I have them play the Bandit Over the Wire [2] game up to challenge 15.

After that I usually teach Hardware and Operating Systems, but if you are just looking for general ability to do things, skip to the CyberAces Linux modules. [3]

Once you have finished those, do the CyberAces Bash Scripting module and the CodeAcademy Python [4] course and you'll have enough scripting ability to be dangerous.

From there, just keep using Linux as your daily driver and you will continue to improve, especially if you take on programming projects.

All of this can be done by yourself, but I teach a free online course on Computing Fundamentals and Security if you are interested in it being more of a guided experience. [5]

[1] https://linuxjourney.com/ [2] http://overthewire.org/wargames/bandit/ [3] https://tutorials.cyberaces.org/tutorials.html [4] https://www.codecademy.com/learn/learn-python [5] https://www.hoppersroppers.org/course.html

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#89
My pointers:

1) Do all day to day tasks with the CLI. It will force you to challenge yourself.

2) Learn line editing with GNU Readline. What is this? E.g., when you have a bash shell open and you hit Alt+B, your cursor moves back a word. This will make your time in the shell a lot more pleasant. Similarly, the basics of VIM, which will make text editing a lot more pleasant. Less friction means everything comes quicker, and you get tighter learning iteration loops. Don't go overboard on this: it's mostly about navigating around and editing text, not installing plugins or anything beyond an hour or two of study.

3) Don't waste time purposefully memorizing userland tools. You'll forget them in a week, and most of the time they're pointless clutter in your head. There is zero value in memorizing all the options for `tar`. Memory will come naturally with use.

4) Do not waste time building the perfect set of dot files (e.g. `.bashrc`, `.vimrc`). Know where they are, but futzing with them should be 5) Do not waste time building a Linux desktop, configuring a window manager, etc. Linux is, first and foremost, an operating system for servers, and the skills needed to get a polished Linux desktop user experience are entirely separate from (and usually dependent on) the skills needed to get a solid Linux server environment up and running.

6) Man pages are your friend. Before Googling how to do `something`, try `man something`. If you don't even know the man page you're looking for, try `man -k something`. If it's totally new, read the whole man page. If you're just looking for an obscure `tar` option, just skip to that section.

7) Cert book for RHCSA. Honestly pretty much every non-junior developer should have the skill level of a RHCSA. It teaches you how an entire system fits together. Note you don't have to pony up some obscene fee to RedHat to actually take the test and get the cert (though, as far as certs go, it's one of the better ones); the point is the content. And actually do all the labs/exercises in whatever book you get.

8) Advanced Programming in the Unix Environment (APUE). This is less critical and only relevant once you are vaguely at the RHCSA level (and know how to program), but it can give lots of valuable knowledge about the programming system interface.

Re: Ask HN: How can a intermediate-beginner learn Unix/Linux and programming?

#90
Hm, in my case, I followed a very boring/the right way of doing things, For example : try getting the book "the Linux programming interface" it s very handy and explains pretty much everything u de want to know about anything in a Linux operation system, it lists and explains the POSIX interface made for you to use in you C code , with example, which surprisingly, u get to find similar interfaces/system calls/library functions that you can use in python to do the same thing.

For regular expressions, watching a small video which explains how they work is definitely more productive, but if you could find some time to spare , try checking how compilers are made, / what constitutes a language (language theory), and automata, it definitely has some math in it , but it s worth it, it gives you an extra mental image , which helps you get a better understanding of where you stand and what you can do. Since apparently regex is also a language, which helps you describe chunks of an other languages and it also has some limitations to be aware of.

Post reply on HN