Отличие командной строки windows от linux

Обновлено: 25.06.2024

Оригинал: Terminals, shells, consoles, and command lines
Автор: Seth Kenlon (Red Hat).
Дата публикации: 23 марта 2020 г.
Перевод: В.Костромин
Дата перевода: 12 мая 2020 г.

Терминалы, оболочки, консоли и командные строки связаны, но эти термины не являются синонимами. Сет Кенлон объясняет различия.

Если вы изучаете Linux или Unix, вы могли встречать термины «терминал», «командная строка», «оболочка» и «консоль», и у вас может быть справедливое замешательство относительно того, что есть что, и обозначают ли эти слова одно и то же. Определенно эти термины связаны, но есть нюансы и различия, которые могут иметь важные последствия. В этой статье вы найдете необходимые разъяснения.

Как работают компьютеры

Когда компьютер запускается, ядро ОС распознает его физические устройства и обеспечивает возможность взаимодействия между ними. Существует много разных ядер: давным-давно было ядро Unix, ядро Sun, ядро BSD, а позже появилось ядро Linux, ядро Hurd, ядро Mach и ядро NT.

И это еще не всё. Существуют специализированные ядра для различных типов вычислительных устройств. Некоторые из них совсем простые, другие очень сложные. Все зависит от потребностей устройств, на которых они запускаются.

Самый базовый набор инструкций для компьютера поддерживает его во включенном состоянии. Драйверы устройств, управляемые ядром, следят за вентиляторами, предотвращая перегрев, мониторят использование дискового пространства, управляют состоянием оперативной памяти, обнаруживают новые устройства и так далее. Самые первые компьютеры в состоянии простоя делали даже меньше этого, и каждая программа, которая запускалась на ранних моделях компьютеров, была единственной целью использования компьютера, по крайней мере на то время, пока эта программа (в виде колоды перфокарт) исполнялась. Возможность запуска фонового задания или двух приложений одновременно была невообразимой. Если вы хотели запустить два процесса одновременно, вы должны были использовать второй компьютер.

Интерактивная оболочка

Однако по мере развития комьютеров, некоторые ученые осознали, что использование компьютера для выполнения одной задачи при каждом его запуске является неэффективным и, с развитием технологий, нерациональным использованием его мощности. Поэтому они разработали нечто, что они назвали оболочкой - shell.

Существуют разные версии того, почему был выбран термин «оболочка», самое правдоподобное и удовлетворительное объяснение состоит в том, что интерфейс оболочки окружает ядро так же, как ореховая скорлупа окружает орех. Оболочка - это та часть, с которой взаимодействует пользователь, а запросы на вычислительную мощность управляются ядром.

Когда мы говорим об оболочке, важно понимать, что ее появление определило новый этап в развитии компьютерных технологий. Оболочка превратила компьютер из изолированного прибора в мощный инструмент, который может менять свою функцию по требованию. Компьютеры стали интерактивными. Даже в современных компьютерах оболочка - это самый низкий уровень взаимодействия пользователя с компьютером. Это самый прямой способ проинструктировать компьютер о том, что вы хотите делать дальше, поэтому умение использовать возможности оболочки является бесценным знанием для опытных пользователей.

Командная строка

Когда вы обращаетесь к оболочке, вы видите вначале приглашение. Некоторые называют приглашение оболочки командной строкой, что понятно: приглашение появляется в строке, в которой вы можете ввести (набрать, напечатать) какую-то команду.

Одно из заметных различий между оболочками заключается в синтаксисе. Например, в Bash, Zsh, Ash и Ksh значения переменных задаются с помощью знака равенства:

В Tcsh, однако, используется ключевое слово set :

Помощь

На первый взгляд интерфейс оболочки не очень удобен для пользователя, потому что кажется, что вы должны заранее точно знать, что вы хотите делать с помощью оболочки. Это не то, к чему привыкло большинство современных компьютерщиков, потому что графические приложения по крайней мере предоставляют пользователям кнопки и меню, которые можно исследовать, даже не зная точно, что делает приложение.

Даже если вы введете команду help в ответ на приглашение Bash, вы получите только список встроенных команд, только немногие из которых могут показаться полезными для дальнейшего взаимодействия с оболочкой.

В этом смысле оболочка не похожа на привычные для вас приложения. Она действительно для большинства просто командная строка: строка, в которой вы можете набрать какую-то команду. Пользователь должен знать, какие команды доступны, и предполагается, что пользователь, открывающий оболочку, ознакомился по крайней мере с самыми простыми командами, чтобы с их помощью он мог больше узнать о системе.

Поскольку пользователь не всегда имеет даже необходимый минимум знаний, в публичных системах заменяют не всегда полезную команду help на что-то более информативное, например, на shellp.

Консоль

В Linux или BSD вы можете получить доступ к оболочке не запуская графическое окружение вообще (то есть оболочка - это все, что будет вам доступно), либо набрав сочетание клавиш Alt+Shift с одной из функциональных клавиш от F2 до F6. Каждая из этих функциональных клавиш открывает для вас экран, предоставляемый getty (или agetty, или еще чем-то подобным, в зависимости от того, что используется в вашем дистрибутиве). На этом экране отображается приглашение для входа в оболочку, и этот экран часто называют консолью. Строго говоря, это сеанс getty или эмулированное tty-устройство.

На Mac нет никакого способа отказаться от запуска графического интерфейса в работающей системе, хотя во время загрузки вы можете использовать специальные (snag) клавиши для загрузки в однопользовательском режиме. В однопользовательском режиме в Mac OS отключены многие функции, в том числе управление пользователями, поэтому обычно это не рекомендуется.

Наиболее распространенный способ доступа к оболочке на современных компьютерах - это открыть эмулятор терминала, в котором запускается оболочка.

Терминал

Терминал исторически был физическим устройством, которое использовалось еще до того, как появилась концепция персонального компьютера (ПК). Терминал был в чем-то похож на современный компьютер, но на самом деле это был просто экран (иногда даже просто принтер!) с подключенной клавиатурой. Окно терминала на современном компьютере является эмуляцией этого исторического объекта, и вы обычно можете запустить любую оболочку внутри эмулятора терминала.

Например, на рабочем столе Linux вы можете запустить один экземпляр терминала GNOME (GNOME Terminal), который будет служить окном для доступа к оболочке Bash, и другой экземпляр терминала GNOME, который послужит окном в оболочку Tcsh.

A console with two shells open

Сам терминал служит только для запуска работающей оболочки. Эмулятор терминала не обрабатывает данные и не запускает команды, хотя он может добавлять функции пользовательского интерфейса, такие как специальные сочетания клавиш, возможность перетаскивания файлов в оболочку, цветовые темы и т.д.

Существует множество эмуляторов терминала для любой операционной системы. Настольные компьютеры с Linux и BSD поставляются с xterm в качестве запасного варианта и обычно включают современный эмулятор для ежедневного использования (например, GNOME Terminal, Konsole и т.д.). Mac OS поставляется с проприетарным эмулятором терминала, но существует намного лучшая замена - iTerm2 (поставляется под лицензией GPLv2).

Windows по умолчанию включает PowerShell, но существует много возможностей замены этого эмулятора программами с открытым кодом, такими как ConEmu или Cmder.


В наши дни рядовому пользователю очень трудно представить, как можно управлять компьютером без использования мышки, только одной клавиатурой. Современные операционные системы имеют мощный графический интерфейс. Несколько кликов мыши и все работает.


Между тем, были времена, когда компьютером управляли только с помощью клавиатуры, набирая текстовые команды на экране монитора.

Но, и в наши дни существует ряд задач, которые выполнить с помощью графического интерфейса не всегда представляется возможным или не всегда удобно.

Например, установка некоторых системных утилит, внесение настроек в операционную систему, настройка веб-серверов и.т.д. просто не возможна без командной строки.

Командная строка (консоль или Терминал) – это специальная программа, которая позволяет управлять компьютером путем ввода текстовых команд с клавиатуры.

Мои уроки по работе с командной строкой здесь.

Командная строка есть во всех операционных системах, будь то Windows, Linux, Mac OS и др.

Давайте посмотрим, как можно запустить ее различных операционных системах.

Windows

Есть несколько вариантов, как это можно сделать.

Пройдите по следующему пути "Пуск -> Служебные - Windows -> Командная строка"

Нажмите сочетание клавиш «Win + R» и наберите команду cmd.

командная строка

После запуска, откроется вот такое черное окно, в которое можно вводить команды и управлять компьютером.

командная строка

Mac OS.

На компьютерах операционной системы Apple вызов командной строки выполняется с помощью системной утилиты Terminal.


Найти ее можно в списке установленных программ.

Linux.

Запуск командной строки на различных сборках Linux систем может происходить по разному, но смысл везде одинаковый, нужно найти и запустить программу, которая называется консоль, командная строка или терминал.

Я не знаю, ты пользуешься Линуксом или Уиндоузом (обычно туториалы рассчитаны на линуксоидов и макосников, уиндоуз не модный среди молодежи). В макоси все практически так же как и в линуксе, в windows пошли своим путем и сделали все как в DOS.

Думаю, что в данном случае тебе поможет не рыба, а удочка, так что держи пасту. Если после прочтения у тебя будут какие-то вопросы, или по-прежнему непонятно, почему команды не работают, пиши в наш уютный тред, разберемся.

Краткий мануал чайника по командной строке:

Как попасть в командную строку?

  • Windows XP: Пуск — Выполнить — набрать cmd — нажать [enter]
  • Windows7: Пуск — набрать cmd - наждать [enter]
  • MacOS: Запустить приложение Терминал (его можно найти поиском в той фигне которая справа вверху экрана)
  • Ubuntu: Запустить приложение Терминал или нажать Alt + Ctrl + F1 (ааа как вернуться назад? Ctrl + F7)
  • Linux: если ты линуксоид, ты и так знаешь

Во всех операционных системах

↑,↓ — стрелки вверх и вниз в командной строке позволяют смотреть предыдущие введенные команды, чтобы 2 раза не набирать. В Windows при закрытии окошка консоли вся история теряется, в других ОС — сохраняется.

[tab] — автодополняет имена файлов и команды. Если в текущем каталоге есть файл file.txt, ты наберешь fi и нажмешь [tab] то он автодополнит имя файла (или предложит варианты, если таких файлов несколько).

[ctrl+c] — прерывает выполнение команды, например, если она долго тупит

Важно: клавиша Esc не работает в командной строке. Клавиши Ctrl + C, V, X не работают как «копировать/вырезать/вставить» (иногда для вставки можно использовать Shift + Ins). Клавиша Ctrl + Q не работает как «выход».

В линуксе и маке, [ctrl+l] очищает экран, [ctrl+k] и [ctrl+u] удаляют все перед или после курсора, [ctrl+w] удаляет слово перед курсором, [ctrl+r] делает поиск по истории команд (для отмены поиска нажми [ctrl+c], escape в командной строке не работает, для завершения поиска нажми стрелку вправо/влево), [ctrl+d] завершает работу и закрывает консоль.

Еще в линуксе и маке иногда не работают Home и End, используй [ctrl+a] чтобы перейти в начала строки и [ctrl+e], чтобы в конец. [alt + b] (back) и [alt + f] (forward) двигают курсор на 1 слово назад/вперед.

В командной строке не работает ctrl+v,c,x для вставки, копирования и вырезания текста. Иногда (зависит от настроек системы) вставить текст можно через [shift+ins], иногда правой кнопкой мыши. Скопировать текст можно, выделив мышью (в Windows надо разрешить выделение текста сначала в настройках окна и нажать Enter после выделения).

В командной строке результат выполнения команд зависит от того, в каком каталоге и на каком диске ты находишься. Какой каталог текущий, в Windows написано в подсказке, а в linux можно узнать командой pwd (print working directory)

Чтобы перейти в другой каталог, в линуксе используют команду cd :

В Windows, сначала надо перейти на нужный диск командой c: , d: , e: и так далее. Потом использовать cd или chdir :

Обрати внимание, windows и linux используют разные виды слешей. Обрати внимание, .. обозначает «родительский каталог». Обрати внимание, только в линукс и мак

обозначает «домашний каталог» (это /home/username или /Users/username ). . (одна точка) обозначает текущий каталог и cd . никуда не перейдет. / (линукс) или \ (Windows) обозначает корневой каталог.

В linux — команда clear или клавиша [ctrl+L], в windows — команда cls (clear screen).

