
Explore what Unix is as an operating system, its history and components, and how Unix and Unix-like systems, including Linux, modernize development with pipes and a hierarchical file system.
Increase your pace by using the Tammy interface to play lessons at 2x speed, then deepen understanding through Q&A, ongoing practice, and Unix resources like man pages and online help.
Prepare a computer with a modern OS; this course uses Ubuntu Linux as the base, mentions Docker or VirtualBox, and shows Windows users how to install Ubuntu via WSL.
Install linux on Windows with the Windows Subsystem for Linux and Ubuntu to run a fast Unix environment. Set up, login, and use basic Unix commands from PowerShell or WSL.
Launch the macOS Unix terminal via Spotlight, Finder, or shortcuts, then open multiple windows and tabs with keyboard commands while customizing profiles.
Open the terminal from the linux gui applications menu, then use shortcuts like ctrl+shift+t for a new tab, ctrl+shift+plus to enlarge text, and ctrl+shift+w to close.
Learn how to install and run Linux on a Mac using a free virtual machine with UTM, focusing on Ubuntu server setup and command-line administration.
Master the shell as a text-based Unix command line, compare it to graphical interfaces, and learn core commands like cd, ls, and basic editors such as vi.
Explore how unix file systems organize files and programs with root, home, bin, lib, usr, and var, and learn to navigate using cd, pwd, and ls.
Explore essential Unix navigation using ls with -l and -a switches, understand hidden files, current and parent directories, and basic cd shortcuts for moving through paths.
Master copying files and directories with the cp command, including creating copies in the same or parent directory, renaming copies, and using cp -R for recursive directory copies.
Learn to create directories with mkdir and the -p option to build intermediate folders, then copy files into the new structure and navigate the filesystem with cd, pwd, and ls.
Master deleting files and directories in Unix by using the rem command with -r for directories and -f to force removal, while noting that Unix has no undo.
Move files with the mv command to rename or relocate them across directories, noting that mv is essentially a rename and demonstrating paths from home to documents.
Explore how Unix file permissions govern access for the owner, a group, and others, with examples of read, write, and execute on files and directories.
Learn how to manage file permissions in Unix using chmod, adjusting owner, group, and others with add, remove, and set operations, including recursive changes and octal patterns.
Learn how to use Unix file globs to match file names with patterns, including *, ?, braces, pipes, and brackets, and apply them with common commands like ls.
Learn how to create symbolic links in unix with ln -s to make scripts accessible from system paths, understand executable permissions, and distinguish symbolic from hard links.
Explore built-in unix online help with the man command, navigate man pages to learn commands and options, search for terms, and quit with q for quick reference.
Learn to locate Unix commands with apropos and the man pages, which are organized into sections one through nine, and refine searches by keywords.
Explore quick command lookups with whatis, whereis, and which, learn where a command and its man page reside, and understand path-based discovery.
Clear your screen using the Unix clear command; options exist but are rarely needed, and you can also press control L for a quick screen clear.
Learn the echo command to print text, using quotes, with -n to suppress newline and -E to disable escapes; use backslash escapes like \\n and \\t and append with >>.
learn how to use the cat command to print file contents to the screen, verify text without editors, and explore simple options like showing ends and numbering lines.
Learn to paginate terminal output with the more and less commands, especially using less for paging, navigation, and searching via /, with pipe input, spacebar, return, and quit q.
Learn to get the current date and time on a UNIX system using the date command, view UTC with date -u, and recognize time differences across servers you don't own.
Use the df command to view mounted disks and disk usage on a UNIX system, including the root filesystem, and use df -h for human readable space.
Learn to use the du command to check how much space a directory and its subdirectories use, with -h for human readable, -a for all files, and -c for total.
Explore how UNIX shells provide a command interface to the operating system, including Bash, Z shell, and C shell, their interpretive scripts, and how to choose a default shell.
Learn unix shell shortcuts to recall command history with up/down arrows, edit lines with ctrl-a/ctrl-e, and jump by words using alt or escape keys, plus ctrl-c, ctrl-l, ctrl-u, and ctrl-w.
Explore environment variables in the shell: create and reference variables with $ and echo, compare quoted versus unquoted output, and use set with less for viewing and slash-based search.
Learn how to create variables in bash, export them to become environment variables across shells, and manage their scope using export and built-in help.
Learn how PATH directs the shell to search directories for commands. See how to add folders to PATH, the impact of order, and why persistence across sessions matters.
Set permanent environment variables, including path, by editing startup files such as bashrc and zshrc, then source them to persist across logins and new shells.
Explore how the shell executes commands by distinguishing built-in commands from file system commands, and how the path variable guides lookup, with examples like cd, alias, and tar.
Learn to control running programs in Unix by pausing with Ctrl-Z, resuming with fg, and managing foreground and background jobs via fg, jobs, and the ampersand.
learn how to find a process by its process ID and use the kill -9 signal to forcefully terminate it, using ps to list processes and distinguishing job IDs.
Mastering redirection and piping in Unix, sending command output to standard output or file by appending, reading from standard input, then chaining commands via pipes to filter and format results.
Explore redirecting standard error and standard output in Unix, using find to search files, demonstrating file descriptors 0, 1, and 2, and sending output to files or /dev/null.
Learn to redirect input and output in Unix using cat, including less-than input redirection, here documents, and end-of-file markers, with practical shell scripting examples.
Master the essentials of vi and vim on Unix systems, focusing on command mode, insert mode, and core navigation. Learn search, substitution, undo, and simple save and exit workflows.
Discover pico and nano as unix editors; pico is a simple editor on mac os, while linux uses a symlink from pico to nano, which adds features and color coding.
Explore the head and tail commands to preview the top or bottom of a file, identify csv header row, and control lines or bytes with -n and -c.
Learn how the wc command counts lines, words, and bytes in text files. See how piping with cat or head feeds input and yields the counts and max line length.
Explore how the sort command orders lines of text using pipes, sorts by fields with -t and -k, and applies -g for general numeric sort and -r for reverse.
Learn to search text with grep using patterns and regular expressions. Use case-insensitive matching with -i, quotes, and counting with wc to gauge results, and explore -P for perl regex.
Compare two text files with the diff command, generate and apply patch files, and see how diff underpins code repositories like Git and GitHub.
Learn to use the tr command to translate text, converting lowercase to uppercase, and apply character classes, complements, and options like se and dx to customize output.
discover how awk, part of essential unix skills for developers, processes csv and text files, splits fields, prints formatted output, and handles headers, field separators, and date normalization in one-liners.
Learn to compute a file-wide sum with AWK inside ORC as a one-liner, using begin and end blocks, a running total, and printf formatting for money from a CSV.
Explore sed, the stream editor, and master search and replace across text. Learn to apply global substitutions, ranges, and extended regex with practical examples alongside awk.
Learn how to compress large Unix files with gzip and bzip2, compare levels to balance speed and size, keep originals, decompress options, and on-the-fly viewing with zcat.
Learn how to archive a directory with tar, create and extract tar files, view contents, and optionally compress with gzip or bzip2, including excluding patterns.
Master zip on the unix command line to compress directories into a single archive, exclude directories like .git and jar files, and inspect or extract with unzip.
Learn to use xargs to apply commands to many files by piping inputs and using a replacement string, with examples renaming to .txt and batching via split and glob patterns.
Master the find command to locate files by name, size, permissions, and ownership, using glob patterns, extended regex, and exec or xargs for powerful actions.
Add new users on a Linux system, inspect /etc/passwd and /etc/shadow for user records, and use sudo and su to manage privileges.
Determine your Linux version using the lsb_release command, which prints distribution information such as the distribution name, description, release, and code name (for example Ubuntu 20.04 focal).
Learn to view Linux and Unix system logs with dmesg and pipe to less, inspect boot-time messages, identify kernel versions, and use uname -a to reveal OS and kernel details.
Learn to install software on Debian/Ubuntu with apt, configure sudo and root access, install Git and OpenJDK, clone a project, build with Gradle, and run a Java web app.
Learn to use apt on Debian/Ubuntu to search, install, upgrade, and remove packages, update package lists, and manage installed software with real-world examples.
Learn to set up macOS development with homebrew, install openjdk 17, and clone a project using git. Install GUI apps like IntelliJ and Chrome, and manage your path.
Learn to use the ps command to inspect running processes, identify their process IDs, and kill them, including viewing full commands and process hierarchies.
Learn how the top command on unix systems reveals memory and cpu utilization, load averages, and a sortable process list, with shortcuts to customize columns and kill misbehaving processes.
Learn to diagnose file and port locks on unix using lsof and fuser to locate a process and free a locked database file or port 8080.
Explore networking fundamentals for unix systems, from how routers and DNS translate domain names to IP addresses, to testing services on port 8080 via loopback and local host.
Learn how to identify the IP addresses bound to a Unix computer, inspect network interfaces with netstat and ifconfig, and verify connectivity using ping and traceroute.
Use the dig command for DNS lookups that translate domain names to IP addresses via A records, with reverse lookups, and explore CNAME and MX records.
Learn how ssh secures remote Unix access with encryption, transfers files, and authenticates using public/private keys, host key verification, and known_hosts management.
Master passwordless ssh authentication by generating a public/private key pair, installing the public key on the remote host (via ssh-copy-id or manual methods), and configuring authorized_keys.
Master secure file transfer with scp and tar over ssh, copying files between macOS and Linux, controlling destinations, and piping archives over the network for efficient remote backup.
Learn to test RESTful web services using curl, retrieve JSON data, and format it with jq; post, read, and delete records via v1/people endpoints.
Install a Spring Boot executable jar as a Linux service using systemctl, run as an unprivileged user, configure storage folder via environment, and monitor logs with tail -f.
Containerize the People DB web application with Docker by building a Docker image from a Dockerfile, running a container, mapping ports, and mounting a host directory for persistence.
Recognize the power of Unix, gain foundational knowledge for typical development tasks, and plan further exploration via man pages and self-study.
What do C, Go, Python, Perl, Java, Node.js, Git, SSH, Docker, Kubernetes, MySQL, SQLite, iOS, MacOS, Android and SO many more programming languages, tools & platforms have in common? They were all developed on Unix-related operating systems like Linux, MacOS (yes, MacOS IS Unix too), FreeBSD & many others. That means these tools are 1st-class citizens in Unix. Virtually every modern developer will interact with some aspect of Unix in their career whether they're using Git and GitHub or deploying their web applications and services to The Cloud, Unix is nearly inescapable.
In this course, we'll teach you the basics of this amazing and powerful operating system so that you can get the most out of it and feel comfortable working with it to get useful work done. There's a reason Unix is so ubiquitous, and by the end of this course, you'll know exactly why.
What's so special about Unix? It's an operating system that was designed by programmers for programmers. It's basically a giant open development platform. Unix doesn't try to hide its programming tools away from the casual user. Those tools are all up front and center, making it easy and pleasurable to develop sophisticated software and test it out on the platform. That's why so many of the world's most popular languages and development tools have been developed on Unix over the decades.
Do you have to learn Unix to be a developer? No, of course not. But many developers are forced to interact with Unix-related technologies every day without realizing that's what they're doing. As a result, they stumble their way through cryptic-seeming commands and invocations without understanding the underlying technology and the systems and theories on which they are based. If one understands where these commands and techniques are coming from, they become much easier to master and they are much less intimidating. It is at this point that one can truly unleash the power of the tools.
Let us help you to unleash that power for yourself to take your skillset to the next level.