# Introdução a Linux

## O que é um sistema operacional?

O sistema operacional do seu computador é o software encarregado de realizar a comunicação entre o hardware e os demais softwares a serem executados no seu pc. Sua função é administrar e gerenciar os recursos do sistema, desde os elementos de baixo nível (os componentes de hardware como dri) até os de alto nível (programas de terceiros e interface gráfica), fornecendo uma **interface entre o usúario e hardware.**

Entre as diversas funções do sistema operacional, poedmos citar: 1. Gerenciamento dos processos (execução de programas); 2. Gerenciamento da memória; 3. Gerenciamento de recursos; 4. Entrada/Saída de dados; 5. Sistema de arquivos; 6. Definir interface com o usúario; 7. Tratamento de erros;

#### Interfaces de uso:

* Interface Gráfica (GUI)
* Interface de terminal (CLI)
* Interface textual
* Interface de voz (VUI)

#### Sistemas de Arquivos

[Introdução ao Sistema de Arquivos do Linux](https://www.rs-online.com/designspark/an-intro-to-linux-file-system-management)

[Sistemas Operacionais: Crash Course Computer Science (EN)](https://youtu.be/26QPDBe-NB8) [A mente por trás do Linux | Palestra com Linus Torvalds (EN)](https://youtu.be/o8NPllzkFhE)

## Utilizando a linha de comando (CLI)

Todos os comandos estão no formato `comando [-flags] <argumentos>`

### Comandos para Ajuda e Documentação

* `man <comando>`: Manual com informações acerca de todos os comandos
* `info`: Outra ferramenta de documentação
* `uname`: Mostra informações do sistema

### Comandos de Controle e Acesso

* `exit`: Terminar a sessão, ou seja, a shell
* `logout`: Deslogar/terminar sessão atual
* `passwd`: Mudar a senha do usuário logado

### Comandos para Gestão de Arquivos e Diretórios

* `ls [-l] [-a] <diretorio>`: Listar o conteúdo de um diretório, a flag `-l` exibe o resultado em forma de lista e a `-a` exibe também o conteúdo oculto
* `cd <diretorio>`: Mudar diretório atual
  * `/`: Vai para diretório Root
  * `~`: Vai para diretóorio Home
  * `..`: Vai para diretório anterior
* `pwd`: Mostra nome do diretório atual
* `touch <arquivo>`: Cria arquivo
* `cp <arquivo1> <arquivo2>`: Copia conteúdo do aqrquivo1 para arquivo2
  * Se o arquivo2 já existir, ele é sobrescrito
* `cat <arquivo>`: Mostra o conteúdo de um arquivo e pode ser usado também para concatenar arquivos, como por exemmplo utilizando "a.txt b.txt > c.txt" para juntar o conteúdo dos aquivos `a.txt` e `b.txt` em um único chamado `c.txt`
* `mv`: Move ou renomeia arquivos ou diretórios
* `mkdir <diretorio>`: Cria um diretório
* `rm [-r|-R]`: Remove um arquivo
* `rmdir <diretorio>`: Remove um diretório
* `chmod`: Muda permissões de arquivo ou diretório

  &#x20; user:group:everyone

  &#x20; 4    :    read (r)

  &#x20; 2    :    write (w)

  &#x20; 1    :    execute (x)
* `file`: Determina tipo de arquivo
* `grep <'pesquisa'> <arquivo>`: Procura por um padrão em um arquivo
* `strings`: Retorna as strings identificadas em um arquivo
* `unzip`: Ferramenta para descompactar arquivos zipados

### Comandos de Edição de Texto

* `emacs`: Editor de texto
* `nano`: Editor de texto
* `vim`: Editor de texto do terminal

### Comandos de Rede

* `ping`: Pingar um determinado host ou verificar existência de conexão; envia pacotes icmp para host específicado e mede tempo de resposta, entre outras coisas &#x20;
* `ifconfig`: Configurar a interface de uma rede; utilizado para visualizar os ips da nossa máquina
* `ssh`: Cria sessão segura (Secure Shell) e permite-nos conectar num servidor remoto através do protocolo ssh
* `netcat`: Criar conexão TCP/UDP
* `netstat`: Mostra o estado da rede
* `nmap`: Ferramenta de port-scan para visualização de portas abertas num dado host

### Processos:

* `ps`: Mostra os processos em execução
* `pstree`: Mostra processos atuais em forma de árvore
* `kill`: Mata um processo, como por exemplo `kill -9 100`

### Comandos de Informação de Estado

* `date`: Exibe data e hora
* `ps`: Lista os processos em execução
* `pwd`: Mostra o caminho inteiro do diretório atual, ou seja, o pathname
* `whoami`: Diz quem é o dono da shell
* `who`: Mostra quem está logado no sistema&#x20;

[Cheatsheet de Comandos Linux](https://cheatography.com/davechild/cheat-sheets/linux-command-line/pdf/) [Bandit - OverTheWire](https://overthewire.org/wargames/bandit/) [CmdChallenge](https://cmdchallenge.com/) [Tutorial Vim](https://www.openvim.com/tutorial.html)


---

# 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://gitbook.ganeshicmc.com/introducao_linux.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.
