Run AI-generated solutions yourself
When you ask AI to organize files or automate a task, it often responds with a shell script. Reading shell lets you verify that answer before you run it.
Sign up and we'll remember how far you've come.
Python often comes to mind when learning AI, but terminal commands and shell are the practical foundation for installing and running AI tools.
Shell is not the main language for building AI models, but it predates Python and has long helped people manage files and automate everyday tasks.
No deep study needed: start with a few common commands and build skills you can use for a lifetime.
The shell is useful for running programs, managing files, and automating development. AI can also run through browsers, apps, notebooks, and APIs. A terminal is one useful interface, not a requirement for every AI user.
Learn the basics, then Node.js, developer tools, and running other languages — all the way to automation.
When you ask AI to organize files or automate a task, it often responds with a shell script. Reading shell lets you verify that answer before you run it.
Shell has been a stable, universal computer language for decades. Learn it once and use it across macOS, Linux, servers, cloud platforms, and AI tools.
macOS uses zsh by default, but nearly every command and concept in this course works the same way. A #!/bin/bash shebang runs a script with Bash explicitly, and apart from a few advanced differences such as array index numbering it all carries over.
In about 20 lines of bash you can run a real web server that returns a page to the browser — a vivid reminder that HTTP is just "a promise to exchange one chunk of text."
#!/bin/bash
PORT=8084
PIPE=simple-web-server-pipe
rm -f "$PIPE"
mkfifo "$PIPE"
response() {
read -r method path _
echo "[$(date)] $method $path" >&2
index=$(cat index.html)
printf 'HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nConnection: close\r\n\r\n%s' \
"$index"
}
while true; do
response < "$PIPE" | nc -l "$PORT" > "$PIPE"
donemkfifo "$PIPE" Creates a named pipe (FIFO). The request nc receives and the response we build both travel through this channel.nc -l "$PORT" nc (netcat) opens port 8084 and waits for the browser to connect — a socket server in a single command.response() Reads the request line (method and path), logs it, and returns index.html as an HTTP 200 response.while true; do … done After responding, the connection closes and the loop starts over to accept the next visitor, keeping the server alive.Put an index.html in the same folder, run bash server.sh, then open localhost:8084 in your browser. Not for production, but perfect for understanding how HTTP works.