dir es ls -l, type es cat, findstr es grep, ipconfig es ip addr, tasklist es ps aux y netstat -ano es ss -tulpn. La tabla completa está abajo, pero las equivalencias son la parte fácil: lo que de verdad rompe tu primera semana son las mayúsculas, la papelera que no existe y los finales de línea CRLF.
| Windows | Linux |
|---|---|
dir |
ls -l |
cd |
cd, y pwd para saber dónde estás |
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 lista los archivos de aquí con sus tamaños→ 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
La primera columna son los permisos; una d al principio indica directorio. ls a secas imprime solo nombres, -l añade tamaño y fecha, -a muestra los archivos con punto inicial: eso es lo que aquí significa "oculto".
2. type → cat
$ clai muéstrame el contenido de notes.txt→ cat notes.txtalphabetagamma
cat vuelca el archivo entero. Para uno largo usa less (se sale con q), y head o tail cuando solo te interesan los extremos.
3. findstr → grep
$ clai busca la palabra ERROR en todos los archivos de esta carpeta→ grep -rn "ERROR" ../logs/app.log:1:ERROR timeout after 30s
-r recorre los subdirectorios y -n imprime el número de línea. Las mayúsculas cuentan: ERROR y error son palabras distintas; añade -i si te da igual.
4. ipconfig → ip addr
$ clai muestra la dirección ip de mi interfaz de red→ 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 es la dirección IPv4 y link/ether la MAC. La interfaz no siempre se llama eth0: en una máquina real puede ser enp5s0 o wlan0, y ip addr sin argumentos las lista todas.
5. tasklist → ps
$ clai muestra los procesos en marcha con sus identificadores→ ps -o pid,commPID COMMAND 1 sh 13 sleep 14 ps
ps a secas solo muestra tu sesión. La lista completa es ps aux, y taskkill /PID se convierte en kill <pid>.
6. netstat -ano → ss -tulpn
$ clai muestra qué está escuchando en el puerto 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))
ss sustituye a netstat, que las distribuciones modernas ya no incluyen. Los flags se leen así: -t tcp, -u udp, -l solo a la escucha, -p proceso, -n sin resolver nombres. La columna Process es el equivalente directo del PID de netstat -ano.
Gotchas
- Las mayúsculas importan en todas partes.
Notes.txtynotes.txtson dos archivos distintos, yLSno es un comando. Es la razón número uno de que un script "funcionaba en mi máquina". - No hay papelera.
rmborra de inmediato y para siempre, mientras quedelal menos tenía a dónde ir. Lista los objetivos conlsy el mismo patrón antes de lanzarrm -r. - Un script escrito en Windows no arranca. Los finales de línea CRLF dan
bash: ./crlf.sh: /bin/sh^M: bad interpreter: No such file or directorycon código de salida 126. Se arregla consed -i 's/\r$//' script.shy cambiando el editor a LF.
Related questions
¿Qué versión tengo? cat /etc/os-release da la distribución y su versión, uname -srm da el núcleo y la arquitectura. Juntos sustituyen a systeminfo.
¿Dónde está Program Files? Los binarios viven en /usr/bin, sus datos en /usr/share, la configuración en /etc y los paquetes de terceros a menudo en /opt. No hay una única carpeta de programas.
¿Qué reemplaza al Explorador? mc te da un gestor de archivos de dos paneles en el terminal, familiar para quien recuerde Far o Norton Commander.
See also
- sed -i no funciona en macOS
- grep recursivo saltando node_modules
- Comprobar si un puerto está abierto
CliAI te deja describir la tarea como ya la piensas y muestra el comando de Linux antes de ejecutarlo. Instálalo en una línea.