# Beginners' Guide to the Terminal

> This workshop is renamed and heavily lifted from the original workshop: Hacker Tools - Shell and Scripting, which itself is lifted from the [MIT's Missing Semester](https://missing.csail.mit.edu/2020/shell-tools/)

## Introduction

There are tons of ways for us to interface with modern computers, from beautiful GUIs and web applications. But that can only really get us so far. To fully utilize your computer to it's maximum potential and efficiency, learning how to use your a textual interface like your terminal is necessary.

Many applications and use cases are terminal first, as it is extremely easy to develop for and work with. No fancy framework or dependencies needed, just good ol' text input and outputs. In this specific case, we'll be going through Bash, a unix-like shell (or a POSIX-compatible shell).

### What is Unix?

Without going into too much detail about the history of [Unix](https://en.wikipedia.org/wiki/Unix), we just need to understand that unix was a really great idea for how an operating system should be like, and it is what some modern operating systems today are born from. The important thing for us to know is that it gave us the rise of the **Unix Philosophy**, which guides a lot of how a terminal should work and function.

### The Unix Philosophy

The Unix Philosophy can be summarized as such:

* Write programs that do one thing and do it well.
* Write programs to work together.
* Write programs to handle text streams, because that is a universal interface.

and these principals, still guide a lot of applications today!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.nushackers.org/hackerschool/beginners-guide-to-the-terminal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
