Программа консоль что это

Как открыть командную строку

Командная строка, консоль или терминал — это специальная программа, которая эмулирует интерфейс текстового ввода различных команд для управления системой, взаимодействия с файлами и прочего. Такие программы есть во всех ОС, включая Windows, macOS и Linux‑дистрибутивы.

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

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

Как открыть командную строку в Windows

Через поиск Windows

Кликните по значку «Пуск» на панели задач или нажмите кнопку Windows на клавиатуре.

Введите cmd и тапните Enter.

Из контекстного меню «Пуск»

Кликните правой кнопкой мыши по значку «Пуск» на панели задач и выберите из списка «Терминал Windows» или «Терминал Windows Администратор».

В расширенном меню кликните «Командная строка» или просто нажмите Ctrl + Shift + 2 на клавиатуре.

Программа КОНСОЛЬ Часть 1

Как открыть командную строку в macOS

Через поиск Spotlight

Вызовите Spotlight сочетанием Command + Пробел или Option + Command + Пробел.

Начните вводить «Терминал» и нажмите Enter.

Из папки «Утилиты»

Откройте Finder и перейдите в папку «Программы» → «Утилиты».

Найдите «Терминал» и запустите, дважды кликнув по иконке.

Как открыть командную строку в Linux

Через шорткат

Нажмите сочетание Ctrl + Alt + T на клавиатуре, и «Терминал» сразу же запустится.

Из папки приложений

Перейдите в меню «Приложения» → «Системные» и откройте «Терминал», кликнув по соответствующей иконке.

  • Как изменить букву диска в Windows 10
  • 56 полезных команд терминала в macOS на все случаи жизни
  • Как принудительно закрыть приложение на macOS
  • Как исправить проблемы со спящим режимом Windows 10
  • 6 главных изменений Windows 11, ради которых стоит обновиться

Источник: lifehacker.ru

Что такое консоль в программировании?

Программист обычно пишет код в какой-то IDE — интегрированной среде разработки. То есть, другими словами, — в солидном редакторе кода (не в блокноте). Они бывают разные.

У них, кроме возможности удобного ввода кода, есть консоль — отдельная программа, которая открывается по щелчку мыши. То есть, как дополнение к основной программе, поэтому она и называется консоль — дополнительная «поверхность», на которой размещены органы управления — командная строка.

Командная строка — это место, где программист может вводить текстовые команды. Их великое множество. С помощью этих команд он может запускать программы, которые уже есть на компьютере или инсталлировать новые из Интернета, или запускать проверки, исправление ошибок и так далее.

Telnet, SSH, консоль и терминал — что это и зачем нужно?

Нужно хорошо знать эти команды, чтобы не напороть ерунды с компьютером.

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

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

То есть есть консоль в среде программирования (в IDE), а есть консоль на компе. По сути, это одно и то же, только внешний вид разный. Можно даже их запустить одновременно.

Источник: www.bolshoyvopros.ru

Консольные приложения и параметры программы

Аннотация: На этой лекции мы научимся создавать консольные приложения, вводить и выводить данные в консольных программах, устанавливать правильную кодировку и использовать параметры программы.

Цель лекции

Освоить работу с консольными приложениями и с параметрами программы.

Консольные приложения

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

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

Если вы пользуетесь операционной системой Windows , то нажмите на «Пуск» и выберите команду «Выполнить». В открывшемся окне наберите

и нажмите . Откроется командная консоль , в которой команды нужно вводить в текстовом режиме:

Консоль cmd.exe


Рис. 21.1. Консоль cmd.exe

Собственно, вы видите окно предка Windows — операционной системы MS-DOS . Именно так выглядел экран с загруженной ОС MS-DOS , и управлять ею приходилось, вручную набивая всевозможные команды. Это уже позже корпорация Microsoft навесила на ядро MS-DOS всевозможные драйверы и утилиты, снабдила его графическим оконным интерфейсом, и появилась сначала полуграфическая ОС Windows 3.10 (русский вариант был 3.11 версии), а затем и целиком графическая Windows 95 . Но к консольному ядру системы можно обращаться и в современных ОС, в Windows для этого используется программа cmd.exe, а в ОС Linux — терминал .

Читайте также:
Пони прог что это за программа

Все языки высокого уровня позволяют делать и консольные приложения, другое дело — зачем? Подавляющее большинство современных программ имеет графический интерфейс , который мы с вами создавали с самой первой лекции. А консольные приложения делаются в основном, системными программистами. Несмотря на то, что Object Pascal обладает для этого всеми необходимыми инструментами, системщики обычно пользуются такими языками, как Ассемблер , C, реже — C++. Но все же знать, как создаются консольные приложения нужно, поэтому данную лекцию мы посвящаем им.

Создание консольного приложения

Создать консольное приложение можно разными способами, но проще всего так. Откройте Lazarus. Командой «Проект -> Закрыть проект» закройте текущий проект, автоматически появится окно Мастера создания проекта. В нем нажмем кнопку «Новый проект». Появится окно создания проекта, в котором можно выбрать «Программа» или «Консольное приложение».

Если мы выберем «Программа», то будет создан модуль с минимальным кодом. Если же мы выберем «Консольное приложение», то кода будет больше, так как при этом создается программа с новым классом, производным от TCustomApplication . TCustomApplication обеспечивает хорошую основу и делает программирование утилит командной строки довольно простым. Например, проверку опций командной строки, написание справки, проверку переменных окружения и обработку исключений. Все программы LCL автоматически это используют.

Но нам не нужно использовать возможности класса TCustomApplication , мы делаем простую консольную программу, поэтому в окне создания проекта мы выбираем «Программа». Сформируется проект, а в Редакторе исходного кода будет минимум текста:

program Project1; uses cthreads, Classes < you can add units after this >; begin end.

Обратите внимание, если нам нужно подключить к программе какие то модули, то делать это нужно до комментария

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

Свой код мы будем писать между скобками

begin end.

А если нам потребуется указать глобальные константы , переменные или сделать объявления процедур и функций, то все это делается до begin .

Для примера мы создадим простое приложение , а по ходу дела, познакомимся с инструментами ввода-вывода информации в консольных приложениях.

WRITE и WRITELN

Процедура Write предназначена для вывода информации на экран. Она имеет следующий синтаксис :

procedure Write(var F:Text; Args:Arguments);

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

write(‘Всем привет. ‘); write(‘Переменная a = ‘, a, ‘; переменная b = ‘, b);

После вывода информации на экран курсор остается на той же строчке, в позиции, где он оказался после вывода последнего символа.

Процедура Writeln действует точно также, но после вывода последнего символа курсор переходит на начало следующей строки.

Для ознакомления с процедурами создайте новый проект «Программа». Модуль можно не переименовывать, просто сохраните его в папку 21-01. Полный текст модуля следующий:

program project1; uses cthreads, Classes < you can add units after this >; var a, b: Integer; begin a:= 5; b:= 10; writeln(‘Всем привет. ‘); writeln(‘Переменная a = ‘, a, ‘; переменная b = ‘, b); readln(); end.

Обратите внимание: раздел переменных var мы указали до служебного слова begin , то есть, переменные a и b в пределах модуля являются глобальными. Далее мы присвоили переменным значения, затем вывели на экран приветствие, а потом содержимое переменных. На процедуру readln() пока не обращайте внимания, она нужна только, чтобы программа не закрылась сразу же после вывода текста, а была на экране, пока мы не нажмем . Сохраните проект и запустите его на выполнение. И сразу же мы видим недостаток: вместо русских букв выходит нечто, что в Интернете называют «кракозябры»:

Неправильный вывод кириллицы в консольной программе


Рис. 21.2. Неправильный вывод кириллицы в консольной программе

В «Символы и строки» мы упоминали, что в консольных приложениях Windows принято использовать кодировку CP866, тогда как в графических приложениях используется CP1251 и Юникод. Отсюда и «кракозябры». В Linux и Unix таких проблем нет. Однако решить эту проблему совсем несложно. Нажмите , чтобы закрыть консоль , и вернитесь в Редактор кода.

Щелкните по окну с кодом правой кнопкой мыши, и в открывшемся контекстном меню выберите команду «Параметры файла -> Кодировка -> CP866». Откроется окно смены кодировки, нам надо нажать кнопку «Изменить файл». Снова запустите программу на выполнение — теперь с кодировкой полный порядок :

Источник: intuit.ru

Консольное приложение на ассемблере

В процессе изучения основных правил работы оконных приложений, мы познакомились с некоторыми принципами программирования графических примитивов. Теперь самое время открыть для себя еще одну разновидность приложений под Windows — консольные приложения.
Во времена разработки первых операционных систем, в них не было такого понятия как графический интерфейс пользователя, был доступен только текстовый режим видеоадаптера с интерфейсом командной строки. Однако, в ходе развития ОС был создан графический интерфейс пользователя (GUI), роль которого со временем существенно возросла. Как раз во время создания GUI стало очевидно, что необходимость в консольных приложениях сохраняется, следствием чего было создание консоли Windows . Консоль, в зависимости от ОС, может работать как в привычных по старым операционным системам текстовых режимах (они еще поддерживаются на аппаратном уровне в современных видеоадаптерах), так и в режимах эмуляции текстового режима. Основная причина по которой консоль в Windows была выделена в отдельную разработку и продолжает своё существование, заключается в следующем:

Читайте также:
Trados программа для перевода что это

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

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

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

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

Помимо класса консольных утилит, в практике разработчика часто возникают задачи, в которых разворачивать оконный графический интерфейс соразмерно напрасной трате своего и процессорного времени. В подобного рода задачах вполне достаточным условием является использование текстового (для вывода диагностических сообщений) или вовсе неинтерактивного (вывод данных в файл) режимов. Действительно, зачем пытаться изображать графический интерфейс там, где он явно излишен или вовсе не обязателен, не проще ли в таких задачах от него отказаться вовсе? Поэтому, сегодня мы акцентируем внимание на особенностях языка Ассемблера (FASM) при написании консольного приложения на ассемблере под Windows, и темой данной статьи будет создание серии простейших консольных приложений, демонстрирующих основные алгоритмы взаимодействия с консолью. Разработанные шаблоны (в примерах) могут быть в дальнейшем использованы в качестве базовых в различного рода проектах.
Итак, в словосочетании консольное приложение на ассемблере присутствует ключевое слово «консоль», на которое стоит обратить особое внимание, поскольку именно оно даст нам понимание основных принципов работы. Скорее всего, люди уже знакомые с компьютером в общем и операционными системами в частности, знают что это такое, хотя могут понимать это в широком, так сказать, смысле этого слова: механизм для ввода информации с клавиатуры и вывода ее на экран. Поэтому, не лишним будет дать серию расширенных определений:

Текстовый пользовательский интерфейс (Text user interface, TUI / Character-Mode User Interface, CUI) — разновидность интерфейса, использующая для ввода-вывода/представления информации текстовый режим (или его эмуляцию) работы видеоадаптера и набор буквенно-цифровых символов и символов псевдографики.

что является базой для:

Консоль (интерфейс командной строки) — текстовый интерфейс управления консольным приложением , ввод-вывод в рамках которого может осуществляться через стандартные потоки: ввод ( stdin ), вывод ( stdout ), ошибка ( stderr ), а так же прямыми чтением/записью из буферов ввода-вывода. По умолчанию к потоку ввода «подключена» клавиатура (мышь), а к потоку вывода — экран (монитора). В частном случае может быть представлена в виде бесконечной бумажной ленты, прокручивающейся в обе стороны.

что, в свою очередь, формирует понятие:

Консольное приложение (character-mode applications) Windows — класс приложений, использующих для взаимодействия с системой/пользователем объекты консоли: текстовый интерфейс и стандартные потоки ввода-вывода. Считается что консольные приложения управляются консолями .

Консольное приложение операционной системы Windows обеспечивает взаимодействие с пользователем через так называемое окно консоли . Примером подобных консольных приложений могут являться: окно командной строки (cmd), файловые менеджеры (например, Far Commander), и ряд типовых системных консольных утилит:

консоль cmd

Различия оконного и консольного приложений

Консольные приложения являются одним из типов исполняемых образов (приложений) Windows, наряду с типовыми оконными (GUI), библиотеками (DLL), драйверами (native) и некоторыми другими. По сути это полноценные приложениями, имеющие ряд специфических отличий:

  • Значение поля Subsystem заголовка результирующего PE-файла равно 3 ( IMAGE_SUBSYSTEM_WINDOWS_CUI ). На основании значения данного поля, загрузчик образов при подготовке приложения к выполнению производит свойственную консольным приложениям последовательность загрузки.
  • При запуске консольного приложения, загрузчик образов пытается наследовать консоль от процесса-родителя (приложение, из-под которого был произведен запуск):
  • Создается новая консоль, если родительский процесс не имеет консоли.
  • Консоль наследуется, если процесс-родитель тоже является консольным приложением (окно командной строки и прочее).

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

Читайте также:
Powerdvd что за программа

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

Иначе говоря, программы с текстовым интерфейсом могут имитировать оконный интерфейс. Поэтому можно сделать следующее обобщение: консольные приложения имеют возможность полноценно взаимодействовать с функциями Win32 API наравне с типовым оконным GUI-приложением, ведь в процессе написания исходного кода автор имеет возможность импортировать (подключать) любые функции любых доступных коду библиотек, каковые он сочтет нужными.

Начиная с Windows 7, на системном уровне функционал консоли был вынесен из диспетчера csrss.exe и оформлен в качестве самостоятельных исполняемых образов:

  • conhost.exe – обработчик консольных окон режима пользователя (обеспечивает весь функционал работы с консолью);
  • condrv.sys – драйвер режима ядра, обеспечивающий взаимодействие conhost и консольных приложений;

