# Bash ou shell

## Introdução

O **Bash** (Bourne Again Shell) é um interpretador de comandos utilizado em sistemas Unix-like, como Linux e macOS. Ele permite executar comandos no terminal, criar scripts e automatizar tarefas.

## Estrutura Básica de um Script Bash

Um script Bash é um arquivo de texto contendo comandos executáveis pelo shell. A extensão `.sh` é comum, mas não obrigatória.

```bash
#!/bin/bash
# Comentário: Este é um script Bash simples

echo "Olá, mundo!"
```

* `#!/bin/bash`: Shebang que indica que o script deve ser executado pelo Bash.
* `#`: Inicia um comentário, ignorado pelo interpretador.
* `echo`: Exibe texto no terminal.

## Comandos Básicos

### Navegação e Manipulação de Arquivos

* `pwd`: Exibe o diretório atual.
* `ls`: Lista arquivos e diretórios.
* `cd <diretório>`: Navega para o diretório especificado.
* `mkdir <nome>`: Cria um diretório.
* `rm <arquivo>`: Remove um arquivo (use com cuidado).
* `rm -r <diretório>`: Remove um diretório e seu conteúdo.

### Visualização e Edição

* `cat <arquivo>`: Exibe o conteúdo de um arquivo.
* `nano <arquivo>`: Edita um arquivo no editor Nano.
* `less <arquivo>`: Visualiza um arquivo página por página.

### Gerenciamento de Processos

* `ps`: Lista processos em execução.
* `top`: Exibe processos em tempo real.
* `kill <PID>`: Encerra um processo pelo seu ID.

### Manipulação de Texto

* `grep <padrão> <arquivo>`: Busca por um padrão em um arquivo.
* `sed 's/<procurar>/<substituir>/g' <arquivo>`: Substitui texto em um arquivo.
* `awk '{print $1}' <arquivo>`: Processa e extrai colunas de texto.

## Variáveis

As variáveis em Bash armazenam dados e não precisam ser tipadas.

```bash
nome="Usuário"
echo "Olá, $nome!"
```

* Atribuição: `variavel=valor` (sem espaços).
* Uso: `$variavel` ou `${variavel}`.

## Estruturas de Controle

### Condicional

```bash
if [ "$var" = "valor" ]; then
  echo "Condição verdadeira"
else
  echo "Condição falsa"
fi
```

### Laço

```bash
for i in {1..3}; do
  echo "Iteração $i"
done
```

## Permissões e Execução

* Tornar um script executável: `chmod +x script.sh`.
* Executar: `./script.sh`.

## Redirecionamento e Pipelines

* `>`: Redireciona saída para um arquivo (sobrescreve).
* `>>`: Redireciona saída para um arquivo (adiciona).
* `|`: Envia a saída de um comando como entrada para outro.

Exemplo:

```bash
ls | grep ".txt" > arquivos_texto.txt
```

## Boas Práticas

* Use comentários para explicar o código.
* Teste scripts em ambientes seguros.
* Evite comandos destrutivos como `rm -rf` sem confirmação.
* Utilize variáveis para facilitar manutenção.

## Recursos Adicionais

* Manual do Bash: `man bash`
* Ajuda de comandos: `<comando> --help`
* Comunidades: Stack Overflow, fóruns Linux.

Essa documentação cobre o básico para iniciar com Bash. Para aprofundar, explore scripts mais complexos e documentação oficial.


---

# 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://0xmorte.gitbook.io/bibliadopentestbr/conceitos/programacao-e-linguagens/bash-ou-shell.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.
