# How to Navigate a GitHub Repository Using Bash: A Complete Guide to Microsoft AI-For-Beginners

> Learn to navigate the Microsoft AI-For-Beginners GitHub repository with Bash. Use sparse-checkout, Unix commands, sed, and grep for efficient terminal-based exploration.

- Repository: [Microsoft/AI-For-Beginners](https://github.com/microsoft/AI-For-Beginners)
- Tags: how-to-guide
- Published: 2026-07-03

---

**You can navigate the Microsoft AI-For-Beginners repository efficiently using Bash by combining sparse-checkout clones to reduce download size, standard Unix commands like `ls`, `cd`, and `find`, and targeted tools like `sed` and `grep` to inspect files without leaving the terminal.**

Navigating large open-source repositories from the command line is essential for developers who prefer terminal workflows or work on remote servers. The Microsoft AI-For-Beginners repository contains a comprehensive curriculum of Jupyter notebooks, Python scripts, and a Vue.js quiz application across 40+ language translations. Learning how to navigate a GitHub repository using Bash allows you to explore this structured codebase, access specific lessons, and manage dependencies without downloading unnecessary translation files.

## Cloning the Repository: Full vs. Sparse Checkout

The AI-For-Beginners repository exceeds 2 GB when cloned completely due to translation files for over 40 languages. For most users, a **sparse checkout** is the recommended approach to download only the core curriculum.

### Full Clone

Use this method only if you need complete access to all translation files:

```bash
git clone https://github.com/microsoft/AI-For-Beginners.git
cd AI-For-Beginners

```

### Sparse Checkout for Core Curriculum

This approach initializes a shallow clone and excludes the `translations` and `translated_images` directories:

```bash
git clone --filter=blob:none --sparse https://github.com/microsoft/AI-For-Beginners.git
cd AI-For-Beginners

# Pull only top-level files and lessons, excluding translations

git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'

```

The `--filter=blob:none` flag minimizes object downloads, while `--no-cone` mode allows precise path exclusions using the `!` prefix.

## Essential Bash Navigation Commands

Once inside the repository, these standard Unix utilities enable efficient exploration without a GUI:

- **`ls -l`** – List files and directories with detailed permissions and sizes
- **`cd <directory>`** – Change into subdirectories like `lessons/3-NeuralNetworks`
- **`tree -L 2`** – Visualize the directory hierarchy (install with `sudo apt install tree`)
- **`find . -name "*.ipynb"`** – Locate all Jupyter notebooks recursively
- **`grep -R "TODO" .`** – Search source files for specific patterns or unfinished sections
- **`cat <file>`** – View file contents directly in the terminal
- **`sed -n '80,120p' README.md`** – Display specific line ranges without opening an editor

## Inspecting Critical Top-Level Files

Understanding the repository structure requires examining several key files that define the curriculum and dependencies.

### README.md

The [`README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/README.md) file contains the curriculum map and installation instructions. View the lesson table without opening an editor:

```bash
sed -n '80,120p' README.md

```

This displays lines 81-98, which typically contain the structured lesson overview according to the source documentation.

### environment.yml

This file defines the Conda environment with Python 3, TensorFlow 2.17, PyTorch, and CUDA support. Inspect it with:

```bash
cat environment.yml

```

### requirements.txt

Contains exact pip package versions for TensorFlow, Torch, Keras, and OpenCV. View the first 20 lines:

```bash
head -n 20 requirements.txt

```

### Key Directories

- **`lessons/`** – Contains all curriculum notebooks organized by topic (e.g., `lessons/4-ComputerVision/07-ConvNets/ConvNetsPyTorch.ipynb`)
- **`examples/`** – Standalone beginner scripts including [`01-hello-ai-world.py`](https://github.com/microsoft/AI-For-Beginners/blob/main/01-hello-ai-world.py) for quick experimentation
- **`etc/quiz-app/`** – Vue.js application source code for the interactive quiz component

## Step-by-Step Navigation Walkthrough

Follow this complete workflow to clone, explore, and run code from the repository:

```bash

# 1. Clone sparsely to save bandwidth

git clone --filter=blob:none --sparse https://github.com/microsoft/AI-For-Beginners.git
cd AI-For-Beginners
git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'

# 2. Examine repository structure

ls -l

# 3. View curriculum outline in README

sed -n '80,120p' README.md

# 4. Navigate to Neural Networks section

cd lessons/3-NeuralNetworks
ls -1 *.ipynb

# 5. Inspect a specific notebook

sed -n '1,30p' 03-Perceptron/Perceptron.ipynb

# 6. Run a simple example script

cd ../../examples
python 01-hello-ai-world.py

```

This workflow demonstrates downloading only the core curriculum, inspecting the lesson index, navigating to specific topics like neural networks, and executing sample programs.

## Automating Setup with Bash Scripts

Create a reusable script to automate cloning and environment setup. Save this as [`setup.sh`](https://github.com/microsoft/AI-For-Beginners/blob/main/setup.sh):

```bash
#!/usr/bin/env bash
set -e

# Clone sparsely if repository doesn't exist

if [ ! -d AI-For-Beginners ]; then
    git clone --filter=blob:none --sparse https://github.com/microsoft/AI-For-Beginners.git
    cd AI-For-Beginners
    git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
else
    cd AI-For-Beginners
fi

# Create Conda environment from specification

conda env create -f environment.yml

# Display curriculum summary

echo "=== Curriculum Overview ==="
sed -n '81,110p' README.md

```

Execute the script with `bash setup.sh` to automatically fetch the core repository, build the Python environment, and display the lesson table.

## Summary

- **Sparse checkout** significantly reduces download time by excluding translation files while preserving the core curriculum in `lessons/` and `examples/`
- Standard Bash tools like `ls`, `cd`, `find`, and `grep` provide complete navigation capabilities without GUI dependencies
- Critical files include [`README.md`](https://github.com/microsoft/AI-For-Beginners/blob/main/README.md) for curriculum maps, [`environment.yml`](https://github.com/microsoft/AI-For-Beginners/blob/main/environment.yml) for Conda dependencies, and [`requirements.txt`](https://github.com/microsoft/AI-For-Beginners/blob/main/requirements.txt) for pip packages
- The `lessons/` directory contains organized Jupyter notebooks by topic, while `examples/` holds standalone scripts for immediate execution
- Automation scripts can combine cloning, environment setup, and initial exploration into a single command

## Frequently Asked Questions

### What is the difference between a full clone and a sparse checkout?

A full clone downloads the entire repository history including all translation files, exceeding 2 GB. A sparse checkout uses `git clone --filter=blob:none --sparse` combined with `git sparse-checkout set` to download only specific directories, allowing you to work with the core curriculum while excluding the `translations` and `translated_images` folders.

### How do I view specific sections of a file without opening an editor?

Use the `sed` command to print specific line ranges. For example, `sed -n '80,120p' README.md` displays lines 80 through 120 of the README, which contains the curriculum lesson table. For shorter files, `cat` displays the entire content, while `head -n 20` shows just the first 20 lines.

### Which directory contains the main lesson notebooks?

The `lessons/` directory contains all curriculum content organized by topic. For example, neural network lessons reside in `lessons/3-NeuralNetworks/`, computer vision content in `lessons/4-ComputerVision/`, and specific notebooks like `ConvNetsPyTorch.ipynb` are nested within subdirectories like `07-ConvNets/`.

### How can I list all Jupyter notebooks in the repository?

Use the `find` command with a name pattern: `find . -name "*.ipynb"`. This recursively searches all subdirectories and returns paths to every notebook file, allowing you to quickly locate specific lessons like `03-Perceptron/Perceptron.ipynb` without manually browsing directories.