variables, input and output, processes, networking, text processing, files and directories, managing processes
The shell is a tool that’ll make your programming life much easier and more efficient.
Check out Brian Hogan’s electronic book, Small, Sharp Software Tools. It’s a great resource if you’re new to the shell or want to brush up on core shell commands and content. Focus on chapter 1 and chapters 3 through 8. There are exercises at the end of each chapter.
Reference chapter 2 in Hogan’s book to learn how to install VirtualBox, a free, open-source application, to create a virtual machine. Multipass is an alternative to consider. I recommend using a virtual machine, so you can practice commands without worrying that you’re going to do something to your computer.
"If you hear a voice within you say 'you cannot paint,' then by all means paint, and that voice will be silenced."
-Vincent Van Gogh
Another resource to consider is MIT’s free course, The Missing Semester of Your CS Education. There are several lectures that’ll help you level up with the shell:
Click on one of the links above and you’ll find a video lecture and detailed written notes, with exercises at the end.
There’s also Command Challenge, which is a fun and interactive way to drill the commands you’re learning.
Depending on your experience level, there are two different ways to use the above resources:
No matter your level, identify ways to drill and re-drill commands. That way, you’ll remember what you’re learning. Here are two ideas. First, create an Anki flashcard deck. Write cards that prompt you to run a command. Here are some examples:
Then, switch to your terminal and run the command.
Another idea is to make a cheat sheet of commands, and put the cheat sheet in a noticeable spot so you see it and use it. Print it out and hang it on your wall by your monitor, for example. That way, you’re constantly reminded to use them. Only learn a few commands at a time. Once you’ve nailed five, add another five.
Brian Hogan’s book, Small, Sharp Software Tools, and MIT’s course The Missing Semester of Your CS Education are useful for both their exercises and content. So if you get stuck or have a particular question, focus on a particular chapter or lecture to get yourself unstuck. You may also find Mastering the Shell by thoughtbot helpful. It’s short and to the point, but covers some of the core shell topics you ought to know.