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 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 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 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 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 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 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.txtenotes.txtsão dois arquivos diferentes, eLSnão é um comando. É o motivo número um de um script "funcionava na minha máquina". - Não existe lixeira. O
rmapaga na hora e para sempre, enquanto odelpelo menos tinha para onde ir. Liste os alvos comlsusando o mesmo padrão antes de rodarrm -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 directorycom código de saída 126. Conserta-se comsed -i 's/\r$//' script.she 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.