DEV Community

Cover image for Comandos Essenciais do Linux (Nv-2)
Davi
Davi

Posted on

2

Comandos Essenciais do Linux (Nv-2)

gandalf2

Se tornando um mago

Olá para você novamente! Hoje vamos explorar comandos mais complexos e bem construídos, com explicações completas e detalhadas sobre cada um deles. Este artigo será mais abrangente que o primeiro, refletindo o nível intermediário que vamos abordar aqui. Então, prepare-se para fortalecer ainda mais suas habilidades no terminal Linux!


1. sudo apt install e suas variantes

O que faz?

O comando sudo apt install é utilizado para instalar pacotes no sistema baseado em distribuições Debian, como Ubuntu. Ele funciona em conjunto com o apt, que é o gerenciador de pacotes, e requer permissões de superusuário (sudo) para modificar o sistema.


Exemplo

sudo apt install curl
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, o comando instala o pacote curl, uma ferramenta para transferir dados de ou para um servidor.


Explicação técnica

  • sudo: Permite executar o comando com permissões de superusuário, necessárias para ações que modificam o sistema. Sem isso, você receberia uma mensagem de "Permissão negada".
  • apt: O Advanced Package Tool é responsável por gerenciar pacotes no Linux. Ele pode buscar, instalar, atualizar e remover softwares do repositório oficial da distribuição.
  • install: Indica ao apt que você deseja instalar o pacote especificado.

O que acontece no sistema?

  1. Busca no repositório: O apt verifica no repositório oficial da distribuição (ou repositórios configurados) se o pacote está disponível.
  2. Resolução de dependências: Caso o pacote precise de outros para funcionar, o apt também os baixa e instala automaticamente.
  3. Instalação: Os arquivos são baixados, extraídos e colocados nas localizações corretas no sistema.

Variações úteis

  • Instalar múltiplos pacotes de uma vez:
sudo apt install curl git vim
Enter fullscreen mode Exit fullscreen mode
  • Simular a instalação (sem realmente executar):
sudo apt install --simulate curl
Enter fullscreen mode Exit fullscreen mode
  • Reinstalar um pacote já instalado:
sudo apt install --reinstall curl
Enter fullscreen mode Exit fullscreen mode

2. tar - Compactação e descompactação de arquivos


O que faz?

O comando tar é usado para criar, extrair, listar ou manipular arquivos compactados (ou pacotes de arquivos). Ele não comprime por si só, mas é frequentemente usado junto com ferramentas de compressão, como gzip ou bzip2.


Exemplo

Compactando um diretório:

tar -cvf backup.tar /meu_diretorio
Enter fullscreen mode Exit fullscreen mode

Descompactando o arquivo gerado:

tar -xvf backup.tar
Enter fullscreen mode Exit fullscreen mode

Explicação técnica

  • -c (create): Cria um novo arquivo tar.
  • -v (verbose): Exibe detalhes do processo no terminal, como os arquivos sendo adicionados ou extraídos.
  • -f (file): Especifica o nome do arquivo que será criado ou extraído.
  • -x (extract): Extrai o conteúdo de um arquivo tar.

Variações úteis

  1. Compactação com compressão (gzip):
   tar -czvf backup.tar.gz /meu_diretorio
Enter fullscreen mode Exit fullscreen mode

Aqui, o -z ativa a compressão com gzip, gerando um arquivo menor.

  1. Extraindo arquivos compactados (gzip):
   tar -xzvf backup.tar.gz
Enter fullscreen mode Exit fullscreen mode
  1. Visualizando o conteúdo de um arquivo tar:
   tar -tvf backup.tar
Enter fullscreen mode Exit fullscreen mode
  1. Compactando e excluindo os arquivos originais:
   tar --remove-files -cvf backup.tar /meu_diretorio
Enter fullscreen mode Exit fullscreen mode

O que acontece no sistema?

Quando você cria um arquivo com o tar, o comando empacota vários arquivos ou diretórios em um único arquivo, facilitando a movimentação ou o backup de dados. Ao adicionar compressão com ferramentas como gzip, o arquivo gerado ocupa menos espaço em disco, sendo ideal para armazenamento e transferência.


3. chmod - Controle de permissões de arquivos e diretórios


O que faz?

O comando chmod altera as permissões de arquivos e diretórios, permitindo configurar quem pode ler, escrever ou executar um arquivo no sistema.


Exemplo

Alterando as permissões de um arquivo para que apenas o dono possa ler e escrever:

chmod 600 arquivo.txt
Enter fullscreen mode Exit fullscreen mode

Dando permissão de execução a todos os usuários:

chmod +x script.sh
Enter fullscreen mode Exit fullscreen mode

Explicação técnica

O chmod usa uma combinação de números ou símbolos para definir permissões.

  1. Modelo simbólico:
    • + para adicionar permissões.
    • - para remover permissões.
    • = para definir permissões específicas. Exemplo:
   chmod u+x script.sh
Enter fullscreen mode Exit fullscreen mode

Aqui, u significa usuário, e +x adiciona a permissão de execução.

  1. Modelo numérico: As permissões são representadas por números:
    • 4 = leitura (r)
    • 2 = escrita (w)
    • 1 = execução (x)

A soma desses valores define as permissões:

  • 7 = leitura + escrita + execução (rwx)
  • 6 = leitura + escrita (rw-)
  • 5 = leitura + execução (r-x)
  • 0 = nenhuma permissão (---)

O número final tem 3 dígitos, representando:

  • Primeiro dígito: permissões do dono do arquivo.
  • Segundo dígito: permissões do grupo.
  • Terceiro dígito: permissões para outros.

Exemplo:

   chmod 755 script.sh
Enter fullscreen mode Exit fullscreen mode

Permissões:

  • Dono: leitura, escrita e execução (rwx).
  • Grupo: leitura e execução (r-x).
  • Outros: leitura e execução (r-x).

Variações úteis

  1. Removendo todas as permissões para outros usuários:
   chmod o-rwx arquivo.txt
Enter fullscreen mode Exit fullscreen mode
  1. Dando permissão total apenas ao dono:
   chmod 700 diretorio
Enter fullscreen mode Exit fullscreen mode
  1. Tornando um script executável:
   chmod +x script.sh
Enter fullscreen mode Exit fullscreen mode

O que acontece no sistema?

Quando o chmod é usado, ele modifica as permissões no sistema de arquivos. Essas permissões são essenciais para segurança, garantindo que apenas usuários ou grupos autorizados possam acessar ou modificar arquivos.


4. grep - Pesquisa avançada em arquivos e saídas de comandos


O que faz?

O comando grep pesquisa padrões de texto em arquivos ou na saída de outros comandos, exibindo linhas que correspondem a uma determinada expressão regular.


Exemplo

Pesquisando a palavra "erro" em um arquivo de log:

grep "erro" log.txt
Enter fullscreen mode Exit fullscreen mode

Pesquisando de forma recursiva em um diretório:

grep -r "config" /etc
Enter fullscreen mode Exit fullscreen mode

Filtrando a saída de outro comando:

ps aux | grep "apache"
Enter fullscreen mode Exit fullscreen mode

Explicação técnica

  1. Estrutura básica do comando:
   grep [opções] "padrão" [arquivo]
Enter fullscreen mode Exit fullscreen mode
  • padrão: Texto ou expressão regular que você quer localizar.
  • arquivo: Arquivo ou conjunto de arquivos onde será feita a busca.
  1. Principais opções:

    • -i: Ignora maiúsculas e minúsculas.
     grep -i "config" arquivo.txt
    
  • -n: Mostra o número da linha onde o padrão foi encontrado.

     grep -n "erro" log.txt
    
  • -r: Busca recursiva em diretórios.

  • -v: Mostra linhas que não correspondem ao padrão.

     grep -v "sucesso" log.txt
    
  • --color: Destaca o texto encontrado no terminal.

  1. Expressões regulares avançadas:

    • .: Corresponde a qualquer caractere.
     grep "t.st" arquivo.txt
    

    Encontra palavras como "test", "tost" ou "tast".

    • ^: Indica o início de uma linha.
     grep "^Erro" log.txt
    

    Encontra linhas que começam com "Erro".

    • $: Indica o final de uma linha.
     grep "fim$" arquivo.txt
    

    Encontra linhas que terminam com "fim".

    • *: Zero ou mais ocorrências do caractere anterior.
     grep "go*gle" texto.txt
    

    Encontra palavras como "ggle", "gogle", "google", etc.

  2. Combinando com outros comandos:

    O grep é ainda mais poderoso quando usado em pipelines:

    • Encontrando processos específicos:
     ps aux | grep "nginx"
    
  • Buscando logs em tempo real:

     tail -f log.txt | grep "erro"
    

Variações úteis

  1. Contar ocorrências de um padrão:
   grep -c "padrão" arquivo.txt
Enter fullscreen mode Exit fullscreen mode
  1. Mostrar apenas os nomes dos arquivos que contêm o padrão:
   grep -l "main" *.c
Enter fullscreen mode Exit fullscreen mode
  1. Mostrar o contexto ao redor do padrão:

    • -A: Mostra as linhas após o padrão.
    • -B: Mostra as linhas antes do padrão.
    • -C: Mostra as linhas antes e depois.
     grep -C 2 "erro" log.txt
    

O que acontece no sistema?

O grep utiliza uma abordagem eficiente para percorrer arquivos linha por linha, analisando o texto com base no padrão definido. Ele é amplamente utilizado em scripts para automação e análise de dados.


6. rsync - Sincronização de Arquivos e Diretórios


O que faz?

O comando rsync é utilizado para sincronizar arquivos e diretórios de forma eficiente, localmente ou remotamente. Ele copia apenas as diferenças entre a origem e o destino, economizando tempo e largura de banda.


Exemplo

  1. Sincronizando um diretório local:
   rsync -av /origem/ /destino/
Enter fullscreen mode Exit fullscreen mode
  1. Transferindo arquivos para um servidor remoto:
   rsync -av /meus_arquivos/ usuario@servidor:/caminho_destino/
Enter fullscreen mode Exit fullscreen mode
  1. Excluindo arquivos do destino que não existem na origem:
   rsync -av --delete /origem/ /destino/
Enter fullscreen mode Exit fullscreen mode
  1. Sincronizando arquivos entre dois servidores remotos:
   rsync -av usuario1@servidor1:/origem/ usuario2@servidor2:/destino/
Enter fullscreen mode Exit fullscreen mode

Explicação técnica

  1. Estrutura básica do comando:
   rsync [opções] origem destino
Enter fullscreen mode Exit fullscreen mode
  1. Opções principais:

    • -a (archive): Preserva atributos do arquivo (permissões, timestamps, links simbólicos).
    • -v (verbose): Exibe detalhes do processo de cópia.
    • --delete: Remove arquivos no destino que não estão presentes na origem.
    • --progress: Exibe o progresso da transferência de cada arquivo.
    • -z: Comprime os arquivos durante a transferência.
  2. Diretórios de origem e destino:

    • Para copiar apenas o conteúdo de um diretório (não o próprio diretório), adicione / no final:
     rsync -av /origem/ /destino/
    
  • Para copiar o diretório inteiro, não use a barra:

     rsync -av /origem /destino/
    
  1. Sincronização remota: O rsync pode usar SSH para transferências seguras:
   rsync -av -e ssh /origem usuario@servidor:/destino/
Enter fullscreen mode Exit fullscreen mode
  1. Filtros e exclusões: Você pode incluir ou excluir arquivos específicos com:
   rsync -av --exclude='*.tmp' /origem/ /destino/
Enter fullscreen mode Exit fullscreen mode
  • Isso exclui todos os arquivos com extensão .tmp.

Variações úteis

  1. Sincronizar somente arquivos alterados:
   rsync -av --update /origem/ /destino/
Enter fullscreen mode Exit fullscreen mode
  1. Criar backups incrementais:
   rsync -av --backup --backup-dir=/backup_incremental /origem/ /destino/
Enter fullscreen mode Exit fullscreen mode
  1. Sincronizar com verificação de integridade:
   rsync -av --checksum /origem/ /destino/
Enter fullscreen mode Exit fullscreen mode

O que acontece no sistema?

O rsync utiliza um algoritmo de delta para comparar os dados da origem e do destino, transferindo apenas as partes que foram alteradas. Ele também cria um índice para evitar a cópia redundante de arquivos, tornando o processo rápido e eficiente, mesmo para grandes volumes de dados.


Parabéns, jovem mago! 🧙‍♂️ Com esses comandos intermediários, você está cada vez mais próximo de dominar o terminal e liberar todo o seu potencial no Linux. Siga minhas aventuras e dicas mágicas no meu Twitter:https://x.com/davvzin

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay