CSCE 215: Unix/Linux FUndamentals

Course Summary:

This course introduces the fundamentals of UNIX/Linux with emphasis on using the command-line interface and shell. The topics covered in the course are:

  • Navigating the File System using the Shell

  • The VIM Text Editor

  • Command Line Arguments and Options

  • STDIO Redirection and Pipes

  • Wildcards and Regular Expressions

  • Shell Scripting and Makefiles

  • Permissions, Processes, and Jobs

Lecture 00

Introduction and History

In this lecture, we discuss the course's structure and some historical and background information about computing, operating systems, and UNIX/Linux.

Lecture 01

Navigation and Fundamental Commands

This lecture teaches students the fundamental shell commands found in most UNIX/Linux systems including cd, ls, mv, rm, etc. We also briefly cover the file system hierarchy.


Lecture 02

The VIM Text Editor

In this lecture, we cover the basics of the VIM command line-based text editor. We discuss how to open files in VIM, edit them, and then subsequently save and quit them.

Lecture 03

Command Line Options/Arguments

This lecture focuses on expanding the functionality of the base navigational and fundamental commands learned in previous lectures including how to use options that enable verbose output, etc.

Lecture 04

STDIO Redirection and Pipes

This lecture introduces the concept of STDIO redirection and piping. This lecture covers what STDOUT, STDERR, and STDIN are and how to redirect them using operators such as >, >>, <, <<, and the pipe |.

Lecture 05

Regular Expressions

In this lecture, we briefly go over the SSH and SCP commands. We then go over several important symbols in constructing regular expressions and give some examples of regular expressions and how they are useful in application.

Lecture 06

Searching: grep, sed, find

In this lecture, we discuss how to search for patterns using regular expressions in the grep, sed, and find commands. We show how grep can be used for searching through the text inside of files and how sed can search and replace inside of files. Finally, we show how find can be used to locate files and directories inside of the filesystem.


Lecture 07

Permissions, Scripts, and Makefiles

This lecture presents the idea of permissions with respect to the chmod command. We first briefly introduce binary to decimal conversion and then we use this conversion in changing file/directory permissions. We then briefly discuss scripting ideas such as creating variables, functions, and accessing input arguments inside of scripts. Finally, a brief introduction to creating Makefiles is presented.

Lecture 08

Parallelism, Processes, and Jobs

This lecture presents the idea of processes and jobs in the Linux shell. We first discuss the concepts of sequential/serial, concurrent, and parallel computing. We then discuss the different architectures used in computing i.e. CPUs and GPUs and their advantages/disadvantages. Finally, we conclude the lecture with a quick introduction to C++ programming and compilation.

Lecture 09

Git Version Control and Collaboration

In this lecture, we discuss and demonstrate how to use the Git version control software in the UNIX/Linux command line as well as give a quick demo on how to use Git-integrated websites like GitHub for collaboration on coding projects.

Lecture 10

Review

This lecture reviews the topics covered throughout the course. We specifically focus on Makefiles and scripting as these two concepts combines topics throughout the course.