Соответствие команд MS-DOS командам Linux

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Dragokas, 15 янв 2014.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Команда MS-DOS Аналог в Windows* Команда Linux Описание
    1 ATTRIB ATTRIB chmod Изменение атрибутов файла
    2 BACKUP нет cpio, tar Архивирование данных
    3 CD CD cd Переход в другой каталог
    4 CLS CLS clear, reset Очистка экрана
    5 COMMAND CMD bash, csh, sh Вызов командного интерпретатора (оболочки)
    6 COPY COPY, XCOPY, ROBOCOPY cp, cat Копирование файлов
    7 CTTY, MODE MODE stty Настройка параметров терминала
    8 DATE DATE date Изменение системной даты
    9 DEL DEL rm Удаление файла
    10 DIR DIR dir, ls Отображение списка файлов
    11 ECHO ECHO echo Вывод дубликата данных на экран
    12 EDIT нет vi Вызов текстового редактора
    13 EXIT EXIT exit Закрытие окна командной строки
    14 FC FC, COMP cmp, diff, diff3, sdiff Сравнение содержимого двух файлов
    15 FDISK DISKPART fdisk Создание разделов на винчестере
    16 FIND DIR find Поиск файла
    17 FORMAT FORMAT, DISKPART mformat, mkfs Форматирование диска, создание файловой системы
    18 HELP HELP, /? apropos, man, whatis Вызов справочной системы
    19 MEM SYSTEMINFO free Вывод информации об использовании оперативной памяти
    20 MKDIR MD, MKDIR mkdir Создание каталога
    21 MORE, TYPE MORE, TYPE cat, less, more, xmore Просмотр содержимого файла
    22 MOVE MOVE mv Перемещение файлов
    23 PATH, SET PATH, SET env Установка значений переменных окружения (указание путей к каталогам)
    24 PAUSE PAUSE sleep Пауза в работе
    25 PRINT PRINT, file.txt >PRN Ipr Вывод содержимого файла на печать
    26 RENAME REN, RENAME, MOVE mv Переименование файла
    27 RMDIR RD, RMDIR rmdir Удаление каталога
    28 SORT SORT sort Сортировка строк в текстовом файле
    29 TIME TIME, DATE date Изменение системного времени


    * Аналог в Windows - подразумевается cmd.exe (интерпретатор командной строки Windows).

    Примечание.
    Если посмотреть внимательно, то можно заметить, что многие команды в Linux носят такое же имя, как и в MS DOS. Это следствие того, что у обеих операционных систем был общий предок — операционная система UNIX, да и в дальнейшем влияние на Linux оказывали новые идеи, применяемые в MS DOS/Windows.

    Часть материала взята с источника.
     
    Последнее редактирование: 17 янв 2014
    Phoenix, orderman, Kиpилл и 3 другим нравится это.
  2. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.232
    Симпатии:
    4.980
    А много ли таких команд которые неприменимы к противоположным версиям ОС?
    Понятно,конечно,что sfc для Windows из под Linux не выполнить.

    Но все таки есть ли команды несовместимые или даже противопоказанные для совместного использования в ОС?
    А может есть наоборот полезные команды в Linux которых нет в Windows?
    Преимущества?
     
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Не понимаю, о чем речь.
    sfc - это утилита, а не команда.
    На самом деле половина приведенных здесь названий - это утилиты из %windir%\system32:
    fc.exe, comp.exe, cmd.exe, attrib.exe, xcopy.exe, robocopy.exe, diskpart.exe, sort.exe, systeminfo.exe, print.exe, find.exe

    При этом оболочка bash в Linux зачастую имеет гораздо больший функционал аналогов этих команд.
    И отличный внутренний хелп по каждой. Именно поэтому есть народные умельцы, которые портировали утилиты из линукс в Windows:
    1) UnxUtils (sourceForge - коллективная разработка)
    2) UnixUtils (от Алексея Курякина) - почитайте обзор и примеры, скачать инсталлятор.

    Я не большой знаток Linux, но в следующем обзоре я конкретизирую и расширю перечень, какие из команд cmd.exe являются внутренними, какие внешними утилитами.
     
    Последнее редактирование: 15 янв 2014
    Kиpилл нравится это.
  4. Гимаев Наиль
    Оффлайн

    Гимаев Наиль Пользователь

    Сообщения:
    59
    Симпатии:
    98
    Какая-то не правильная формулировка.
    Интерпретатор DOS - это COMMAND.COM (или COMMAND.EXE, не помню уже точно) из Windows 9x.
    А CMD.EXE - это интерпретатор командной строки Windows.

    Не совместимых полно. Главное отличие в ключах. В windows ключи начинаются со слеша, в POSIX-системах с тире (короткие ключи) или с двух тире (длинные ключи), например -h и --help. Если хочется большей совместимости по командам, то лучше использовать PowerShell-скрипты. Многие команды перекочевали в PowerShell из Linux. И формат ключей тоже. Но писать совместимые скрипты не получится, т.к. скрипты в Linux дают на выходе строку, которую нужно парсить, а команды PowerShell дают объекты, свойства которых можно смотреть и даже вызывать методы объектов.
    Подход, когда программа на входе ждёт строку и отдаёт строку на выходе называется unix-way. Многие программы в Linux не делают всю работу сами, а просят сделать часть работы другие программы. Большинство GUI программ ни делают ни чего. Они позволяют пользователю ввести данные, потом передают эти данных на вход какой-нибудь программе (например в ping), а потом оформляют и показывают пользователю результат полученный на выходе программы. И таких программ которые ожидают, что они находятся в стандартном Linux-окружении не мало. Специально под них в windows придумали Сygwin. Cygwin - это набор программ и библиотек, позволяющий запускать Linux-скрипты под Windows. Недостаток CygWin это избыточность. Для простых задач вполне хватит и GnuWin32.
     
    Phoenix, Kиpилл и Dragokas нравится это.
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.499
    Симпатии:
    4.313
    Да я все крутил-крутил как по-короче, чтоб в таблицу вставить :confused:. В итоге докрутил. (исправлю).

    От себя добавлю, что по синтаксису из одинакового и в Linux, и в Windows есть знак:
    > перенаправление стандартного вывода для записи в файл (создание нового файла, если не существует).
    >> перенаправление стандартного вывода для дозаписи в файл
    2> перенаправить только поток ошибок.
    команда < файл1 - перенаправить содержимое файла1 на вход команды
    2>&1 - соединить поток ошибок со стандартным потоком вывода.
    | канал - перенаправление вывода одной команды на вход другой.
    команда1 && команда2 - команда2 выполнится только, если команда1 выполнится успешно (код=0)
    команда2 || команда2 - команда2 выполнится только, если команда1 выполнится с ошибкой (код возврата не равен 0)

    Есть аналоги, к примеру, знак:
    & (амперсанд) в Windows - это знак ; (точка с запятой) в Linux
    Код (Text):
    Команда1 & Команда2
    Здесь выполняется команда1, после завершения работы которой будет выполнена команда2.

    А вот прямой замены знаку & (из Linux-a) нет. Этот знак позволяет выполнить команду1 в фоне, и не ожидая завершения ее работы сразу же начать выполнение команды2. Придется делать так:
    - для Windows:
    Код (Text):
    start "" программа1 & программа2
    ::или
    start "" cmd /c команда1 & команда2
    - для Linux:
    Код (Text):
    программа1 & программа2
    # или
    команда1 & команда2
    Различия при заключении текста в кавычки: в Linux используют:
    "имя"
    'имя'
    А вот такие фишки работать не будут:
    cd..
    Две точки нельзя писать слитно.
     
    Последнее редактирование: 15 янв 2014
    Phoenix и Kиpилл нравится это.
  6. Гимаев Наиль
    Оффлайн

    Гимаев Наиль Пользователь

    Сообщения:
    59
    Симпатии:
    98
    Тогда исправь ещё строку про dir.
    Во-первых не Is, а ls
    А во-вторых, не "создание" (сравни с созданием каталога), а "показ" (отображение, вывод и т.п.)
     
    Dragokas нравится это.

Поделиться этой страницей