Посмотреть, какие файлы есть в текущем каталоге, можно командой dir в Windows и командой ls в линуксе ( ls -a — показывает все файлы, включая скрытые, ls -l — показывает не только имена, но и размер, дату создания файла, права на него).

Посмотреть права на файл в Линукс можно либо командой ls -l , либо stat file.txt

Команды и оболочка

Оболочка — это cmd.exe в Windows и bash в линукс, это та программа, которая собственно мигает курсором и выполняет твои команды. Ты набираешь команды, а она их выполняет. Команда обычно состоит из имени команды, и, иногда, дополнительных параметров, отделенных пробелом, вроде:

Почти у любой команды есть подсказки. Чтобы их увидеть, добавь к имени команды параметр ( --help или /? ):

В линукс: ls --help — выведет справку по команде ls

В линукс: man bash — выведет подробную длинную справку по команде bash (для выхода жми q, для прокрутки используй стрелки и PgUp/PgDn)

В Windows: dir /? — выведет справку по команде dir

В Windows: help выведет подсказку по основным командам

Команды бывают внутренние (это маленький список команд, встроенных в оболочку). Встроенные команды — это, например, cd в линукс или exit в Windows. Их мало.

Внешние команды — их большинство — это фактически программы, лежащие на диске. Оболочка ищет их не по всему диску, а только в заранее заданных папках. Список папок перечислен в специальной переменной PATH. Просмотреть эту переменную можно так:

В линуксе: echo $PATH

В windows: echo %PATH%

В linux PATH — это папки /bin, /usr/bin, /usr/local/bin, /sbin, /usr/sbin, именно в них в Линуксе хранятся почти все программы. В текущем каталоге програмы не ищутся, если это не указать явно.

В Windows PATH — это всякие системные папки вроде c:\windows и так далее + текущий каталог, в котором ты находишься. Заметь, что папки вроде c:\program files\autocad в PATH не добавлены и в Windows таким образом, из командной строки обычные программы и игры, установленные в Program Files, не запустить. Только то, что положено в системные папки.

Таким образом: если ты под линуксом, и ты набираешь команду php , то скорее всего файл php лежит в одной из *bin папок и эта команда запустит php. Если ты под Windows установил php допустим в c:\php, и не прописал этот путь в PATH, то набрав php , оболочка не найдет файл php.exe и ничего не запустит. И ты скажешь «что за кривой мануал, ничего не работает, ну его нафиг».

Что же делать? 1) добавить папку с php в PATH через мой компьютер — свойства и перезалогиниться в систему 2) писать вместо php полный путь c:\php\php.exe

Продолжаем. Допустим, ты хочешь запустить в командной строке файл my.php , который находится в текущем каталоге:

Допустим, ты хочешь запустить php-файл не из текущего каталога. Тогда надо написать путь к нему:

В общем, проще запускать файлы из текущег каталога, чем мучаться с путями.

Больше команд — linux

Попрактиковаться в линукс в командной строке можно на таких командах:

Подробнее о работе команд можно узнать с помощью параметра --help , дописанного после команды.

Больше команд - Windows

Попрактиковаться в комнадной строке в Windows можно так:

Подробнее о работе команд можно узнать с помощью параметра /? , дописанного после команды.

Команды для работы с сетью Интернет

В линукс показать информацию о настройке сети: ifconfig (или /sbin/ifconfig если у тебя в PATH нет /sbin)

В Windows показать информацию о сети: ipconfig

Показать список открытых с компьютера соединений: netstat (в подсказке по команде указаны также параметры, с помощью которых, например, можно вывести какая программа установила это соединение) Проверить путь до какого-то сервера или узла сети:

Операционная система Windows появилась в 1985 году, а первые полноценные дистрибутивы Linux начали появляться в 1993 году. Windows изначально была графической надстройкой MS-DOS, а Linux служил для доступа к терминалу. Спустя годы системы заметно преобразились и представляют собой гораздо большее, чем было ранее.

В этой статье мы разберемся чем отличается Windows от Linux. Мы рассмотрим основные отличия систем, как в плане архитектуры, так и с точки зрения обычного пользователя и разработчика программного обеспечения.

Чем отличается Windows от Linux

1. Ядро и драйверы

BTbAAHTcks6OAAAAAElFTkSuQmCC

Ядро операционной системы обеспечивает доступ к ресурсам компьютера, а также управляет процессами. Linux использует монолитное ядро, то есть в одном файле содержится большая часть кода, необходимого для функционирования системы. На нижнем уровне оно принимает сигналы от устройств, а на верхнем обрабатывает системные вызовы – доступные программам команды, отвечающие стандартам POSIX. Системные вызовы дополняют библиотеки C, C++ и утилиты проекта GNU, что позволяет выполнять код любой сложности.

Ядро Windows гибридное и состоит из множества библиотек. Таким образом главная программа Ntoskrnl.exe, не имеет прямого доступа к аппаратной части, эту роль выполняет библиотека HAL.dll. А на пользовательском уровне вместо системных вызовов используются функции библиотеки NTDLL.dll, к которой также подключаются библиотеки C, C++ и т.д.

Драйверы Linux по большей части хранятся в ядре, но зачастую подключаются модули ядра, содержащие дополнительные драйверы, например, для видеокарт Nvidia. Драйверы Windows, как вы могли догадаться, выполнены в виде библиотек. В этом плане Linux проигрывает, поддерживается далеко не всё оборудование, к тому же часть устройств имеет только базовый драйвер.

Настройки Linux хранятся в каталоге /etc, где каждая служба и программа имеет свой конфигурационный файл. В Windows некоторые службы также имеют конфигурационные файлы, но все основные настройки хранятся в общей базе – системном реестре.

2. Файловая структура и права доступа

Windows и Linux используют разные файловые системы. Если для Linux стандартом стал ext4, то для Windows – NTFS. В целом они похожи, обе имеют запас по размеру разделов, глубине каталогов и длине имени файлов. Также они поддерживают шифрование, а NTFS помимо прочего умеет сжимать данные для экономии места. Эта функция есть в более перспективной BTRFS, которая должна в скором времени заменить ext4.

Обе системы ведут журналирование изменений, что повышает надёжность. Однако, NTFS не имеет полной поддержки прав доступа POSIX, поэтому она не подойдёт для установки Linux. Стоит отметить и то, что Windows не поддерживает ext4 из коробки, а большинство дистрибутивов монтирует NTFS только по запросу.

gc8eGk++tywqAAAAABJRU5ErkJggg= //pagead2.googlesyndication.com/pagead/js/adsbygoogle.js

Несмотря на то, что Linux изначально создавался в качестве замены UNIX, системы для мейнфреймов с многопользовательским доступом, Windows позволяет более гибко настраивать права доступа. В Linux по умолчанию есть всего три категории прав: пользователь, группа, все остальные.

Windows может выдавать права сразу нескольким пользователям и группам. Linux также это умеет, но через расширение стандарта POSIX в виде списков управления доступом ACL. Для этого используется консольная утилита setfacl и её графический аналог Eiciel. Дальше давайте рассмотрим другие принципиальные отличия Linux от Windows.

3. Окружение рабочего стола

v8Hzr+jfgicZ9AAAAAASUVORK5CYII=

Windows использует оконный менеджер DWM и оболочку Explorer (не путать с файловым менеджером), которые тесно связаны с библиотекой GDI, а та в свою очередь зависит от унифицированного драйвера WDDM. Этот набор библиотек и служб есть в любой копии Windows, поэтому разработка программ стандартизирована. Минусом подобного решения является ограниченная кастомизация интерфейса.

Linux может предложить множество оболочек рабочего стола (GNOME, KDE, Cinnamon и т.д.) со своими оконными менеджерами, а обслуживать это будет протокол XOrg или современный Wayland. Система может выглядеть как угодно, а популярные оболочки имеют множество настроек для изменения внешнего вида. Обратная сторона медали – плохая совместимость программ, написанных под разные оболочки.

4. Программное обеспечение

Сложно отрицать тот факт, что на Windows выпускается гораздо больше программ и игр. На Linux вы не найдёте многие профессиональные программы, начиная с пакета Adobe и заканчивая различными САПР.

Приложения Windows в большинстве своём распространяются в виде установочных файлов формата .exe или .msi, а в Linux зачастую используются репозитории – файловые серверы с огромным количеством пакетов программ и библиотек. Также используются разные форматы пакетов, в зависимости от выбранного дистрибутива. Единая пакетная база заметно усложняет разработку программ. Например, нельзя переписать программу с использованием новой библиотеки, ведь старая используется другими приложениями.

Эту проблему пытаются решить несколькими способами. Сторонние программы могут устанавливаться в каталог /opt, аналог папки Program Files. Также получили распространение песочницы Flatpak и Snap, устраняющие проблемы с зависимостью от системных библиотек, и формат AppImage (одна программа – один файл).

К плюсам Linux также можно отнести большее количество программ с открытым кодом. Это не гарантирует отсутствие уязвимостей, но позволяет создавать и дорабатывать программы, что особенно актуально при завершении поддержки разработчиками. Таким образом многие программы продолжают развиваться, но уже другими людьми.

Если же говорить об уязвимостях, то на Linux пишут меньше вредоносных программ, для защиты от них антивирус обычно не требуется. Но не стоит забывать о том, что большинство атак перешло в интернет. Поэтому даже на Linux не лишним будет установка антивируса для защиты от фишинговых сайтов.

5. Разработка программного обеспечения

Microsoft предоставляет доступ к библиотеке MSDN, она содержит подробную документацию для разработчиков. С написанием сложных программ, вроде игр, проблем также не должно возникнуть, используются одни и те же библиотеки во всех копиях Windows.

Linux позволяет с лёгкостью писать простые программы без графического интерфейса, причём получить доступ к оборудованию гораздо проще, чем в Windows. Устройства расположены в каталоге /dev, к ним можно обращаться практически напрямую. Однако, сложные приложения с графическим интерфейсом надо проверять на работоспособность во всех популярных дистрибутивах, поддерживать их пакеты в репозиториях и так далее. А ведь для этого надо изучить многочисленную документацию, которая выполнена на разном уровне.

Хорошим примером может послужить Android, система практически монополизировала рынок смартфонов, хотя в её основе лежит ядро Linux. А всё дело в том, что её приспособили для использования на мобильных устройствах и привели к единому стандарту.

Пока что разнообразие дистрибутивов Linux не может привлечь крупных разработчиков программного обеспечения. Трудозатраты на поддержку и отладку гораздо выше, чем для Windows, а доход на порядок ниже.

6. Способ распространения

Windows не имеет бесплатной версии, хотя есть способы (легальные и не очень) полноценно использовать систему. Предустановленные системы обходятся заметно дешевле, поэтому Windows имеется на большинстве продаваемых ноутбуков.

Большая часть дистрибутивов распространяется бесплатно, исключение составляют лишь некоторые коммерческие продукты, вроде серверного дистрибутива Red Hat. Бесплатность Linux мнимая, разработку оплачивают крупные корпорации, вроде Oracle и HP. Единичные экземпляры ноутбуков поставляются с Linux, хотя в последнее время он всё чаще предлагается в качестве альтернативы отсутствию операционной системы.

7. Доля на рынке, сферы применения

Linux создавался на основе стандартов POSIX для операционных систем UNIX, а те в свою очередь были основой многопользовательских мейнфреймов. В качестве домашней операционной системы Linux занимает менее 2%, зато около 80% серверов работает под управление Linux. Что уж говорить, если свой серверный дистрибутив Linux есть даже у Microsoft. Также Linux повсеместно используется в маршрутизаторах, телевизорах и прочей технике интернета вещей.

На текущий момент Windows популярен только в сегменте домашних компьютеров и рабочих станций, здесь он занимает более 80%. Windows для серверов хоть и менее популярна с долей около 20-30%, но опережает Linux в плане прибыли. Конечно, это не все отличия Linux от Windows.

Выводы

Теперь вы знаете чем отличается Windows от Linux и эти отличия довольно значительные. В первую очередь они связаны со сферой применения. Windows устанавливается преимущественно на персональные компьютеры, а Linux на серверы. Для домашнего использования Linux по-прежнему подходит лишь отчасти. Разнообразие дистрибутивов отталкивает разработчиков, а без программ интерес к системе падает и у обычного пользователя.

И всё же настольный дистрибутив Linux – это отличное решение для тех, кому компьютер требуется лишь для выхода в интернет, разработки сайтов и несложной работы с документами. Для игр и работы с мультимедиа Windows подходит гораздо лучше.

Читайте также: