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.
- Exemplo:
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 oapt-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 coringafind . -name "*.html"
→ retorna qualquer arquivo de extensão “.html” achados a partir com diretório atual
Rede e conectividade
ifconfig
(mais obsoleto) ouip addr
ouip 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]
eunzip [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 deESTABLISHED
, 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
- Guia com mais de 500 comandos do Linux (Explicados)
- The Linux Command Line Fifth Internet Edition by William Shotts
- Hierarquia de Diretórios no Linux [Guia Básico]
- Qual é a diferença entre APT e APT-GET?
- LS command in Unix
- Why does ‘mv’ not need ‘-r’ to work with directories, but ‘rm’ and ‘cp’ do?
- ifconfig vs ip Qual é a diferença e comparação da configuração de rede?
- Comando ip no Linux (manipula interface de rede) [Guia Básico]
- O que é .tar.gz e como abrir e compactar nesse formato de arquivo
- Manage Your Linux System Resources With These 7 Terminal Commands
Views: 38