
Install virtual box as the hypervisor by downloading from virtualbox.org and running the Windows executable. Proceed with Ubuntu or Rocky Linux installations.
Set up Ubuntu on a VirtualBox by downloading the LTS version and creating a 64-bit VM with 16 GB RAM and a 120 GB dynamic disk, then install Guest Editions.
Learn to render an Ubuntu virtual machine in full screen by pressing the right control key and f, then exit with control f.
Set up Rocky Linux 8 on VirtualBox, download the x 8664 dvd iso, configure memory and dynamically allocated storage, install the VirtualBox guest additions, and update packages with dnf.
Traverse directories with the cd command, switching between absolute and relative paths, and use dot and double dot navigation plus tab completion to reach downloads, documents, and pictures.
Learn to list files and directories with the ls command, explore color-coded outputs, and reveal hidden files using flags like -a, -l, and -F while understanding basic file metadata.
Learn how to filter listing output using file globbing with wildcards such as asterisk, question mark, brackets, ranges, and negation to isolate matching files.
Learn to manage files with cp to copy files and directories, use dot-dot for parent directories, copy with cp -r, rename with mv, and delete with rm -i.
Learn how Linux links let you reference a file in multiple locations using symbolic and hard links. Compare inodes and sizes to understand their differences and create links with ln.
Master creating directories with mkdir, including nested directories using the -p option to create missing parent directories, and deleting directories with rmdir and rm -R.
Identify file types with the file command, view text with cat, more, and less, and monitor real-time updates using tail -f and tac, plus basic vi editing.
Use the find command to locate files in the current directory, pipe results to less, and compare with locate, a fast, database-backed utility.
Master grep to locate, count, and extract matches in text files, including inverted searches, line numbers, multiple patterns, and directory-wide scans.
Learn to use the sort utility to order words alphabetically, sort numbers by numeric value, and sort months by name with the -M parameter, through practical file examples.
Learn how the ps command reveals running processes with details like pid, ppid, uid, cpu time, and command, and how flags -l and -f expand output for system monitoring.
Learn to use top for real-time process monitoring, interpret CPU, memory, and swap usage, identify and kill rogue processes, and understand system resource monitoring.
Use the df command to monitor disk space and view the root partition /dev/sda3. Use du with sort to rank directory usage and note log files as common space culprits.
Mount Linux removable media with the mount command, using device files, mount points, and file systems like vfat, ntfs, HDFS, ISO 9660, with options ro, rw, user, and check=none.
Master compressing and archiving in bash using gzip, zip, and tar. Gzip compresses files only; zip can archive directories, while tar creates and extracts archives, demonstrating substantial compression.
Learn to set up SSH key authentication by creating a hidden .ssh directory, generating an RSA key pair, and deploying the public key to enable passwordless login.
Explore iptables, a command line interface to the net filter packet filtering system. Understand tables, chains, and targets, including filter, mangle, raw, and NAT, to control traffic.
Learn to use ufw, the uncomplicated firewall, to install, set default deny incoming and allow outgoing, and open ssh or specific ports. Monitor and enable at boot with systemctl.
Learn to use pushd and popd to navigate directories efficiently by pushing and popping the stack, and employ history expansion with exclamation points to quickly rerun past commands.
The bash shell uses environment variables to store session and environment data, with global and local scopes; view with printenv or echo, reference as $HOME, and inspect with set.
Learn how to define and echo user variables in bash, and distinguish local versus global environment variables. Export, unset, and verify persistence across child shells, and note path environment variable.
Explore how the PATH environment variable, a global colon-delimited search path for commands, works and how to append an absolute scripts directory, with changes lasting only until exit or reboot.
Modify and persist system environment variables using startup files and dot files; learn which bash startup files run at login and how to set global or local variables.
Explore bash arrays, including variable arrays, zero-based indexing, and accessing elements by index or the asterisk to print all values, and modify a specific element.
Learn how Linux manages users with unique UIDs and GIDs, system accounts, and shadow password security, and use commands to add, delete, and modify user accounts.
Learn how groups share permissions and manage multiple users, view group names, ids, and members in /etc/group, and create, add, and rename groups using groupadd, usermod, and groupmod.
Decode and manage Unix file permissions by interpreting ls -l output, understanding owner, group, and other rights, and using umask to set default permissions.
Apply octal permission codes to set file and directory access, use chmod to adjust permissions, and change owner and group to control access and executable bits, as shown with 760.
Learn to share files on Linux by using group permissions, setuid, setgid, and the sticky bit so new files inherit the directory group and use umask 002 with 664 permissions.
Create your first Bash script using gedit or vim. Learn the shebang line and executable permissions, then run it from the path.
Define and use environment and user variables inside a shell script, access them with dollar signs, and assign command output (like date) to variables for logging and formatting.
Master redirection in bash by sending command output to files with > and appending with >>, and feed file content into commands using < and here-docs with <<.
Master piping to pass output between commands in real time with no intermediate files. Sort and reverse the list of installed packages and redirect to packages.txt for history.
Learn to assign and print integers in bash using variables and dollar sign notation, then enable floating point arithmetic with bc and scale.
Master bash structured commands with if-then, else, and elif, using the fi terminator; learn conditional execution where commands run only on success and how to handle failures.
Learn how bash conditionals compare integers and strings, test file existence and readability, writability, and executability, and apply compound and/or tests with proper spacing.
Learn how loops, including for and while, iterate over a list of items to repeat commands until a condition is met, with examples using echo and sleep.
Explore advanced loop techniques in bash by parsing data with the IFS variable, using nested for loops to read lines and values, and listing executable files along the path.
Learn how to pass data to shell scripts with command line parameters, using $1 and $2 to multiply values. Note that $0 is the script name.
Validate command line parameters by checking that at least one parameter is provided and by counting parameters with Bash. Echo inputs, handle missing parameters, and note future regex-based validation.
Process command line options with the case construct and shift, treating them like parameters. See how A, B, and C trigger actions and how the catch-all handles invalid inputs.
Explore using the Bash read command to capture user input, including single and multiple variables, timeouts, silent input for passwords, and reading from files, with validation for production environment.
Learn how to declare shell functions using the function keyword or name(), call them, and capture their output into variables, including handling user input for simple multiplication.
The bash shell treats functions as mini scripts, enabling parameter passing and conditional logic to add numbers or return minus one for invalid input, with clear global and local scope.
Create and reuse shell functions by building a library file, sourcing it into scripts, and using the dot alias for scope, enabling consistent multi-script calculations with a simple example.
Welcome to The Complete Bash/Shell Developer Course!
This is a no-fluff, hands on course that takes from the complete beginner (setting up a virtual machine, Bash terminal basics) to a confident Bash/Shell developer who can solve any problem in Linux using Bash.
Get going in 2024 and master a skill that will help you work smarter, not harder!
Bash is the perfect way to automate software development tasks such as code compilation, debugging source code, change management and software testing.
Work more efficiently and stop wasting time on repetitive tasks.
By the end of The Complete Bash/Shell Developer Course you'll know how to:
View and understand process running on the OS
Search for files and text within files
Manage user, groups and file permissions
Write Shell scripts to schedule and automate tasks
Set up common software stacks with Bash
Create production-ready scripts
...And a lot more too!
Bash is the CLI shell in Mac and Linux (and can also be installed on Windows if wanted). This course is aimed at beginners and teaches students everything they need to dive in to Bash/Shell development.
This course is eligible for the Codestars Certificate Authority (CCA) certificate. Students can take the official exam via codestarscom, and those who pass the quiz will receive their CCA certificate. (more details in the course!)
Plus If you ever get stuck on a lecture of have a course-related question... just post in the course Q&A forum! What are you waiting for?! Get busy learning Bash/Shell today... happy coding!