CLI AI

Comandos do Windows e o equivalente no Linux

2026-07-13

dir é ls -l, type é cat, findstr é grep, ipconfig é ip addr, tasklist é ps aux e netstat -ano é ss -tulpn. A tabela completa está abaixo, mas o mapeamento é a parte fácil: o que realmente quebra sua primeira semana são as maiúsculas, a lixeira que não existe e as quebras de linha CRLF.

Windows Linux
dir ls -l
cd cd, e pwd para saber onde você está
type cat
findstr grep
copy / move / del cp / mv / rm
md / rd mkdir / rmdir
cls clear
tasklist / taskkill ps aux / kill
ipconfig ip addr
netstat -ano ss -tulpn
where command -v
systeminfo uname -a, /etc/os-release
shutdown /r reboot

1. dir → ls -l

clai
$ clai liste os arquivos daqui com tamanho→ ls -ltotal 12-rw-r--r--    1 root     root            23 Aug 27 15:38 hosts.csvdrwxr-xr-x    2 root     root          4096 Aug 27 15:38 logs-rw-r--r--    1 root     root            17 Aug 27 15:38 notes.txt

A primeira coluna são as permissões; um d no início indica diretório. O ls puro imprime só nomes, -l acrescenta tamanho e data, -a mostra os arquivos que começam com ponto — é isso que significa "oculto" aqui.

2. type → cat

clai
$ clai mostre o conteúdo do notes.txt→ cat notes.txtalphabetagamma

O cat despeja o arquivo inteiro. Para um arquivo longo use less (sai com q), e head ou tail quando só interessam as pontas.

3. findstr → grep

clai
$ clai procure a palavra ERROR em todos os arquivos desta pasta→ grep -rn "ERROR" ../logs/app.log:1:ERROR timeout after 30s

-r percorre os subdiretórios e -n imprime o número da linha. Maiúsculas contam: ERROR e error são palavras diferentes; use -i se tanto faz.

4. ipconfig → ip addr

clai
$ clai mostre o endereço ip da minha interface de rede→ ip addr show eth0122: eth0@if123: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP     link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0       valid_lft forever preferred_lft forever

inet é o endereço IPv4 e link/ether é o MAC. A interface nem sempre se chama eth0: numa máquina real pode ser enp5s0 ou wlan0, e ip addr sem argumento lista todas.

5. tasklist → ps

clai
$ clai mostre os processos em execução com seus números→ ps -o pid,commPID   COMMAND    1 sh   13 sleep   14 ps

O ps sozinho mostra apenas a sua sessão. A lista completa é ps aux, e taskkill /PID vira kill <pid>.

6. netstat -ano → ss -tulpn

clai
$ clai mostre quem está escutando na porta 8099→ ss -tulpn 'sport = :8099'Netid State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess                              tcp   LISTEN 0      5          127.0.0.1:8099      0.0.0.0:*    users:(("python3",pid=1027487,fd=3))

O ss substitui o netstat, que as distribuições novas não trazem mais. Os flags se leem assim: -t tcp, -u udp, -l só escutando, -p processo, -n sem resolver nomes. A coluna Process é o equivalente direto do PID do netstat -ano.

Gotchas

  • Maiúsculas importam em todo lugar. Notes.txt e notes.txt são dois arquivos diferentes, e LS não é um comando. É o motivo número um de um script "funcionava na minha máquina".
  • Não existe lixeira. O rm apaga na hora e para sempre, enquanto o del pelo menos tinha para onde ir. Liste os alvos com ls usando o mesmo padrão antes de rodar rm -r.
  • Script escrito no Windows não roda. Quebras de linha CRLF produzem bash: ./crlf.sh: /bin/sh^M: bad interpreter: No such file or directory com código de saída 126. Conserta-se com sed -i 's/\r$//' script.sh e trocando o editor para LF.

Related questions

Qual versão eu tenho? cat /etc/os-release dá a distribuição e a versão, uname -srm dá o kernel e a arquitetura. Juntos substituem o systeminfo.

Onde fica o Program Files? Os binários ficam em /usr/bin, os dados em /usr/share, a configuração em /etc e pacotes de terceiros muitas vezes em /opt. Não há uma pasta única de programas.

O que substitui o Explorer? O mc oferece um gerenciador de arquivos de dois painéis no terminal, familiar para quem lembra do Far ou do Norton Commander.

See also

CliAI deixa você descrever a tarefa do jeito que já pensa nela e mostra o comando Linux antes de rodar. Instale em uma linha.