dir — это ls -l, type — cat, findstr — grep, ipconfig — ip addr, tasklist — ps aux, а netstat -ano — ss -tulpn. Полная таблица ниже, но соответствия — простая часть. Ломают первую неделю три другие вещи: важность регистра, отсутствие корзины и переводы строк CRLF.
| Windows | Linux |
|---|---|
dir |
ls -l |
cd |
cd, и pwd — чтобы понять, где вы |
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 покажи файлы здесь с размерами→ 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
Первая колонка — права, d в начале означает каталог. Просто ls печатает только имена, -l добавляет размер и дату, -a показывает файлы с точкой в начале — это и есть здешние «скрытые».
2. type → cat
$ clai покажи содержимое файла notes.txt→ cat notes.txtalphabetagamma
cat выводит файл целиком. Для длинного нужен less (выход по q), а если интересны только начало или конец — head и tail.
3. findstr → grep
$ clai найди слово ERROR во всех файлах в этой папке→ grep -rn "ERROR" ../logs/app.log:1:ERROR timeout after 30s
-r идёт вглубь по подкаталогам, -n печатает номера строк. Регистр важен: ERROR и error — разные слова, для поиска без учёта регистра добавьте -i.
4. ipconfig → ip addr
$ clai покажи ip-адрес сетевого интерфейса→ 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 — адрес IPv4, link/ether — MAC. Интерфейс не всегда называется eth0: на живой машине это может быть enp5s0 или wlan0, а ip addr без аргумента покажет все сразу.
5. tasklist → ps
$ clai покажи запущенные процессы с их номерами→ ps -o pid,commPID COMMAND 1 sh 13 sleep 14 ps
Голый ps показывает только вашу сессию. Полный список — ps aux, а taskkill /PID превращается в kill <pid>.
6. netstat -ano → ss -tulpn
$ clai покажи кто слушает порт 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 заменяет netstat, которого в новых дистрибутивах просто нет. Флаги читаются так: -t tcp, -u udp, -l только слушающие, -p процесс, -n не резолвить имена. Колонка Process — прямой аналог PID из netstat -ano.
Gotchas
- Регистр важен везде.
Notes.txtиnotes.txt— два разных файла, аLS— не команда. Это причина номер один, по которой скрипт «работал на моей машине». - Корзины нет.
rmудаляет сразу и насовсем,delхотя бы отправлял в корзину. Передrm -rпосмотрите тот же шаблон черезls. - Скрипт, написанный в Windows, не запустится. Переводы строк CRLF дают
bash: ./crlf.sh: /bin/sh^M: bad interpreter: No such file or directoryи код возврата 126. Лечится командойsed -i 's/\r$//' script.sh, а в редакторе нужно переключиться на LF.
Related questions
Какая у меня версия системы? cat /etc/os-release даёт название дистрибутива и версию, uname -srm — ядро и архитектуру. Вместе это заменяет systeminfo.
Где Program Files? Программы лежат в /usr/bin, их данные — в /usr/share, настройки — в /etc, сторонние пакеты часто в /opt. Единой папки с программами нет.
Чем заменить проводник? mc — двухпанельный файловый менеджер в терминале, знакомый всем, кто помнит Far и Norton Commander.
See also
CliAI позволяет описывать задачу так, как вы привыкли думать о ней, и показывает команду Linux до запуска. Поставить одной строкой.