---
# System prepended metadata

title: Exercícios dia 1 Docker
tags: [Shell, PETCC, Linux]

---

---
id: Exercícios-Dia1
aliases: []
tags:
  - PETCC
  - Linux
  - Shell
---

# Exercícios Dia 1 - Curso de Docker

### Exercício 0

1. Crie o diretório `/tmp/petcc`.

2. Dentro desse diretório, crie a pasta `exercícios`.

Para cada exercício, a partir desse, crie uma pasta para tal com o nome que preferir, mas que seja ordenado em ordem léxicográfica. Exemplo:

```
ex001
ex002
⋮
```

Dentro dos diretórios, crie os arquivos necessários. 

> [!NOTE]
> - Não precisar escrever nenhum arquivo de resposta neste exercício 0. 
> - Ao final de cada exercício envie o arquivo de resposta ou o script para o email dockerpetcc@gmail.com. 
> - Mande todos os arquivos em formato `zip` de uma vez com seu nome, ou separadamente também com o nome escrito no email.

---

### Exercício 1

1. Crie um diretório com o nome que preferir e, dentro desse diretório, crie três arquivos e três pastas com quaisquer nomes contendo números. Em seguida, coloque o arquivo com menor número dentro da pasta com menor número e assim em diante.
2. Escreva a sequência de comandos usada no arquivo `/tmp/petcc/ex002/answer.sh`.

---

### Exercício 2

1. Use o comando `find` para listar todos os arquivos em `/usr/bin` que começam com `g`.
2. Redirecione a saída desse comando para um arquivo chamado `g_files.txt` em `/tmp/mydir`.
3. Use o comando `grep` para encontrar todas as ocorrências da palavra "get" nos arquivos em `/usr/bin`.
4. Redirecione a saída desse comando para um arquivo chamado `get_occurrences.txt` em `/tmp/petcc/ex004`.
5. Digite a sequência de comandos usada no arquivo `/tmp/petcc/ex002/answer.sh`

---

### Exercício 3

1. No diretório `/tmp/petcc`, crie um arquivo chamado `sys_info.sh`.
2. Adicione o seguinte conteúdo ao arquivo `sys_info.sh`, uma linha de cada vez:

```bash
#!/bin/bash
echo "Informações do Sistema:"
uname -a
df -h
free -m
```

3. Use `chmod` para tornar o arquivo `sys_info.sh` executável.
4. Execute o comando novamente digitando `./sys_info.sh` e pressione Enter.
5. Pesquise sobre os comandos `uname`, `df` e `free` utilizando o programa `man`.
6. Adicione um comentário explicativo para cada comando no arquivo `answer.txt`para descrever o que cada um faz.
7. Execute o script novamente para verificar se tudo está funcionando conforme esperado.
8. Crie um link simbólico do arquivo `sys_info.sh` para o diretório `/usr/local/bin` e tente executá-lo de outro lugar apenas com `sys_info.sh`.

---

### Exercício 4

1. Abra dois terminais (janelas).
2. No primeiro terminal execute `sleep 300 &` (cria um processo em background).
3. No segundo terminal:
   1. Use `ps` para encontrar o PID do processo em background.
   2. Mate o processo de alguma forma.
4. Salve a sequência de comandos que você utilizou em `/tmp/petcc/ex004/answer.sh`

---

### Exercício 5

1. Crie uma pipeline que faça:
   1. Liste todos os processos que contém `bash`.
   2. Mostra apenas os PIDs e os nomes dos comandos.
   3. Salva o resultado em `/tmp/petcc/ex005/processes.txt`

---

### Exercício 6

1. Crie uma variável de ambiente temporária chamada `DOCKER_WORKSHOP` com o valor "aprendendo linux".
2. Crie um script shell chamado `env_info.sh` que exiba:
   - O valor da variável que você criou.
   - O conteúdo da variável `PATH`.
   - O diretório home do usuário atual.
3. Torne o script executável e execute-o.
4. Salve o script como `/tmp/petcc/ex006/env_info.sh`.

---

### Exercício 7

Em programas em C que envolvem muitos arquivos, é comum querermos configurar nosso projeto de modo que facilite o gerenciamento de múltiplos arquivos. Entretanto, como você gosta de iniciar muitos projetos, você não quer precisar criar, repetidas vezes, arquivos que sempre vão estar no seu projeto. Por isso, vamos criar um programa que automatize isso.

Imagine que você sempre organiza seu projeto baseado nessa estrutura.

```
.
├── build
├── test
├── lib
│   └── text_color.h
├── src
│   ├── include
│   │   └── header.h
│   └── main.c
├── CMakeLists.txt
├── LICENSE
└── README.md
```

1. No diretório `/tmp/petcc/ex006`, crie o arquivo `c_project_cfg.sh`.
2. Dentro desse arquivo, adicione a seguinte linha.

    ```bash
    #!/bin/bash
    ```

3. Após essa linha, anexe os comandos necessários para criar a estrutura do projeto acima.
    Seu arquivo no final deve ficar assim:

        ```bash
        #!/bin/bash
        # Comando 1
        # Comando 2
        # Comando 3
        ```

4. Para escrever linhas no arquivo, use apenas comandos de redirecionamento, escreva quais foram esses comandos no `/tmp/petcc/ex007/answer.txt`

---

### Exercício 8

- Use o comando `ping` para verificar a conectividade com google.com (limite a 5 pacotes).

- Liste todas as portas abertas no seu sistema.

- Use o comando `curl` para fazer uma requisição HTTP a `httpbin.org/get` e salve a resposta em um arquivo JSON.

- Verifique quais processos estão usando a porta 80 (se houver algum).

Salve as saídas em `/tmp/petcc/ex008/outs.txt`

---

&copy; PETCC-DIMAP/UFRN 2025