Объекты консольного приложения

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

  • [единственный] входной буфер — область данных (события/сигналы/данные) для ввода (передачи на консоль);
  • [несколько] экранный выходной буфер — область данных (символы/атрибуты) для вывода (отображения на экране);
  • Окно консоли — область экрана, отображающая часть выходного буфера;
  • Текущая позиция курсора — маркера вывода, обозначающий текущую позицию вывода;

Стандартные потоки (дескрипторы консоли)

На программном уровне для ввода/вывода информации консольные приложения используют три основных стандартных устройства ввода-вывода:

Наименование Назначение
Стандартный ввод ( stdin ) Поток данных, идущих в программу.
Стандартный вывод ( stdout ) Поток данных, идущих из программы.
Стандартная ошибка ( stderr ) Поток сообщений об ошибках, идущих из программы.

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

Стандартный поток — объект процесса консольного приложения, предназначающийся для организации обмена данными.

Традиционно, со стандартным вводом ассоциирована клавиатура, а со стандартным выводом/ошибкой ассоциирован монитор (экран), таким образом вывод печатных символов в STDOUT и STDERR приводит к появлению этих символов на устройстве вывода и к получению их пользователем. В дополнение, потоки могут быть переопределены (перенаправлены) и на другие логические устройства (файл, ввод/вывод другой программы и прочее). Поэтому определение консольного приложения может быть расширено:

Любая программа, получающая данные путём чтения STDIN и передающая данные путём записи в STDOUT , является консольной.

Тем не менее возникает резонный вопрос: обязательно ли наличие окна консоли у консольного приложения? Ведь, теоретически, консольные программы могут обходиться и без классического ввода (с клавиатуры) и вывода (в окно, на экран), поскольку объекты stdin и stdout могут быть связаны с файлами, потоками ввода/вывода других программ или иными объектами операционной системы? Тем не менее, стандартный сценарий использования консольного приложения в Windows подразумевает создание отдельного окна консоли.
В ходе запуска консольного приложения, система генерирует вышеперечисленные дескрипторы для вновь создаваемого процесса консоли. Процесс консольного приложения обычно использует функции GetStdHandle , CreateFile , CreateConsoleScreenBuffer для того, чтобы открыть один из вышеописанных дескрипторов. Функция GetStdHandle обеспечивает механизм получения кодом приложения дескрипторов стандартного ввода, стандартного вывода и стандартной ошибки, связываемых с процессом в момент создания. В случае необходимости имеется возможность переназначить стандартные дескрипторы через функцию SetStdHandle , изменяющую дескрипторы, связанные с STDIN , STDOUT или STDERR .
Стандартные дескрипторы родительского процесса всегда наследуются всеми создаваемыми дочерними процессами, поэтому вызовы функции GetStdHandle дочерними процессами возвращают переназначенный дескриптор. По этой причине, в зависимости от действий родительского процесса, дескриптор, возвращенный функцией GetStdHandle , может сослаться на что-либо, отличное от привычного нам консольного ввода-вывода. К примеру, родительский процесс может при помощи SetStdHandle изменить дескриптор какого-либо потока (например STDIN ) перед созданием дочернего процесса. Затем, когда созданный дочерний процесс у себя в коде вызовет функцию GetStdHandle , он получает дескриптор переназначенного канала. Этим обеспечивается механизм управления родительским процессом стандартными дескрипторами дочернего процесса.

К дескрипторам применяются права доступа. По умолчанию дескрипторы, возвращенные функцией GetStdHandle , имеют доступ GENERIC_READ | GENERIC_WRITE .

Буфер ввода

Каждое консольное приложение имеет буфер вводимых данных:

Входной буфер консоли (Input buffer) — очередь данных, каждая запись которой содержит информацию относительно входного события консоли (нажатие/отпускание клавиш, движение/нажатие/отпускание мыши и прочие).

В момент, когда окно консольного приложения имеет фокус клавиатуры (является активным), консоль оформляет каждое событие ввода (типа нажатия/отпускания клавиши, перемещение указателя мыши или щелчка кнопки мыши) в качестве данных, которые помещаются в буфер вводимых данных консоли. Что такое эти самые данные? Запись данных о вводе ― структура Windows, содержащая в себе информацию о деталях события: тип, источник (клавиатура, мышь, размеры окна, фокус, меню) и прочих. Структура имеет внутренний тип INPUT_RECORD и представляет собой следующее:

Источник: datadump.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru