Сответствие консольных команд Windows и Linux.
При переходе с Windows на Linux и наоборот, для тех, кто знаком с командной строкой, может пригодиться небольшая справка по соответствию консольных команд этих операционных систем. Естественно, полного соответствия, за редким исключением, не бывает, и в приведенной таблице собраны команды, идентичные по результатам выполнения или функционально близкие.
Соответствие команд CMD Windows командам Linux
Описание | Команда CMD Windows | Команда Linux |
Вызов справочной системы | HELP | apropos, man, whatis |
Вызов командного интерпретатора (оболочки) | CMD | bash, csh, sh |
Очистка экрана | CLS | clear, reset |
Вывод сообщения на экран | ECHO | echo |
Пауза в работе | PAUSE | sleep |
Настройка параметров терминала | MODE | stty |
Установка значений переменных окружения (указание путей к каталогам) | PATH, SET, SETx | env, set |
Изменение системной даты | DATE | date |
Изменение системного времени | TIME | date |
Выход из командной строки | EXIT | exit |
Работа с файлами и каталогами | ||
Отображение списка файлов и каталогов | DIR | dir, ls |
Создание каталога | MKDIR | mkdir |
Удаление каталога | RMDIR | rmdir |
Удаление файла | DEL, ERASE | rm |
Переход в другой каталог | CD | cd |
Копирование файлов или каталогов | COPY, XCOPY | cp |
Переименование файла | REN, RENAME | mv |
Перемещение файлов | MOVE | mv |
Поиск файла | WHERE | find, locate |
Вывод на экран содержимого файла | TYPE, MORE | cat, less, more |
Сравнение содержимого двух файлов | COMP, FC | cmp, diff, diff3, sdiff |
Сортировка строк в текстовом файле | SORT | sort |
Изменение атрибутов файла | ATTRIB | chmod |
Создание символьной ссылки на файл или каталог | MKLINK | ln |
Резервное копирование данных | ROBOCOPY | cpio, tar |
Вызов текстового редактора | EDIT (нет в Windows Vista и старше) | vi |
Работа с томами и разделами | ||
Создание разделов | FDISK | fdisk |
Управление разделами | DISKPART | parted, partx |
Форматирование диска, создание файловой системы | DISKPART, FORMAT | mformat, mkfs |
Проверка файловой системы | CHKDSK | fsck |
Управление системой. | ||
Отобразить список процессов | TASKLIST, QUERY PROCESS | ps |
Уничтожить процесс | TASKKILL | kill, killall |
Перезагрузить компьютер | SHUTDOWN | shutdown, reboot |
Выключить компьютер | SHUTDOWN | shutdown, halt |
Выполнить команду от имени другого пользователя | RUNAS | sudo |
Отобразить имя компьютера | HOSTNAME | hostname |
Пользователи и группы. | ||
Создать нового пользователя | NET USER | useradd |
Изменить параметры пользователя | NET USER | usermod |
Изменить пароль пользователя | NET USER | passwd |
Удалить пользователя | NET USER | userdel |
Создать новую группу пользователей | NET GROUP | groupadd |
Изменить параметры группы | NET GROUP | groupmod |
Удалить группу | NET GROUP | groupdel |
Отобразить список активных пользователей | QUERY USER | users |
Работа с сетью. | ||
Работа с таблицей соответствия IP и MAC адресов ARP | arp | arp |
Конфигурация протокола IP | IPCONFIG, NETSH | ifconfig, ip |
Работа с таблицей маршрутизации | ROUTE | route |
Опрос узла по протоколу ICMP | PING | ping |
Клиент Telnet | TELNET | telnet |
Работа с DNS-сервером в интерактивном режиме | NSLOOKUP | dig, nslookup |
Трассировка маршрута к удаленному узлу | TRACERT | traceroute |
Отобразить статистику сетевых соединений | NETSTAT | netstat |
Строчные и заглавные буквы для команд командной строки Windows воспринимаются одинаково, ECHO и echo — будет интерпретировано как одна и та же команда. При работе в командной строке Linux соблюдение регистра символов обязательно.
Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети
Источник
Оказывается, в Windows тоже есть перенаправления, пайпы, свой /dev, /dev/null, /etc/fstab, grub.cfg
Разделы можно пропускать без ущерба для понимания, ровно как и любые непонятные/неинтересные места в них.
Перенаправления
Да, в Windows есть аналог многоликой команды cat, которая является одной из команд, выражающих суть UNIX’а. Это команда type. Она принимает один или несколько аргументов — имена файлов.
Если нужно, чтоб type читал с экрана (например, если нужно создать файл, на лету наполнив его содержимым), то нужно набрать
con — это аналог /dev/tty (подробнее об этом в следующем разделе).
То есть вышеприведённая команда является аналогом UNIX’овой команды cat /dev/tty > file или cat — > file или просто cat > file .
Когда вы закончите набирать файл, нажмите на новой строке Ctrl-Z и Enter. Это признак конца файла, аналог Ctrl-D в UNIX’е.
Сейчас будет куча технических подробностей про Ctrl-D и Ctrl-Z, их можно пропустить и перейти к следующему разделу.
В UNIX’е, когда юзер нажимает Ctrl-D, эта комбинация не обрабатывается самим приложением (например, в GNU/Linux в tty1 она обрабатывается ядром, если включен CONFIG_VT [на сегодняшний день (2012) CONFIG_VT включен по дефолту на десктопе, хотя есть планы по её выкидыванию]). А запущенное приложение получает EOF (End Of File, конец файла) в чистом виде (а не саму комбинацию клавиш или символ Ctrl-D). То есть как если бы ввод просто закончился. Иными словами, getchar в приложении возвращает EOF, а read — 0.
В Windows то же самое, Ctrl-Z и Enter заставляют getchar вернуть EOF.
/dev/null, /dev/tty и т. д.
Аналог /dev/null — это устройство nul. Причём оно как бы присутствует в каждой папке. Это тянется со времён старых версий DOS’а, когда не было папок.
Теперь о других устройствах. Аналог /dev/tty — это con, от слова console. Причём con — это аналог именно /dev/tty , а не /dev/console , так как в Windows у каждого окна командной строки con свой.
Аналоги /dev/ttyS0 , /dev/ttyS1 , /dev/ttyS2 , /dev/ttyS3 — это com1, com2, com3, com4 (но винде есть ещё com5 и т. д.). Это устройства serial console, они же COM-порты, они же последовательные порты.
Обычными средствами винды нельзя создать файл или папку с именем con или nul и т. д. Но можно исхитриться: mkdir \\.\c:\con .
Есть шуточная версия того, почему в Windows трудно создать файл с именем con. А именно: у Билла Гейтса было прозвище con, то есть ботаник. Подробнее см., например, здесь: vk.com/wall-31439745_2474 (естественно, этой информации нельзя доверять).
/dev, /dev/sda1, .
После прочтения предыдущего раздела у вас мог возникнуть вопрос: и что, всё? /dev/null , /dev/tty и ещё несколько штук девайсов? А где /dev/sda1 и прочие бесчисленные устройства? Ведь в GNU/Linux’е папка /dev может содержать сотни устройств!
Ответ таков: да, в Windows есть целая папка с такими устройствами. Это \Device . Её сложно посмотреть через обычный пользовательский интерфейс. Там лежат устройства типа \Device\HarddiskVolume1 — это аналог GNU/Linux’ового /dev/sda1 .
Эти устройства появились в NT-шных версиях Windows’а и не тянутся с DOS’овых времён, в отличие от устройств из предыдущего раздела.
Пайпы, они же конвееры
cmd1 | cmd2 , так же, как и в UNIX.
/etc/fstab
Его аналог — это ветка HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices в реестре Windows (да, да, в винде, как и в UNIX, есть понятие монтирования). Кстати, если у вас до этого были проблемы с переносом установленного Windows’а с одного раздела на другой, или с переименованием дисков в Windows’е или с чем-то ещё подобным, то — вот оно, решение!
Сейчас будет рассказ для тех, кто задумал перенести винду с одного раздела на другой. Остальные могут его пропустить и перейти к следующему разделу.
Если, скажем, вы перенесли Windows с одного раздела на другой, то после этого нужно сделать два шага: разобраться с загрузчиком и его конфигами (об этом в следующем разделе) и подредактировать этот самый ключ реестра (в общем-то так же, как и в GNU/Linux’е: GRUB + fstab). Если ключ не подредактировать, то винда загрузиться не сможет, так начнёт грузиться с нового раздела (то есть того, на который мы копирнули винду), а продолжит — со старого (то есть того, с которого мы копирнули винду). Все системные вещи будут загружены с нового, а всякие Касперские — со старого. Итак, нужно удалить из этой ветки все записи, кроме записи «(По умолчанию)». Тогда винда забудет всё, что знала о разделах и при следующем запуске будет считать своим разделом тот, с которого запустилась (что нам и надо). Короче говоря, автоматически определит разделы.
Правда, тут возникает вопрос: а как подредактировать реестр какой-нибудь винды, не загружаясь в неё? Хм, я для этого использовал Windows PE, который входил в комплект пиратской сборки винды, поэтому я подробности рассказывать не буду. (См. другие способы в этой ветке: geektimes.ru/post/156749/#comment_5355987 от EndUser.)
Ещё несколько вариантов:
- Почистить реестр, выключить компьютер (можно «жёстко»), а потом копирнуть винду. Однако, я это не проверял. Не факт, что винда даст вам отредактировать этот ключ реестра и что она не заполнит его снова при выключении
- Отредактировать реестр, и сразу же, не выключая комп, копирнуть запущенную винду на другой раздел. Но и это тоже не проверялось
- Если вы копируете винду с одного физического диска на другой, можно после копирования вынуть из компьютера старый физический диск и загрузиться в новый хотя бы один раз (чтоб винда обновила MountedDevices). Потом можно вставить старый диск обратно. Такой же трюк можно проделать даже с разделами на одном физическом диске: просто временно удалить старый раздел, а потом восстановить его обратно (ясно, что делать это нужно крайне осторожно). Ну и конечно же, всё это не проверялось :))
- Смонтировать реестр Windows в GNU/Linux как winregfs
И наконец: использовать разные программы для копирования/бекапов разделов (типа Acronis) бесполезно: все они не меняют реестр (скорее всего), поэтому работать в такой ситуации (копирование винды в пределах одного компа) не будут.
И ещё: весь материал этого раздела проверялся только на Windows XP.
/boot/grub/grub.cfg
В Windows XP его аналог — это файл boot.ini в корне раздела с Windows, а в Windows 7 — это Windows Boot Manager.
Мощный командный интерпретатор
В стандартном интерпретаторе (то есть в cmd.exe) есть много разных фич типа ветвления, так же, как и в UNIX’овых интерпретаторах. Там даже есть дебаговый вывод (а-ля set -x ), а именно echo on , правда он включен по дефолту и обычно первым действием в скрипте его отключают ( echo off , разумеется).
Вообще, виндовая команда echo крайне непоследовательна: её действие довольно странным образом зависит от аргумента:
cmd.exe | bash |
---|---|
echo foo | echo foo |
echo on | set -x |
echo off | set +x |
echo | shopt -o xtrace |
После лицезрения этой таблицы все юниксоиды, конечно же, схватились за голову и сказали: «Что за идиоты проектировали винду?» Впрочем, в UNIX’е тоже не всё гладко: с какой стати set -x включает дебаг, а set +x выключает его. То же самое относится к остальным режимам, включаемым командой set.
Ах да, я же обещал мощный командный интерпретатор. 🙂 cmd.exe таковым, конечно же, не является. А вот PowerShell — является. Одной из особенностей PowerShell’а является то, что он «понимает» обычные UNIX’овые команды, например, ls. Правда, на самом деле эта команда похожа на UNIX’овую лишь своим названием и идеей, опции у этого ls всё равно совсем другие. ls — это всего лишь один из алиасов на Get-ChildItem. А ещё в винде есть полноценный IDE для написания PowerShell-скриптов с визуальным отладчиком! Вы можете себе такое представить в UNIX’е? Да, есть конечно bashdb, но визуальный отладчик, конечно же, удобнее.
Спасибо Evgeny_Shiryaev, 6opoDuJIo, amdf, easyman, EndUser, risik, NoOne и aik за ценные замечания и исправления ошибок.
Источник