Перейти к содержимому

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

  • автор:

Что такое Терминал Windows?

Терминал Windows — это современное ведущее приложение для предпочитаемых вами оболочек командной строки, таких как Командная строка, PowerShell и Bash (через подсистему Windows для Linux (WSL)). К его основным функциям относится поддержка нескольких вкладок, панелей, символов Юникода и UTF-8, а также модуль отрисовки текста с ускорением GPU, возможность создания собственных тем и настройки текста, цвета, фона и сочетаний клавиш.

Более общие сведения см. в статье Скотта Хансельмана (Scott Hanselman) Разница между консолью, терминалом и оболочкой или просмотрите видео Рича Тернера (Rich Turner) Что собой представляет оболочка командной строки?.

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

Любое приложение с интерфейсом командной строки можно выполнять в Терминале Windows. Это касается всех приложений: от PowerShell и Командной строки до Azure Cloud Shell и любого дистрибутива WSL, например Ubuntu или Oh-My-Zsh.

Разрыв табуляции (предварительная версия)

Вы можете вырвать вкладки в Терминал Windows и создать новые окна.

Вы также можете перетаскивать вкладки в существующие окна.

Настраиваемые схемы и конфигурации

В Терминале Windows можно настроить различные цветовые схемы и параметры. Сведения о настройке запроса с помощью холодных тем см. в руководстве по настройке пользовательского запроса PowerShell или WSL с помощью O My Posh , чтобы узнать, как создать собственную цветовую схему, перейдите на страницу «Цветовые схемы».

Настраиваемые действия

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

Например, для копирования текста из командной строки по умолчанию используются клавиши CTRL+SHIFT+C . Вы можете изменить его на CTRL+1 или другое сочетание. Для открытия новой вкладки по умолчанию используется сочетание клавиш CTRL+SHIFT+T , но его можно изменить на CTRL+2 . Для перехода на другие открытые вкладки по умолчанию используется сочетание клавиш CTRL+TAB . Его можно изменить на CTRL+- и использовать для создания новой вкладки.

Дополнительные сведения о настройке сочетаний клавиш см. на странице «Действия».

Поддержка символов Юникода и UTF-8

В Терминале Windows могут отображаться символы Юникода и UTF-8, например эмодзи и символы из различных языков.

Отрисовка текста с ускоренным GPU

Терминал Windows использует GPU для отрисовки текста, что обеспечивает повышенную производительность по сравнению с использованием интерфейса командной строки Windows по умолчанию.

Поддержка фоновых изображений

В окне Терминала Windows можно использовать фоновые изображения и изображения в формате GIF. Сведения о добавлении фоновых изображений в профиль см. на странице Профиль — внешний вид.

Command line arguments

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

Например, чтобы открыть Терминал Windows из PowerShell с тремя панелями (на левой панели будет запущен профиль Командной строки, а правая панель будет разделена для PowerShell и ваш профиль по умолчанию с WSL), введите:

wt -p "Command Prompt" `; split-pane -p "Windows PowerShell" `; split-pane -H wsl.exe 

Сведения о настройке аргументов командной строки см. на этой странице.

Краткое введение в терминалы и консоль

Очень сжатое боевое описание «что есть псевдо-терминал» и «консоль».

Итак, во-первых, определимся с тем, что такое консоль: консоль это программа, которая принимает от пользователя кнопки, а от соединения с компьютером — буквы на экран и спец. команды по рисованию картинки на экране.

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

Как легко понять по кабелю, есть два конца: терминал и то, что ему посылает байтики в кабель.

Когда запускается шелл, то он получает в своё распоряжение виртуальное устройство /dev/tty, которое у каждого процесса своё — это «обратная» часть терминала. Передняя часть в случае кабеля реализуется путти+компьютер, в случае консоли компьютера, специализированным ядерным драйвером (виртуальными консолями). Важно: драйвер эмулирует наличие терминала.

Существует интерфейс unix98 (/dev/ptmx), который позволяет создать парочку из «входа и выхода» для всех обратившихся программ. В этом случае одна половинка изображает из себя «обратную» половинку, а вторая — консоль. Используется, в частности, openssh’ем и x’овыми терминалками.

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

В качестве самой частой программы со стороны «программы» выступает getty разных видов (mgetty, agetty и т.д.), задачей которой является выставление скорости работы канала и запуск команды login для ввода пароля.

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

Каждое устройство по рисованию (терминал, виртуальная консоль и т.д.) имеют свой набор возможностей (поддерживаемых символов и команд). Тип терминала задаётся переменной TERM, но только в смысле, что он говорит программам, с каким терминалом они работают. Невозможно переменной TERM заставить терминал эмулировать другие терминалы — он про эту переменную ничего не знает.

Внезапное применение: KVM, XEN (и, я не уверен, но, кажется, OpenVZ) используют этот механизм для доступа к консоли виртуальных машин: в виртуальной машине создаётся специализированное устройство, взаимодействующее с демоном в dom0. С точки зрения domU — у него есть последовательное устройство для терминала. Чтобы на этом устройстве увидеть строчку login, нужно прописать в inittab строчку с вызовом getty и разрешить логин (/etc/securetty).

В dom0 демон видит последовательное устройство от domU, создаёт соответствующий псевдотерминал с помощью /dev/ptmx). Созданные устройства для подключения терминалов появляются в /dev/pts/*. Помимо этого consoled пишет в xenstore кому какой домен соответствует, специализированные терминалки (xenconsole) умеют это читать и выполнять. Когда даётся команда xl console (xm console), то она всего лишь вызывает xenconsole с заданным параметром.

Вместо xenconsoled можно использовать любую другую терминалку — хоть minicom, хоть cu, хоть socat, хоть putty. После подключения к консоли правильным является задать тип используемой консоли (set TERM=linux или set TERM=xterm, установка в vt100 даст чёрно-белый экран).

Ровно так же можно организовать подключение к машине по модему (если кто их ещё помнит) — модемы просто «удлиняют» последовательный порт на N километров. С одной стороны нужно настроить модем на автоответ и повесить mgetty (и не забыть про /etc/securetty), с другой стороны нужно набрать номер и получить обычное сообщение login.

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

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

Почему исследователи до сих пор используют эмуляторы терминалов

Когда я начинал свою аспирантуру в Университете Хельсинки, самое страшное, что я мог видеть у моих коллег — это черный экран, в котором есть только текст и мигающий курсор. Позже я узнал, что эта программа называется Terminal и является незаменимым инструментом для биоинформатиков и других специалистов, анализирующих большие массивы данных. Так как большинство генетиков и эволюционных биологов рано или поздно столкнётся с необходимостью работы в Терминале, я решил написать вводную статью о том, что такое Terminal и для чего он нужен.

Что такое Терминал?

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

До появления привычных нам графических интерфейсов люди пользовались текстовыми терминалами, в которые вводили команды при помощи клавиатуры, а результат вычислений выводился на экран. Однако, и по сей день терминал, точнее эмулятор терминала, есть в каждой операционной системе: в Windows – это приложение cmd.exe (Command Line или просто «Консоль»), в Linux и MacOS– программа Terminal.

Terminal в MacOS

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

Зачем нужен Терминал?

Есть три причины, которые делают Терминал незаменимым инструментом для исследователей, анализирующих большие массивы данных:

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

Разберем каждый из этих аспектов подробнее.

Терминал, как манипулятор файлов и папкок

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

Допустим, мне нужно переименовать фотографию и добавить к текущему названию дату, когда эта фотография была сделана. Что может быть проще, скажите Вы: «открой свойства файла, скопируй дату создания файла, закрой окно «Свойства» и вставь дату в название файла». Так и есть, все довольно просто, вот только повторить это действие нужно для всех фотографий на моем компьютере (а их у меня более 25 тысяч). Очевидно, что если я буду делать это подобным образом, то это задание отнимет у меня несколько недель.

Решение этой же задачи в Терминале займет не более получаса даже у начинающего пользователя. Фокус в том, что в Терминале пользователь может программировать действия, делегируя компьютеру рутинную работу. В разных типах эмуляторов терминала – разные языки программирования, но вероятно самым распространенным в наши дни является язык bash (о нем скоро будет отдельная статья).

Использование Терминала для создания скриптов

Другая важная особенность эмуляторов терминала – это возможность запуска в нем других программ, чтобы автоматизировать процессы в программах и обеспечить автономное взаимодействие между ними. Если входные и выходные данные этих программ оформить в виде файлов, то Терминал сможет запускать последовательно программы. Алгоритм будет напоминать цепочку из таких действий: запустить программу А, загрузить туда входные данные (файл А), экспортировать результаты анализа в файл B, закрыть программу A, запустить программу B, загрузить туда файл B, ну и так далее…

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

Управления суперкомпьютерами и серверами через Терминал

Терминал является не только окном в операционную систему персонального компьютера, но также и в операционную систему сервера или суперкомпьютера, который может находиться в тысячах километров от Вашего текущего месторасположения. Через эмулятор терминала на суперкомпьютер можно подавать алгоритмы (bash-скрипты), выполнение которых на Вашем компьютере могло бы занять неделю. Благодаря своей мощности суперкомпьютер проведет расчёты за считанные часы. Подобный подход позволяет проводить анализ больших массивов данных в кратчайшие сроки.

Как правило, на суперкомпьютерах и серверах стоят версии операционной системы Linux. Так как различий между эмуляторами терминала на Линуксе и на Маке практически нет, в дальнейших статьях я буду писать только об эмуляторах терминала, работающих на языке программирования bash (например, программа Terminal).

Заключение

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

В следующей статье мы рассмотрим как открыть Terminal на Linux и на MacOS, а также настроим его под себя для последующей удобной работы.

Комментарии: 6

Сентябрь 19, 2022 в 05:30 Заявка,нa вaшy пoчтy пoдтвepдили пoдapoк. Пoлyчитe пo ccылкe дaлee — https://forms.yandex.com/cloud/63147fd734efae8bd5f408f2/?hs=f84890ec5acd0b0e4de0d454020c038e&

https://forms.yandex.com/cloud/63147fd734efae8bd5f408f2/
Июнь 21, 2020 в 14:36 Анна
Классная статья. Прям ну очень доходчиво объяснили! Спасибо!
Декабрь 16, 2018 в 12:55 Роман

Спасибо за статью!
Вчера узнал о существовании Терминала, так как начал изучать Python. Пока понял, что они друг другу нужны, но не понял для чего. В Вашей статье узнал о том, что такое Terminal.

Декабрь 16, 2018 в 13:47 Samoedd (Автор записи)
https://samoedd.com
Всегда пожалуйста! Если возникнут дополнительные вопросы, буду рад ответить.
Август 19, 2018 в 18:56 Мустафа

— а почему терминал — называют ещё и эмулятором? Что он там ещё эмулирует?
Понятие «терминал» до конца так и не открыто, потому как терминалом могут назвать всё и всяк. В противном случае, какая тогда смысловая связь между тем, что «терминал» это то самое что «консоль» — ну, тогда может, ещё пару-тройку синонимов придумаем, и будем зубрить и доказывать, что это одно и тоже.
Вот, например: галка палка, ну чем галка не палка или наоборот.
А то и вообще, сколько там у нас языков и наречий в мире, давай-те соберем все их транскрипции по данному термину и тело в шляпе.
Один только англоязычный язык чего стоит, в переводе некоторых слов на русский и их понятии… не хватит запаса имеющихся матерных слов, чтобы возмущению был предел.
Фигня это всё. Нужно, если взялись за определение термина, объяснять более доходчиво, а не то, что это часть, какой то системы. Ну и что, что она часть, мало ли таких частей у системы есть, например порт I/O и его драйвер или окно настройки драйвера или еще какой проги, тоже терминал? — ведь вроде как конкретно к системе не относится но, тоже является звеном интерфейса. Вот тут не хватает такой жилки, как например, взять такое понятие «Корреспондирующий счет». Если откинуть слово счёт (и так понятно) то, что кроется в термине «Корреспондирующий» Может можно пробовать поискать какую то связь в понятии созвучных слов таких как: корреспондент, почтальон, корреспонденция и все что к ней относится письмо, сообщение, извещение… в общем, искать какую то взаимосвязь что ль. В общем, тема сырая.
Как-то давно в прошлом веке (серьезно) я тоже, когда еще не было в СССР компов, приходилось искать ответы на свои вопросы, в какой то бы не было макулатуре. И вот в одной древней пожелтевшей книге, которую я тоже штудировал но, ничего толком там так и не нашел, попалось одно хорошее изречении, которое наверно и мотивировало меня на дальнейшие поиски Знаний! Как говорят: Век живи и Век учись, а :(, да ладно, не будем о грустном:))
Так вот, что я там прочитал, не помню досконально, но вроде так: «Если из тысячи книг тебе попадется та, в которой ты найдешь ответ на свой извечный вопрос — считай, тебе повезло!» А вопросов у нас по жизни, как вы всё знаете и понимаете, больше чем ответов.

Август 27, 2018 в 18:44 Samoedd (Автор записи)
https://samoedd.com

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

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

Коварная война россии против Украины. Ориентировочные потери врага

(по состоянию на 04.01.2024)

329

324

вертолетов

11128

артиллерия

630

11423

23

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *