Uma vez que começamos a usar a linha de comando no computador, fica até difícil voltar para a interface gráfica. Não só a manipulação de arquivos se torna mais rápida e fácil, mas há tarefas e funcionalidades que só são possíveis pela linha de comando. Para aqueles que se intimidam com a mudança, esta é uma lista simples dos principais comandos usados no meu primeiro ano com o Linux. Ao lado dos comandos, antes de explicar o que eles fazem, eu adicionei o que eles significam; primeiro porque isso ajuda a recordar melhor os comandos, segundo para ver como não há segredo, eles são bem explicativos. 

Navegação pelo sistema de arquivos

O Linux usa um Sistema de Arquivos Hierárquico (Filesystem Hierarchy Standard ou FHS) para armazenar seus objetos. Tudo começa no root “/” e os arquivos, sejam eles arquivos comuns, diretórios, links, etc, são organizados a partir daí, como uma árvore. 

  • pwd → Print name of Currently Working Directory → mostra “onde você está” no sistema de arquivos.
  • ls → List Directory Contents → mostra o que tem no diretório “onde você está”.
    • ls [caminho] → também é possível listar o conteúdo de outros diretórios, escrevendo seu caminho absoluto ou relativo
      • Exemplo: ls ~/Desktop → independente em qual diretório o seu terminal estiver aberto, ele irá listar os conteúdos do Desktop.
        • Obs.: o Linux mantém o símbolo “~” como atalho para HOME. 
    • ls -a → usar o comando ls com a opção -a (all) lista, também, os arquivos ocultos.
    • ls -l → com a opção -l(long format), o conteúdo do diretório é listado um abaixo do outro e com muito mais informações: tipo de arquivo, permissões, qual usuário criou o arquivo, seu tamanho em bytes, data e hora da última modificação, dentre outros.
    • ls -la → é possível também combinar mais de uma opção; nesse exemplo, o comando tanto tista todos os arquivos (-a) quando os lista em formato longo (-l).
  • cd [caminho] → Change Directory → muda “onde você está” no sistema de arquivos ao usar o comando com o caminho, absoluto ou relativo, do diretório onde quer chegar. 
    • cd .. → O .se refere ao diretório atual e o .. se refere ao diretório pai do ponto onde você está no sistema de arquivos. 

$ cd ~/Desktop 
$ pwd
/home/Desktop
$ cd ..
$ pwd
/home 

Manipulação de arquivos e diretórios

  • mkdir [diretório] → Make Directory → cria um novo diretório (uma nova pasta). 
  • touch [arquivo] → cria um arquivo vazio. 
  • cp [original] [cópia] → Copy → cria uma cópia do arquivo comum.
    • cp -r → cria uma cópia de um diretório. 
    • cp -i → a opção de interativo (-i) pode ser usado como medida contra a sobrescrita de arquivos, pois ele dá o aviso e pede a confirmação se é mesmo essa a ação que deseja fazer. 

$ ls
original.txt
$ cp original.txt copia.txt
$ ls
original.txt copia.txt

  • mv [origem] [destino] → Move → move um arquivo ou diretório, também pode ser usado para renomear o arquivo ou diretório. 

$ ls
texto-01.txt texto-02.txt dir/
$ mv texto-01.txt dir/
$ ls
texto-02.txt dir/
$ cd dir/
$ pwd
/home/dir
$ ls
texto-01.txt texto-A.txt texto-B.txt
$ mv texto-01.txt texto-C.txt
texto-A.txt texto-B.txt texto-C.txt

  • rm [arquivo] → Remove → apaga arquivos. 
    • rm -r [diretório] → apaga arquivos de forma recursiva (-r), usado para apagar diretórios. 
    • rm -rf [diretório] → força (-f) a operação anterior. 

Visualização e edição de arquivos

  • cat [arquivo] → Concatenate files → exibe o conteúdo de um arquivo no terminal a partir da primeira linha. 
    • cat [arquivo fonte] > [arquivo destino] → o output de cat arq-1.txt (o conteúdo do arq-1.txt) sobrescreve o conteúdo do arq-2.txt. 

$cat arq-1.txt 
Arquivo 1
$cat arq-2.txt
Arquivo 2
$cat arq-1.txt > arq-2.txt
$cat arq-1.txt
Arquivo 1
$cat arq-2.txt
Arquivo 1

    • cat [arquivo fonte] >> [arquivo destino] → o output de cat arq-1.txt (o conteúdo do arq-1.txt) é adicionado ao conteúdo do arq-2.txt. 

$cat arq-1.txt 
Arquivo 1
$cat arq-2.txt
Arquivo 2
$cat arq-1.txt > arq-2.txt
$cat arq-1.txt
Arquivo 1
$cat arq-2.txt
Arquivo 2
Arquivo 1

    • bat [arquivo] → funciona como o cat, mas faz uso de cores, tornando o conteúdo de um código, por exemplo, mais legível. Precisa ser instalado. 
  • echo [texto ou variável] → mostra uma linha de texto ou variável de ambiente. 

$echo linha de teste
linha de teste
$echo $HOME
/Users/host

    • echo [conteúdo] > [arquivo] → o output do comando sobrescreve o conteúdo do arquivo.
      • Se o arquivo não existir, ele o cria já com o conteúdo. 
      • Assim como com o cat, echo [conteúdo] >> [arquivo] → adiciona o conteúdo ao arquivo ao invés de o sobrescrever. 
  • nano [arquivo] → abre um editor de texto no terminal; se o arquivo não existir, ele o cria. 

Permissões e usuários

  • chmod [permissões] [arquivo] → Change Mode → muda as permissões de um arquivo
    • Notação simbólica
u User → refere-se ao dono do arquivo ou diretório
g Group  → refere-se ao grupo que é dono do arquivo ou diretório
o Others → outros ou todos, público
a All → refere-se a todos
+ Adiciona permissão
Remove permissão
r Read → pode ler / ver o arquivo
w Write → pode editar o arquivo
x Execute → pode executar o arquivo

 

Então, se você escreveu um programa em bash e quer torná-lo em um script:
$echo echo “Hello, World” > print.sh
$./print.sh
permission denied
$chmod u+x print.sh
$./print.sh
Hello, World

  • sudo [comando] → os comandos são executados pelo super usuário

Gerenciamento de pacotes

Grande parte dos software do Linux são encontrados na Internet em pacotes de arquivos

  • apt → é o gerenciador de pacotes do Linux atual, substituindo o apt-get
    • apt update → atualiza a lista de pacotes disponíveis nos repositórios já instalados, mas não instala nada novo. 
    • apt upgrade → atualiza os pacotes já instalados com suas versões mais recentes, sem apagar outros pacotes. 
    • apt full-upgrade → além de atualizar os pacotes, instala ou apaga pacotes para resolver dependências, se necessário.
    • apt install → instala novos pacotes no sistema. 
    • apt remove → remove pacotes instalados, mas mantém seus arquivos de configuração. 
    • apt purge → remove pacotes instalados junto com seus arquivos de configuração. 
    • apt autoremove → remove pacotes instalados automaticamente como dependências que não são mais necessários. 
    • apt autoclean → limpa o cache de pacotes antigos e obsoletos. 

Então uma rotina comum no meu primeiro ano de Linux era algo como: 
$sudo apt-get update 
$sudo apt full-upgrade 
$sudo apt install [nome do pacote]
$sudo apt autoclean 
$sudo apt autoremove

Busca

  • grep → filtra ou pesquisa por uma sequência. 
    • grep [filtro] [arquivo] → pesquisa por uma sequência em um arquivo. 
    • grep -r [filtro] [diretório] → pesquisa recursivamente por uma sequência em um diretório
    • Normalmente eu uso o grep com o pipeline (|) → o pipeline separa dois comandos e indica que o output do primeiro será o input do segundo

  • whereis [programa] → retorna o caminho de onde esse programa foi instalado. 
  • find [caminho] -name [arquivo] → retorna caminho onde se encontra os arquivos com o nome procurado. 
    • find / -name arquivo.txt → procura arquivos com o nome arquivo.txt a partir da pasta raíz.
    • find . -name arquivo.txt → procura arquivos com o nome arquivo.txt a partir do diretório atual.
    • Opções úteis:
      • -name → diferencia letras maiúsculas e minúsculas (type sensitive). 
      • -iname → não diferencia maiúsculas e minúsculas. 
      • -type f → para retornar apenas arquivos comuns 
      • -type d → para retornar apenas diretórios
      • * → funciona como um coringa
        • find . -name "*.html" → retorna qualquer arquivo de extensão “.html” achados a partir com diretório atual

Rede e conectividade 

  • ifconfig (mais obsoleto) ou ip addr ou ip a → exibem informações sobre as interfaces de rede.
  • ping [endereço] → verifica a conectividade com outro host, enviando pacotes exibindo, no final, quantos pacotes conseguiram chegar e quantos foram perdidos. 
  • traceroute [endereço] → exibe o caminho que os pacotes percorrem até o endereço de destino. 
  • curl [endereço] → faz requisições HTTP/HTTPS para um endereço. Pode ser usado para baixar atualizações ou na construção de um webcrawler: 

Compactação e descompactação

  • tar [opções] [arquivo] → agrupa e comprime ou descomprime arquivos nos formatos “tar” ou “tar.gz”.
    • -c → cria o arquivo. 
    • -x → extrai do arquivo compactado. 
    • -t → lista os arquivos em um arquivo compactado.
  • zip [arquivo] e unzip [arquivo]  → compacta e descompacta arquivos no formato “zip”.

Gerenciamento de processos

  • lsof → List Open Files → mostra arquivos abertos, isso inclui dispositivos que, como dito, também são vistos como arquivos. 
    • lsof -i -P | grep LISTEN | grep :[porta] → esse é o comando que eu mais uso; ele lista os processos escutando na porta especificada: 
      • lsof -i → filtra os resultados para incluir apenas conexões de rede (TCP/UDP); mostra processos que estão enviando ou recebendo dados pela rede. 
      • lsof -P → exibe os números das portas em vez de seus nomes; exemplo: exibe “porta 80” ao invés de “http”. 
      • grep LISTEN → seleciona apenas as portas que estão abertas, “ouvindo” a conexões, ao invés de ESTABLISHED, que indica uma conexão ativa.
      • grep :[porta] → seleciona apenas as linhas com a porta que eu especifico. 
  • kill -9 [id do processo] → encerra forçadamente o processo com o ID passado, que normalmente obtenho com o comando anterior. 
  • top → mostra quais processos estão em execução, seus IDs, quanto de memória estão usando e a quem eles pertencem. 
    • htop → uma ferramenta que funciona como o top, mas seu output é mostrado com cores, deixando as informações mais legíveis. Assim como o bat, precisa ser instalado: 

$sudo apt install htop

Outros

  • ^ + C → interrompe o comando em execução. 
  • q, [ESC] → usado para sair de ferramentas. 
  • ^ + R → busca reversa no histórico de comandos. 
  • man [comando] → exibe o manual completo de um comando. 
  • [comando] --help → exibe informações resumidas sobre um comando. 

Fontes

  1. Guia com mais de 500 comandos do Linux (Explicados)
  2. The Linux Command Line Fifth Internet Edition by William Shotts
  3. Hierarquia de Diretórios no Linux [Guia Básico]
  4. Qual é a diferença entre APT e APT-GET?
  5. LS command in Unix
  6. Why does ‘mv’ not need ‘-r’ to work with directories, but ‘rm’ and ‘cp’ do?
  7. ifconfig vs ip Qual é a diferença e comparação da configuração de rede?
  8. Comando ip no Linux (manipula interface de rede) [Guia Básico]
  9. O que é .tar.gz e como abrir e compactar nesse formato de arquivo
  10. Manage Your Linux System Resources With These 7 Terminal Commands

Autor

Views: 39