Что такое Терминал 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
Сведения о настройке аргументов командной строки см. на этой странице.
Командная строка — Основы командной строки
Для работы с командной строкой понадобятся две вещи: терминал и командная оболочка. В этом уроке вы узнаете, как они работают и чем отличаются друг от друга.
Терминал
Терминалом называют программу, которая эмулирует поведение железного терминала, состоящего из клавиатуры и монитора. В простейшем случае — это просто окошко с командной строкой внутри:
Хороший терминал все же не ограничивается одним окном, а позволяет открывать новые терминалы в табах — по такому же принципу, как работают вкладки в браузере.
Некоторые терминалы позволяют делать сплиты, то есть разделять окно на части. Этот довольно удобный механизм есть, например, в iterm2 :
Хорошие терминалы также умеют восстанавливать завершенную сессию, создавать профили под разные задачи и многое другое.
Командная оболочка
Командная оболочка — программа, через которую пользователь или администратор управляет операционной системой и установленными программами, используя командную строку. У этого понятия множество синонимов — shell, командный интерпретатор и командный процессор.
Оболочка — это лишь средство для выполнения определенных задач, а не сама задача. Этим она отличается от многих других программ.
Внутри терминала пользователь передает системе строки:
Каждая строка — это команда, которую система должна выполнить. После ввода команды обязательно нажать Enter , только в этом случае команда отправится на исполнение. После нажатия Enter отредактировать команду уже нельзя.
Оболочка запускается внутри терминала и приглашает ко вводу команд:
Рассмотрим фрагмент кода подробнее. Мы видим:
- Символ $ — он используется как разделитель
- Слева от $ — настраиваемое сообщение для вывода, обычно это текущая директория
- Справа от $ — команда, которую вводит пользователь
Все примеры в дальнейшем будут демонстрироваться без этого сообщения и символа. Рассмотрим для примера команду date , которая выводит текущую дату:
date Sun Aug 26 14:02:59 CEST 2018 █
Другой пример команды — комментарии. Как и в любых языках программирования, они ни на что не влияют. С их помощью мы просто описываем происходящее:
# Комментарий █
Командная оболочка позволяет запускать на выполнение установленные программы. Но это далеко не все, на что она способна. Для комфортной работы полезно иметь:
- Автоматическое завершение имен программ и файлов
- Историю введенных команд
- Возможность перемещаться по файловой системе
- Удобные горячие клавиши
- Поддержку скриптов
Далее в курсе мы раскроем многие из этих аспектов.
Командные оболочки и терминалы бывают разные, хотя по умолчанию в большинстве операционных систем стоит Bash .
Отдельно скажем, что командная оболочка и терминал — не одно и то же. Терминал — это программа, которая запускает командную оболочку внутри себя:
Как вы увидите далее, командная оболочка — это полноценная среда программирования. Многие команды являются стандартными конструкциями любого языка программирования: переменными, циклами или условиями. Кроме того, некоторые команды являются программами, а некоторые — нет. В ближайших уроках для простоты мы будем говорить слово «команда», но потом объясним разницу.
Командную оболочку нередко называют реплом от английского REPL (Read-Eval-Print-Loop). Это сокращение отражает способ взаимодействия командной оболочки с пользователем:
- Read — оболочка ждет ввода команды от пользователя
- Eval — исполняет введенную команду
- Print — выводит результат
- Loop — возвращаемся к первому пункту
Этот процесс называется интерактивной сессией: после загрузки командная оболочка ждет ввода команды, исполняет ее, выводит результат и снова ждет ввода команды. Так происходит до тех пор, пока не будет дана команда на выход из терминала или выключение компьютера.
REPL — широко распространенный способ взаимодействия с пользователем. В следующих курсах вы увидите, что он есть и у баз данных, и у языков программирования.
Чтобы вам было удобнее выполнять задания к урокам, в среде Хекслета сразу запущено два терминала. Терминалы доступны в нижних вкладках под именами Terminal 1 и Terminal 2.
Во время изучения и экспериментов достаточно легко допустить ошибки. Всегда внимательно читайте вывод, в случае паники переоткройте терминал. Это позволит начать все с чистого листа.
Самостоятельная работа
Чтобы научиться работать в командной строке, нужно как можно больше практиковаться в терминале на вашем компьютере.
Сначала нужно установить терминал. Установка зависит от вашей операционной системы:
- Если вы используете Linux или MacOS, в вашей операционной системе уже есть установленный терминал. Можете использовать его или скачать более продвинутую версию — например, iTerm2 для MacOS и Tilix для Linux
- Если вы работаете с ОС Windows, вам потребуется использовать WSL Далее убедитесь, что внутри терминала можно запустить bash-сессию. Откройте терминал и введите такой текст:
echo $SHELL /bin/bash # Это вывод команды, которую вы ввели выше
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар « Как самостоятельно учиться »
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Краткое введение в терминалы и консоль
Очень сжатое боевое описание «что есть псевдо-терминал» и «консоль».
Итак, во-первых, определимся с тем, что такое консоль: консоль это программа, которая принимает от пользователя кнопки, а от соединения с компьютером — буквы на экран и спец. команды по рисованию картинки на экране.
Терминал — обобщённое название как программы, так и специальной железки (таких больше нет в природе). Особое исключение — когда вы запускаете путти или ещё кого-то для подключения к последовательному порту коммутатора/рутера/модема (или даже сервера), то вы выступаете (точнее компьютер с путти выступает) в роли терминала (название «терминал» — потому что терминирует кабель (то есть висит на самом конце) ).
Как легко понять по кабелю, есть два конца: терминал и то, что ему посылает байтики в кабель.
Когда запускается шелл, то он получает в своё распоряжение виртуальное устройство /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 всегда есть два участника, один из которых умеет рисовать (сам, или выбрасывая содержимое на экран так, чтобы терминалка пользователя это нарисовала), а другой — даёт команды что рисовать и принимает последовательности нажатия кнопок.
Что такое консоль в программировании, отличие от командной строки
Что такое сигнатура в программировании: терминология и примеры
5 привычек, мешающих писать хороший код
Сергей Немчинский: Стоит ли учить старые версии языков программирования, когда есть новые?
Где найти ментора?
От программистов нередко можно услышать выражения типа «посмотри через консоль», «напиши в командной строке», «открой терминал». О чем идет речь, для чего нужна консоль в программировании, и чем она отличается от командной строки, мы расскажем в этой статье.
Что такое консоль в программировании
Консоль — это терминальный интерфейс, который используется для общения пользователя с программным обеспечением. С помощью консоли пользователь вводит команды при работе с определенной программой, а программа через консоль может выводить сообщения и ответы на запросы.
Для написания кода программисты используют специальную среду разработки, которая называется IDE (integrated development environment). Именно в IDE можно через меню вызвать дополнительный элемент интерфейса, который называется консолью.
Консоль, как правило, выглядит очень просто, она напоминает экран старомодного компьютера, на котором написан код. Так выглядело программирование до того, как появились программы с графическим интерфейсом — GUI.
Команды в консоли пишут текстом. Чтобы программа поняла команду, введенную в консоли, и выполнила требуемое действие, команда должна быть заложена в коде IDE. Если вы введете случайный набор символов, он вызовет осмысленную реакцию, только если совпадает с существующей командой.
Общего у них только то, что и то, и другое — узкоспециализированное дополнение к основному функционалу. Но именно поэтому некоторые разработчики не любят само слово «консоль», и используют английские слова — «terminal» и “shell”. При этом терминал это сам интерфейс, а шелл — то приложение, внутри которого он вызывается.
Консоль и командная строка
Консоль и командная строка работают по-разному, но их функции схожи. Мы говорим о консоли, которая используется в IDE при создании кода, то есть работает с программой. А командная строка — это небольшой элемент интерфейса, в котором можно написать команду, обращенную к операционной системе.
С помощью командной строки отдаются команды в Windows, Linux и других операционных системах. Командная строка предоставляет доступ к файлам, директориям и другим ресурсам системы и позволяет пользователю выполнять команды, такие как запуск приложения или выполнение скрипта.
Через командную строку можно проверить или настроить конфигурацию системы и периферийных устройств, например, принтеров. Можно также вызвать определенную программу, например, диспетчер задач. Наконец, можно выполнить рутинную операцию — например, проверить скорость интернет-соединения.
Итак, мы видим, что консоль и командная строка — сходные, но не идентичные интерфейсы. Консоль используется для работы внутри программной среды, а командная строка нужна для обращения к операционной системе.
Похожие материалы
IDE и редакторы кода для Python
Что такое сигнатура в программировании: терминология и примеры
5 привычек, мешающих писать хороший код
Сергей Немчинский: Стоит ли учить старые версии языков программирования, когда есть новые?
Где найти ментора?
В чем состоит основная функция консоли в программировании?
Консоль в программировании позволяет разработчикам взаимодействовать с операционной системой и выполнять различные задачи в рамках приложений и программ. Она является мощной утилитой командной строки, которая предоставляет доступ к множеству команд и утилит, используемых для отладки, тестирования и выполнения других задач в рамках программирования.
Как можно использовать консоль для отладки приложений?
Консоль может быть использована для отладки приложений путем вывода сообщений об ошибках и другой отладочной информации. Разработчики могут использовать команду «console.log()» для вывода сообщений в консоль и отслеживания процесса выполнения приложения. Это особенно полезно при разработке веб-приложений, где консоль используется для отображения информации об AJAX-запросах и других процессах.
Какие команды часто используются в консоли для программирования?
Существует множество команд и утилит, доступных в консоли, но некоторые из наиболее часто используемых включают команды для работы с файлами и папками, такие как «cd» и «ls», а также команды для работы с сетью, такие как «ping» и «nslookup». Однако, для каждого языка программирования могут быть свои особенности в использовании консоли.
Какую пользу может принести использование консоли в программировании?
Использование консоли в программировании может принести множество пользы, включая более эффективное выполнение задач в рамках приложений и программ, более быстрый доступ к утилитам и командам, а также более быстрое отладку приложений. Кроме того, консоль может быть полезна для автоматизации задач и для работы с файловой системой. В целом, консоль — это мощный инструмент, который может значительно ускорить и улучшить процесс программирования.