```
Capacitação Linux
```
---
# Capacitação de Linux
# Comandos
[toc]
## sudo
- Executa comandos como administrador. É uma abreviação para SUperuser DO, ou em português, Superusuário Faça.
## apt
- Gerenciador de pacotes de Distribuições Linux baseadas no Debian. Serve para instalar, atualizar e remover softwares. Comumente requer o sudo para funcionar.
Ex.:
```bash=
sudo apt install firefox
sudo apt remove firefox
sudo apt update && sudo apt upgrade
```
## cd
- É uma abreviação para Change Directory, ou mudar diretório.
- Navega pelos diretórios do linux.
Ex.:
```bash=
cd Documentos/MinervaBots # entra na pasta MinervaBots dentro de Documentos
```
## pwd
- Sigla para Print Working Directory, ou Imprimir o Diretório de Trabalho.
- Indica o diretóro que está atualmente aberto no terminal.
## ls
- Pode ser entendido com "List", ou Lista.
- Lista arquivos e diretório que existem dentr de um diretório.
## grep
- Realiza um filtro, demarcando algo na saída de um comando
Ex.:
```bash=
ls | grep *.deb # Lista o arquivos de uma pasta e filtra os resultados para mostrar apenas os arquivos que possuem a extensão .deb
```
> O caractere "|"(Pipe) serve para concatenar comandos no terminal.
## touch
- "Toca" em um arquivo, atualizando sua última data de atualização. Quando utilizado com um arquivo não existente como argumento, cria um arquivo com este nome.
Ex.:
```=bash
touch esteArquivo #se esteArquivo existir, terá sua data de modificação atualizada, senão, será criado um arquivo com esse nome.
```
## echo
- Tem como saída o seu próprio argumento. Funciona muito bem para funções de debug em scripts.
Ex.:
```bash=
echo "Seu programa está rodando!"
# saída
Seu programa está rodando!
```
## chmod
Adiciona ou remove permissões em arquivos. É uma abreviação de "CHange MODe", ou mudar modo.
Ex.:
```bash=
chmod +x script.sh # permite que um arquivo seja executado como um programa
chmod -x script.sh # remove a permissão de execução
```
> O comando ```ls -l``` pode listar os arquivos em um diretório e exibir suas permissões.
## Shell
- É um programa responsável por interpretar instruções enviadas pelo usuário e seus programas para o Kernel.
### Shell Script:
- Automatizador de tarefas via lista de comandos.
### Desafio:
```
1° Passo -> criar uma pasta
2° Passo -> entrar na pasta
3° Passo -> criar um arquivo nessa pasta
4° Passo -> Escrever um texto nesse arquivo
5° Passo -> cabou
```
### Solução:
- Criar a pasta:
```bash=
mkdir [nome da pasta]
```
- Cria arquivo:
```bash=
touch [arquivo.txt]
```
```bash=
nano [arquivo.txt] # abre o arquivo para ser editado
```
#### Exemplo de Automatização com um Shell Script
- `#!/usr/bin/env bash`: Em script feitos com comandos `bash` é importante identificá-lo como tal, para facilitar a execução. Esta linha traz o ambiente `bash` para interpretar os comandos.
```
#!/usr/bin/env bash
mkdir [capacitação] ->> criar diretório
cd [capacitação] ->> entrar no diretório
touch [arquivo.txt] ->> criar arquivo
echo ["oi, eu sou o Goku!"] >> [arquivo.txt] ->> Escrever no arquivo
echo ["já acabei!"] ->> Debug
```
# Dicas:
- Sempre que entrar no Ubuntu atualize seu sistema, as atualizações acontecem com mais frequência que o Windows, quase diariamente.
```bash=
sudo apt update && sudo apt upgrade # atualiza os repositórios e instala as atualizações.
```
- Alguns comandos tem saídas muito extensas, por isso, para ajudar seu olhos, o comando `clear` apaga o terminal e o deixa limpo. Ainda melhor do que o comando, é o seu atalho:
- Ctrl + L: `clear`
- No `bash`, os comentários são feitos utilizando '#'
Ex.:
```bash=
# isto é um comentário
```
- Para copiar e colar no terminal não se usa `ctrl+c`, pois esse atalho é usado para interromper a execução de um programa no terminal (muito útil, diga-se de passagem). Para copiar e colar, respectivamente, utiliza-se `ctrl+shift+c` e `ctrl+shift+v`.
# Programas para Instalar:
## Visual Studio Code
- sudo apt install code
- Pode acontecer do Ubuntu não estar com os repositórios da Microsoft ativos, e solução é instalar via .deb que instala o programa e ativa o repositório possibilitando atualizações automáticas:
- Baixe o .deb [neste site](https://code.visualstudio.com/download) e instale assim:
```bash=
cd ~/Downloads && sudo dpkg -l[arquivo.deb]
```
- sudo apt install gitkraken
- Caso não funcione, instale via .deb da mesma forma que o VsCode, através do [site oficial](https://www.gitkraken.com/try-free).
- sudo snap install webots
# Para codar:
- Pode-se usar: Nano, Vim (evitar) ou **VSCode**