Unix, Git, and tooling basics for students taking digital design and verification courses. This project provides a complete educational path from shell fundamentals through Git collaboration and end-to-end project workflow. Each module has CHECKLIST.md (exercise checklist), EXAMPLES.md (index of hands-on examples with "Try these"), and README.md (quick start). Each module doc in docs/ includes topics, exercises, assessment, and a Command Reference (Detailed) with descriptions of every command: what it does, how it works, common options, and usage examples.
- Overview
- Features
- Prerequisites
- Quick Start
- Project Structure
- Documentation
- Modules
- Usage
- Contributing
- License
- Support
This project is a complete educational resource for learning Unix and Git in the context of digital design and verification. It provides:
- 8 Progressive Modules: From Linux & shell basics to end-to-end project workflow
- Comprehensive Examples: Working examples in each module directory
- Command Reference (Detailed): Per-command descriptions, syntax, options, and tips in every module doc
- Automated Scripts: Self-check, demo, and scaffold scripts for each module
- Full Documentation: Topics, exercises, assessment, and learning outcomes
- Course Alignment: Structure and workflows that match typical digital design courses
- Industry Standard: Shell and version control are essential for hardware and software teams
- Digital Design Workflow: Navigate RTL projects, run simulators, capture logs, and manage source with Git
- Reproducibility: Scripted builds, clear history, and clean submission habits
- Collaboration: Clone repos, work on branches, merge, and submit via GitHub
- Foundation: Prepares you for Verilog/SystemVerilog courses and tooling (e.g. iverilog, Verilator)
- Theory: Concepts (processes, redirection, staging area, branches, etc.)
- Practice: Hands-on commands and scripts with real examples
- Reference: Detailed command reference in each module for lookup and review
- Progressive: Builds from basic navigation to full project-and-Git workflow
- β 8 Modules: Complete path from shell basics to end-to-end workflow
- β Per-module layout: CHECKLIST.md (exercises), EXAMPLES.md (example index with "Try these"), README.md (quick start)
- β Command Reference (Detailed): Every command documented in each module doc (what/how/syntax/options/examples/tips)
- β Practical Examples: Navigation, files, permissions, pipes, scripts, archives, Git, submodules
- β
Scripts per Module:
--check,--demo,--scaffold(where applicable) - β Exercises & Assessment: Hands-on tasks and CHECKLIST.md for each module
- β GitHub-Oriented: Clone, commit, push, pull, branches, merge, PRs
- β Digital Design Context: Project layout (src/, tb/, build/), logs, and submission flow
- β Safe Practices: Quoting, .gitignore, restore, clean rebuild, pre-submission checks
- Basic Computer Use: Ability to open a terminal and type commands
- No Prior Unix Required: Course starts from navigation and files
- No Prior Git Required: Git basics are introduced in Module 6
- Operating System: Linux, macOS, or Windows (WSL2 recommended)
- Shell: Bash or compatible (zsh fine)
- Git: Git installed (
git --versionworks) for Modules 6β8 - Optional: GitHub account for remote examples and submission practice
git clone <repository-url>
cd learn_unix_gitchmod +x scripts/*.sh./scripts/module1.sh --check # self-check
./scripts/module1.sh --demo # print demo commands
./scripts/module1.sh --scaffold # create ~/unix_practice for exercisesBegin with Module 1: Linux & Shell Basics and follow the modules sequentially. Each module doc has a Command Reference (Detailed) section for command lookup.
learn_unix_git/
βββ docs/ # Module documentation (syllabus)
β βββ MODULE1.md # Linux & Shell Basics
β βββ MODULE2.md # Filesystem, Permissions & Environment
β βββ MODULE3.md # Processes, Pipes & Redirection
β βββ MODULE4.md # Shell Productivity & Basic Scripting
β βββ MODULE5.md # Editors, Projects & Archives
β βββ MODULE6.md # Git Basics for Course Work
β βββ MODULE7.md # Advanced Git for Collaboration & IP Reuse
β βββ MODULE8.md # End-to-End Project Workflow
β
βββ module1/ # Shell basics (navigation, files, viewing, help)
β βββ CHECKLIST.md # Exercise checklist (check off as you go)
β βββ EXAMPLES.md # Index of examples with "Try these"
β βββ README.md # Quick start and directory layout
β βββ examples/ # navigation, paths, file_operations, viewing, etc.
β βββ ...
βββ module2/ β¦ module8/ # Same layout: CHECKLIST.md, EXAMPLES.md, README.md, examples/
β
βββ scripts/ # Per-module scripts + Git helpers
β βββ module1.sh β¦ module8.sh # --check, --demo, --scaffold
β βββ git-submodule-init.sh # init/update submodules (after clone)
β βββ git-submodule-add.sh # add submodule (url [path])
β βββ git-submodule-status.sh # status of all submodules
β βββ git-clone-with-submodules.sh # clone + submodule update --init --recursive
β βββ README.md # script usage
β
βββ README.md # This file
The docs/ directory contains the syllabus and module guides. Each module doc includes:
- Topics Covered: What the module teaches
- Command Reference (Detailed): Per-command descriptions, syntax, options, examples, tips
- Learning Outcomes: What you should be able to do after the module
- Exercises: Hands-on tasks
- Assessment: Checklist for self or instructor
-
MODULE1.md: Linux & Shell Basics
- Navigation (pwd, ls, cd), paths, file operations (mkdir, cp, mv, rm), viewing (cat, less, head, tail), help (man, --help)
-
MODULE2.md: Filesystem, Permissions & Environment
- File types, ls -l, symbolic links (ln -s), permissions (chmod), ownership (chown), environment (PATH, echo, env, which, export), dotfiles
-
MODULE3.md: Processes, Pipes & Redirection
- Processes (ps, kill), jobs (&, jobs, fg, bg), redirection (>, >>, 2>, 2>&1), pipes (|), grep, tee
-
MODULE4.md: Shell Productivity & Basic Scripting
- History (history, shortcuts), aliases (alias, unalias), script basics (shebang, chmod +x), variables and arguments (
$1, $ @), control flow (if, for), safe scripting (set -e, quoting)
- History (history, shortcuts), aliases (alias, unalias), script basics (shebang, chmod +x), variables and arguments (
-
MODULE5.md: Editors, Projects & Archives
- Editors (nano, vim, code), project structure (src/, tb/, docs/, scripts/, build/), find, grep -R, tree, tar, zip, unzip, backup (date, timestamped archives)
-
MODULE6.md: Git Basics for Course Work
- Repository, working tree, staging area, commit; git init, clone, status, add, commit, log, diff; .gitignore; remotes (git remote, pull, push); safe undo (git restore)
-
MODULE7.md: Advanced Git for Collaboration & IP Reuse
- Branches (git branch, checkout, switch), merge (fast-forward, merge commit), conflict resolution, submodules (add, update --init), git blame, git bisect, PR workflow, git fetch
-
MODULE8.md: End-to-End Project Workflow
- Clone template, run scripts from root, redirect logs, inspect with tail/less/grep, iterative editβrunβcommit loop, branching, pre-submission checks (git status, git clean -fdx in a copy), push and verify on GitHub
Get comfortable with the terminal and basic file operations: pwd, ls, cd, mkdir, cp, mv, rm, cat, less, head, tail, man, --help.
Quick Start: ./scripts/module1.sh --check | --demo | --scaffold
Understand file types, permissions (chmod), ownership, PATH, environment variables, and dotfiles.
Quick Start: ./scripts/module2.sh --check | --demo | --scaffold
Manage processes (ps, kill), run jobs in background, redirect stdout/stderr, use pipes and grep.
Quick Start: ./scripts/module3.sh --check | --demo | --scaffold
Use history and aliases; write shell scripts with variables, arguments, conditionals, and loops; apply safe scripting practices.
Quick Start: ./scripts/module4.sh --check | --demo | --scaffold
Use editors from the terminal; organize projects (src/, tb/, docs/, scripts/, build/); find files and text; create and extract tar and zip archives.
Quick Start: ./scripts/module5.sh --check | --demo | --scaffold
Initialize and clone repos; track changes (status, add, commit, log, diff); use .gitignore; connect to GitHub (remote, pull, push); safely undo changes (restore).
Quick Start: ./scripts/module6.sh --check | --demo | --scaffold
Create and switch branches; merge (including conflict resolution); use submodules; inspect history (blame, bisect); follow branch-and-PR workflow.
Quick Start: ./scripts/module7.sh --check | --demo
Combine Unix and Git: clone a template, run scripts, capture and inspect logs, develop iteratively with small commits, prepare and submit via GitHub.
Quick Start: ./scripts/module8.sh --check | --demo
Each module has a script under scripts/:
./scripts/moduleN.sh --check # self-check (prerequisites, tools)
./scripts/moduleN.sh --demo # print demo commands
./scripts/moduleN.sh --scaffold # create practice dirs/files (modules 1β6)Run from the repository root. Not all modules have --scaffold; see the module doc or script help.
Helper scripts for Git submodules (see scripts/README.md):
./scripts/git-submodule-init.sh # init/update submodules after clone
./scripts/git-submodule-init.sh --check # list submodules only
./scripts/git-submodule-add.sh <url> [path] # add a submodule
./scripts/git-submodule-status.sh # status of all submodules
./scripts/git-clone-with-submodules.sh <url> [dir] # clone + init submodules- Module docs (syllabus + command reference): docs/MODULE1.md β¦ docs/MODULE8.md.
- Per module: Each has README.md (quick start), EXAMPLES.md (index of examples with "Try these"), and CHECKLIST.md (exercise checklist). Example: module1/README.md, module1/EXAMPLES.md, module1/CHECKLIST.md.
For any command introduced in a module, open that moduleβs doc and go to the Command Reference (Detailed) section. There youβll find what it does, how it works, syntax, options, examples, and tips.
Contributions are welcome. This project follows practices suited to educational material:
- Documentation: Keep module docs and command references clear and consistent.
- Examples: Ensure examples run and match the described workflow.
- Scripts: Preserve
--check,--demo,--scaffoldbehavior; document new options. - Structure: Follow the existing module layout (docs/, moduleN/, scripts/).
This work is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0). See LICENSE in this repository for the license text and a link to the full legal code.
- β You may: Share and adapt the material for any purpose, including commercially.
- π You must: Give appropriate credit, link to the license, and indicate if changes were made.
For questions or issues:
- Check the documentation and the Command Reference (Detailed) in each module doc.
- Review each moduleβs README.md, EXAMPLES.md, and CHECKLIST.md for quick start, example index, and exercises.
- Run
./scripts/moduleN.sh --checkand--demofor the relevant module. - Open an issue for bugs or suggestions.
Happy Learning! π
Start with Module 1: Linux & Shell Basics.
