Section I, Part 1 -- Monday, July 20, 2020, 2:00 pm - 4:00 pm, Zoom
Section I, Part 2 -- Tuesday, July 21, 2020, 2:00 pm - 4:00 pm, Zoom
Section I, Part 3 -- Wednesday, July 22, 2020, 2:00 pm - 4:00 pm, Zoom
This workshop introduces participants to the Linux filesystem and the Linux command line, specifically the bash shell. While the emphasis is on Linux, much of the workshop material translates to macOS or other Unix systems (exceptions will be noted).
There are two sections offered; each section meets three times (two hours per meeting, six hours total). Participants should register for just one of the two sections and commit to attending all three meetings for that section. Each session will have interactive Q&A along with solo *and* group exercises at a comfortable pace. There will also be light reading and “homework” between sessions. IF YOU INTEND JUST TO LISTEN PASSIVELY, PLEASE DO NOT REGISTER! This material is best learned by doing, and since registration is limited, you will be taking an active-learning spot from someone else.
Workshop format: Interactive Zoom presentation (Zoom link provided 1-3 days beforehand), with hands-on exercises.
Knowledge prerequisites: Registrants will be sent some brief background reading (~30 minutes) to complete *before* the workshop.
Hardware/software prerequisites: Participants in any PICSciE virtual workshop need a Princeton Zoom account. For this workshop, users must also have an account on our Adroit cluster, and they should confirm that they can SSH into Adroit *at least 48 hours beforehand*. Details on all of the above can be found in this guide. Those who need extra help setting up should visit one of our dedicated “setup sessions” in advance. THERE WILL BE LITTLE TO NO TROUBLESHOOTING DURING THE WORKSHOP!
Target audience: This workshop is suitable both for people with no prior knowledge of computer programming or of Linux/Unix and for participants with prior exposure who have been “going through the motions” and would like a better understanding of what they’re doing. People with extensive experience will likely find the workshop too elementary, though even this group may still find worthwhile nuggets of new information.
Learning objectives: Attendees will gain firsthand experience in navigating and interacting with the Linux filesystem, typing efficiently in the bash shell, linking simple commands together into powerful file-processing pipelines, connecting to remote systems via SSH, and customizing their environments to make all of the above more streamlined. Since knowledge doesn’t always “stick” after a brief exposure, the workshop aims to (i) expose people to this material firsthand, (ii) provide resources for further learning and self-study, and (iii) arm participants with enough conceptual understanding of how Linux works “under the hood” to make sense of those resources.
Workshop Summary: The bash shell is at once (i) a text interface for running programs and working with the Linux filesystem, (ii) a text editing environment with features to streamline typing and other work, and (iii) a programming language with its own syntax. This workshop shows how to leverage all these facets of the shell synergistically to become more productive with computing-related tasks.
Topics covered include, but are not limited to, the following:
- Part 1 -- Overview of the Linux filesystem and its philosophy; the “anatomy” of commands; basics of bash shell syntax and keyboard shortcuts; the built-in help system (man pages); commands to navigate and work with files and folders (e.g. cd, ls, mkdir, cp, mv, and so forth); basic text editing
- Part 2 -- fetching files from the web without a browser (wget and curl); working with file archives (“tarballs”) and compressed files; common Linux file-processing utilities (e.g. cat, wc, sort, uniq, head, tail, tr, cut, and so forth); file streams, redirection, and pipes
- Part 3 -- Linux file permissions; symbolic and hard links; customizing your shell environment (aliases, environment variables, startup files); basic elements of a shell script; using SSH “like a pro”