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

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,011
Реакции
5,815
Баллы
648


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

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

Часть материала взята с источника.
 
Последнее редактирование:

Кирилл

Команда форума
Администратор
Сообщения
13,687
Реакции
6,072
Баллы
913
А много ли таких команд которые неприменимы к противоположным версиям ОС?
Понятно,конечно,что sfc для Windows из под Linux не выполнить.

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

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,011
Реакции
5,815
Баллы
648
Но все таки есть ли команды несовместимые или даже противопоказанные для совместного использования в ОС?
Не понимаю, о чем речь.
Понятно,конечно,что sfc для Windows из под Linux не выполнить.
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 являются внутренними, какие внешними утилитами.
 
Последнее редактирование:

Гимаев Наиль

Активный пользователь
Сообщения
59
Реакции
98
Баллы
188
* Аналог в Windows - подразумевается cmd.exe (интерпретатор MS-DOS).
Какая-то не правильная формулировка.
Интерпретатор 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.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,011
Реакции
5,815
Баллы
648
Какая-то не правильная формулировка.
Интерпретатор DOS - это COMMAND.COM (или COMMAND.EXE, не помню уже точно) из Windows 9x.
А CMD.EXE - это интерпретатор командной строки Windows.
Да я все крутил-крутил как по-короче, чтоб в таблицу вставить :confused:. В итоге докрутил. (исправлю).

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

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

А вот прямой замены знаку & (из Linux-a) нет. Этот знак позволяет выполнить команду1 в фоне, и не ожидая завершения ее работы сразу же начать выполнение команды2. Придется делать так:
- для Windows:
Код:
start "" программа1 & программа2
::или
start "" cmd /c команда1 & команда2
- для Linux:
Код:
программа1 & программа2
# или
команда1 & команда2
Различия при заключении текста в кавычки: в Linux используют:
"имя"
'имя'
Различие в использовании символов ' и " состоит в том, что внутри одинарных кавычек теряют специальное значение все символы, а внутри двойных кавычек - все специальные символы кроме $, ' и \ (знака доллара, одинарных кавычек и обратного слэша).
А вот такие фишки работать не будут:
cd..
Две точки нельзя писать слитно.
 
Последнее редактирование:

Гимаев Наиль

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