Что такое эмулятор терминала
Перейти к содержимому

Что такое эмулятор терминала

  • автор:

Обзор эмуляторов терминала для Android

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

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

Наиболее популярные эмуляторы

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

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

Важно: чтобы использовать определённые команды для изучения директорий, копирования и вставки, проведения более широких операций, потребуется получить root-доступ на мобильном устройстве.

Обратите внимание: без доступа со статусом суперпользователя работать можно только с базовыми опциями приложения (вы можете проверить связь, обновить и загрузить пакеты, если такие функции в принципе предусмотрены).

Qute: Terminal Emulator

У такого эмулятора есть доступ к имеющейся командной оболочке на мобильном телефоне. На своём устройстве вы можете работать с известными командами (trace, ping). Кроме вышеперечисленных опций возможна загрузка bin-файлов, формирование сценариев оболочки.

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

Разработчик отмечает, что по причине новой политики конфиденциальности, принятой Google, в приложении могут возникнуть определённые проблемы, если вы используете версию Android 11 и более новые версии. Именно поэтому нужно иметь корневое устройство, чтобы работать с расширенными опциями.

Terminal Emulator for Android

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

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

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

Material Terminal

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

Обзор SSH-клиентов для Android

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

Termux

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

Также можно открыть доступ к серверам, есть функция разработки на Си с помощью clang, gdb, make. Выбор точных функций зависит от поставленных задач, а также от наличия смартфона с root-доступом.

Посетив GitHub-страницу, можно найти полезные сведения по решению различных проблем. На данный момент обновления программы невозможны по причинам технического характера. Тем не менее вы можете поискать актуальную сборку на F-Droid.

Termius

Программа представляет собой SSH- и SFTP-клиент, который предназначен для удалённой работы на устройствах Android. С этой разработкой можно продуктивно работать с UNIX и Linux. Инструмент отличается простым пользовательским интерфейсом, здесь нет ничего непонятного. Имеется также поддержка таких протоколов, как Mosh и Telnet. После подключения к устройству на удалённой основе будут распознаваться различные платформы, в том числе Raspberry, Ubuntu, Fedora. С помощью программы можно выполнять действия на клавиатуре, если подключить её к смартфону. Ещё один плюс — в приложении нет рекламы и навязчивых баннеров, именно поэтому инструмент считается идеальным решением для удалённого доступа.

В Termius есть платная версия, при этом пользователям доступен бесплатный 14-дневный тестовый период. Платное использование позволяет работать с дополнительными опциями, в том числе с кросс-синхронизацией с шифрованием, терминальными вкладками. Почитать подробнее об этом можно на официальном сайте.

JuiceSSH

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

Учитывайте и то, что у вас будет поддержка IPv6. Если вы приобретёте платную лицензированную версию, у вас будет возможность настройки взаимодействия с AWS, подключения безопасной синхронизации, автоматизации копирования резервных версий и другие функции.

ConnectBot

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

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

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

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

Что такое Terminal

Когда я начинал свою аспирантуру в Университете Хельсинки, самое страшное, что я мог видеть у моих коллег — это черный экран, в котором есть только текст и мигающий курсор. Позже я узнал, что эта программа называется 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, а также настроим его под себя для последующей удобной работы.

Обзор эмуляторов терминала

Пара слов от нашего translate-бюро: обычно все стремятся переводить самые свежие материалы и публикации, и мы не исключение. Но терминалы — это не то, что обновляется раз в неделю. Поэтому мы перевели для вас статью Антуана Бопре, опубликованную весной 2018 года: несмотря на солидный по современным меркам «возраст», на наш взгляд, материал совершенно не потерял актуальности. Кроме того, в оригинале это серия из двух статей, но мы приняли решение объединить их в один большой пост.

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

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

Вот рассмотренные мной терминалы:

Возможно, это не самые свежие версии, так как я ограничивался стабильными сборками на момент написания материала, которые у меня получилось раскатать на Debian 9 или Fedora 27. Единственное исключение — Alacritty. Он является потомком терминалов с GPU-ускорением и написан на необычном и новом для этой задачи языке — Rust. Я исключил из своего обзора веб-терминалы (в том числе, и на Electron), потому что предварительные тесты показали их крайне низкую производительность.

Поддержка юникода

Свои тесты я начал с поддержки юникода. Первым тестом терминалов было отображение оными строки о юникоде из статьи на Википедии: «é, Δ, Й, ק, م, ๗, あ, 叶, 葉 и 말». Этот простой тест показывает, может ли терминал корректно работать по всему миру. Терминал xterm не отображает арабский символ Mem в конфигурации по умолчанию:

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

Эти скриншоты были сделаны в Fedora 27, так как именно она давала лучшие результаты, нежели Debian 9, где некоторые старые версии терминалов (а конкретно — mlterm) не могли должным образом работать со шрифтами. К счастью, это было поправлено в более поздних версиях.

Теперь обратите внимание на отображение строки в xterm. Оказывается, символ Mem и следующий за ним Semitic Qoph относятся к сценариям начертания RTL (right-to-left), поэтому технически они должны отображаться справа налево. Веб-браузеры, например Firefox 57, правильно обрабатывают приведенную выше строку. Более простым вариантом RTL-текста является слово «Сара» на иврите (שרה). Страница Вики о двунаправленных текстах говорит следующее:

Многие терминалы не проходят этот тест: Alacritty, VTE-производные терминалы Gnome и XFCE, urxvt, st и xterm отображают «Сара» в обратном порядке, как если бы мы записывали это имя как «Арас».

Другая проблема двунаправленных текстов заключается в том, что их надо как-то выровнять, особенно если речь идет о смешении RTL и LTR-текстов. Сценарии RTL должны запускаться с правой стороны окна терминала, но что должно происходить для терминалов, по умолчанию работающих с LTR-английским? Большинство из них не обладают какими-то специальными механизмами и выравнивают весь текст по левому краю (в том числе, и в Konsole). Исключением являются pterm и mlterm, которые придерживаются стандартов и выравнивают такие строки по правому краю.

Защита от вставки

Следующая критическая особенность, которую я для себя определил, — это защита от вставки. Хотя широко известно, что заклинания типа:

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

превращается при вставке с сайта Хорна в терминал вот в такую неприятность:

Как это работает? Вредоносный код вынесен в блок <spаn>, который перемещен из поля зрения пользователя средствами CSS.

Режим Bracketed paste явно предназначен для нейтрализации подобных атак. В этом режиме терминалы заключают вставляемый текст в пару специальных escape-последовательностей, чтобы сообщить оболочке о происхождении этого текста. Так оболочка получает сигнал, что может игнорировать специальные символы, которые может содержать вставляемый текст. Все терминалы, вплоть до почтенного xterm, поддерживают данную функцию, но вставка в Bracketed-режиме нуждается в поддержке оболочки или приложения, запущенного на терминале. Например, ПО использующее GNU Readline (тот же Bash), нуждается в файле

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

Хорошим решением этой проблемы является плагин подтверждения вставки для терминала urxvt, который просто запрашивает разрешение на вставку любого текста, содержащего в себе новые строки. Более защищенного варианта для описываемой Хорном текстовой атаки я не нашел.

Вкладки и профили

Популярной сейчас функцией является поддержка интерфейса с вкладками, который мы будем определять как одно окно терминала, содержащее в себе еще несколько терминалов. Для разных терминалов эта функция отличается, и хотя традиционные терминалы вида xterm вообще не поддерживают вкладки, более современные инкарнации терминала в лице Xfce Terminal, GNOME Terminal и Konsole эту функцию имеют. Также поддержка вкладок есть и у Urxvt, но только при условии использования плагина. Но с точки зрения поддержки вкладок как таковых безусловным лидером является Terminator: он не только поддерживает вкладки, но также может размещать терминалы в произвольном порядке (см изображение ниже).

Еще одной особенностью Terminator является возможность «группировать» эти вкладки вместе и посылать одни и те же нажатия клавиш на несколько терминалов одновременно, что обеспечивает грубый инструмент выполнения массовых операций на нескольких серверах одновременно. Аналогичная функция также реализована и в Konsole. Для использования этой функции в других терминалах необходимо использовать стороннее программное обеспечение, такое как Cluster SSH, xlax или tmux.

Особенно хорошо вкладки работают вкупе с профилями: например, у вас может быть одна вкладка для электронной почты, другая для чата и так далее. Это хорошо поддерживается терминалом Konsole и GNOME Terminal. Оба позволяют каждой вкладке автоматически запускать свой профиль. Terminator тоже поддерживает профили, но я не смог найти способ автоматически запускать определенные программы при открытии определенной вкладки. Другие терминалы вообще не имеют понятия «профиль».

Рюшечки

Последнее, что я рассмотрю в первой части этой статьи, — внешний вид терминалов. Например GNOME, Xfce и urxvt поддерживают прозрачность, но недавно свернули поддержку фоновых изображений, что заставило некоторых пользователей перейти на терминал Tilix. Лично меня устраивает и просто Xresources, который устанавливает базовый набор цветов фона для urxvt. Однако нестандартные цветовые темы могут создавать и проблемы. Например, Solarized не работает с приложениями htop и IPTraf, так как они уже используют собственные цвета.

Оригинальный терминал VT100 не поддерживал цвета, а новые зачастую ограничивались 256-цветной палитрой. Для опытных пользователей, которые стилизуют свои терминалы, запросы оболочки или строки состояния какими-то сложными способами, могут стать неприятным ограничением. Gist отслеживает, какие терминалы имеют поддержку «True Color». Мои тесты подтверждают, что st, Alacritty и терминалы на базе VTE прекрасно поддерживают True Color. Другие терминалы в этом плане чувствуют себя не очень хорошо и по факту не отображают даже 256 цветов. Ниже вы можете увидеть разницу между поддержкой True Color в терминалах GNOME, st и xterm, которые неплохо справляются с этой задачей с помощью своей 256-цветовой палитры, и urxvt, который не только не проходит тест, но даже показывает какие-то мигающие символы вместо них.

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

Наконец, новый тренд терминалов — опциональность буфера прокрутки. Например, в st нет буфера прокрутки; предполагается, что пользователь будет использовать терминальный мультиплексор, вроде tmux и GNU Screen.

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

Промежуточные итоги

Во второй части материала (в оригинале это были две разные статьи, — прим. пер.) мы сравним производительность, использование памяти и задержку. Но мы уже видим, что некоторые из рассматриваемых терминалов имеют серьезные недостатки. Например, пользователи на регулярной основе работающие с RTL-скриптами могут обратить внимание на mlterm и pterm, так как они лучше других справляются с подобными задачами. Konsole также хорошо проявил себя. Пользователи, не работающие с RTL-скриптами, могут выбирать что-нибудь другое.

С точки зрения защищенности от вставки вредоносного кода urxvt стоит особняком из-за своей особой реализации защиты от этого вида атак, которая мне кажется определенно удобной. Тем, кто ищет какие-нибудь навороты, стоит посмотреть на Konsole. Наконец, стоит отметить, что VTE — отличная база для терминалов, которая гарантирует поддержку цветов, распознавание URL и так далее. На первый взгляд, дефолтный терминал, поставляемый с вашей любимой средой, может отвечать всем требованиям, но оставим этот вопрос открытым, пока не разберемся с производительностью.

Продолжаем разговор


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

Задержка

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

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

Фатин объясняет, что такой пинг имеет более глубокие последствия, нежели просто удовлетворение: «печатание становится медленнее, возникает больше ошибок, увеличивается напряжение глаз и мышц». Другими словами, большая задержка может привести к опечаткам, а также снижению качества кода, так как приводит к дополнительной когнитивной нагрузке на мозг. Но что еще хуже, пинг «увеличивает напряжение глаз и мышц», что, по-видимому, подразумевает развитие профессиональных травм в будущем (по всей видимости, автор имеет в виду проблемы с мышцами глаз, спиной, руками и, конечно же, зрением, — прим. пер.) из-за повторяющегося напряжения.

Некоторые из этих эффектов известны давно, а результаты исследования, опубликованного еще в 1976 году в журнале Ergonomics, говорят, что задержка в 100 миллисекунд «значительно ухудшает скорость набора». Совсем недавно в руководстве пользователя GNOME было внесено приемлемое время отклика в 10 миллисекунд, а если идти дальше, то Microsoft Research показывает, что идеалом является 1 миллисекунда.

Фатин проводил свои тесты на текстовых редакторах; он создал портативный инструмент под названием Typometer, который я использовал для проверки пинга в эмуляторах терминала. Имейте в виду, что тест проводился в режиме симуляции: в действительности нам надо учитывать и задержку ввода (клавиатура, USB-контроллер и так далее) и вывода (буфер видеокарты, монитор). По словам Фатина, в типичных конфигурациях она составляет около 20 ms. При наличии геймерского оборудования можно достигнуть показателя всего в 3 миллисекунды. Так как у нас уже есть такое быстрое оборудование, приложение не должно вносить еще и свою задержку. Цель Фатина —довести задержку приложения до 1 миллисекунды, или вовсе достигнуть набора без измеримой задержки, как в IntelliJ IDEA 15.

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

Первое, что меня поразило — это лучшее время отклика у старых программ, таких как xterm и mlterm. С наличием худшей задержки регистра (2,4 ms) они показали результат лучше, чем самый быстрый современный терминал (10,6 ms для st). Ни один современный терминал не опускается ниже порога в 10 миллисекунд. В частности, Alacritty не соответствует требованиям к «самому быстрому из существующих эмуляторов терминала», хотя его результаты улучшились с момента первой проверки в 2017 году. Действительно, авторы проекта в курсе ситуации и работают над улучшением отображения. Также необходимо отметить, что Vim, использующий GTK3, на порядок медленнее своего аналога GTK2. Из этого можно сделать вывод, что GTK3 создает дополнительную задержку, и это отражается на всех прочих терминалах, которые его используют (Terminator, Xfce4 Terminal и GNOME Terminal).

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

График выше взят получен на чистом Debian 9 (stretch) с i3 window manager. Эта среда дает наилучшие результаты в тестах на определение задержки. Как оказалось, GNOME создает дополнительный пинг в 20 ms для всех измерений. Возможное объяснение этому — наличие программ с синхронной обработкой входных событий. Фатин приводит для такого случая в пример Workrave, который добавляет задержку обрабатывая все input-события синхронно. По умолчанию GNOME также оснащен менеджером окон Mutter, которые создает дополнительный уровень буферизации, что влияет на пинг и добавляет минимум 8 миллисекунд задержки.

Скорость прокрутки

Следующий тест — это традиционная проверка «скорости» или «полосы пропускания», которая измеряет, как быстро терминал может прокручивать страницу, отображая большое количество текста на экране. Механика теста варьируется; оригинальный тест состоял в том, чтобы просто генерировать одну и ту же текстовую строку с помощью команды seq. Другие тесты включают в себя проверку Томаса Е. Дики (сопровождающего xterm), в рамках которого многократно выгружается файл terminfo.src. В еще одном обзоре производительности терминалов Ден Луу использует строку случайных байтов в кодировке base32, которая выводится в терминал с помощью cat. Луу считает такой тест «настолько бесполезным эталоном, насколько это можно себе представить» и предлагает использовать вместо этого отклик терминала в качестве основного показателя. Дики также называет свой тест вводящим в заблуждение. Тем не менее, оба автора признают, что пропускная способность окна терминала может быть проблемой. Луу обнаружил зависание Emacs Eshell при отображении больших файлов, а Дики оптимизировал терминал, чтобы избавиться от визуальной медлительности xtrerm. Поэтому в этом тесте все еще есть некоторый резон, но поскольку процесс рендеринга сильно отличается от терминала к терминалу, его можно использовать и как тестовый компонент для проверки других параметров.

Здесь мы видим, что rxvt и st вырываются вперед на фоне конкурентов, следом идет намного более новый Alacritty, разрабатываемый с упором на быстродействие. Далее идут Xfce (семейство VTE) и Konsole, которые работают почти вдвое быстрее. Последним идет xterm с показателем в пять раз медленнее rxvt. Во время теста xterm также сильно рябил, проходящий текст было трудно разглядеть, даже если это была одна и та же строка. Konsole оказался быстрым, но он временами «хитрил»: дисплей время от времени зависал, показывая текст частично или не отображая его вовсе. Другие терминалы отображали строки четко, включая st, Alacritty и rxvt.

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

Чтобы исправить эту кажущуюся медлительность xterm, Дики предлагает использовать ресурс fastScroll, позволяющий xterm отбрасывать некоторые обновления экрана, чтобы не отставать от потока. Мои тесты подтверждают, что fastScroll повышает производительность и выводит xterm на один уровень с rxvt. Это, однако, довольно грубый костыль, как объясняет сам Дики: «иногда xterm — как и konsole — кажется, останавливается, так как он ожидает нового набора обновлений экрана после того, как некоторые из них были удалены». В этом ключе кажется, что другие терминалы нашли наилучший компромисс между скоростью и целостностью дисплея.

Потребление ресурсов

Независимо от целесообразности рассмотрения скорости прокрутки в качестве показателя производительности, этот тест позволяет имитировать нагрузку на терминалы, что, в свою очередь, позволяет нам измерять другие параметры, такие как использование памяти или диска. Метрики были получены путем запуска указанного теста seq под мониторингом процесса Python. Он собирал данные счетчиков getrusage () для ru_maxrss, сумму ru_oublock и ru_inblock и простой таймер времени.

В этом тесте ST занимает первое место с наименьшим средним потребляемым объемом памяти в 8 МБ, что неудивительно, если учесть, что основная идея проекта — это простота. Немного больше потребляет mlterm, xterm и rxvt — около 12 МБ. Еще один заметный результат у Alacritty, которому для работы требуется 30 МБ. Затем идут терминалы семейства VTE с показателями от 40 до 60 МБ, что достаточно много. Подобное потребление можно объяснить тем, что эти терминалы используют библиотеки более высокого уровня, например, GTK. Konsole идет последним с колоссальным потреблением 65 МБ памяти во время тестов, хотя и это можно оправдать его весьма широким набором функций.

По сравнению с предыдущими результатами, полученными десять лет назад, все программы стали потреблять заметно больше памяти. Раньше Xterm требовал 4 МБ, а теперь — 15 МБ просто на запуске. Аналогичное увеличение потребления есть и у rxvt, который теперь из коробки требует 16 МБ. Терминал Xfce занимает 34 МБ, что в три раза больше, чем раньше, а вот GNOME Terminal требует всего 20 МБ. Конечно, все предыдущие тесты проводились на 32-битной архитектуре. На LCA 2012 Расти Рассел рассказал, что есть множество более тонких причин, которые могут объяснить рост потребления памяти. При всем этом сейчас мы живем во времена, когда у нас есть целые гигабайты памяти, так что как-нибудь справимся.

Тем не менее, я не могу избавиться от ощущения, что выделение большего количества памяти на такое фундаментальное ПО, как терминал, — это пустая трата ресурсов. Эти программы должны быть наименьшими из самых маленьких, должны быть способны работать на любой «коробке», даже обувной, если мы когда-нибудь придем к тому, что их надо будет оснащать Linux-системами (а вы знаете, что так оно и будет). Но с этими цифрами использование памяти станет в будущем проблемой в любой среде при запуске нескольких терминалов, кроме ситуации с несколькими самыми легкими и ограниченными в возможностях. Чтобы компенсировать это, GNOME Terminal, Konsole, urxvt, Terminator и Xfce Terminal имеют Daemon-режим, который позволяет управлять несколькими терминалами через один процесс, что ограничивает их потребление памяти.

В ходе своих тестов я пришел к еще одному неожиданному результату касательно дискового чтения-записи: я ожидал вообще ничего тут не увидеть, но оказалось, что некоторые терминалы записывают самые объемные данные на диск. Так, библиотека VTE фактически держит на диске буфер скролла (эта особенность была замечена еще в 2010 году, и это происходит до сих пор). Но в отличие от старых реализация, сейчас, по крайне мере, эти данные зашифрованы с помощью AES256 GCM (с версии 0.39.2). Но возникает резонный вопрос, что же такого особенного в библиотеке VTE, что она требует такого нестандартного подхода к реализации…

Заключение

В первой части статьи мы обнаружили, что терминалы на основе VTE имеют хороший набор функций, но теперь мы видим, что это связано с некоторыми затратами на обеспечение их производительности. Сейчас память не является проблемой, потому что всеми VTE-терминалы можно управлять через Daemon-процесс, который ограничивает их аппетит. Тем не менее, старые системы, имеющие физические ограничения по количеству оперативной памяти и буфера ядра, могут по-прежнему нуждаться в более ранних версиях терминалов, так как они потребляют значительно меньше ресурсов. Хотя терминалы VTE показали себя хорошо в тестах на пропускную способность (прокрутка), их задержка отображения данных на дисплее выше установленного порога в руководстве пользователя GNOME. Вероятно, разработчикам VTE стоит это учесть. Если принять в расчет то, что даже для начинающих пользователей Linux встреча с терминалом неизбежна, они могут сделать его более дружелюбным по отношению к юзеру. Для опытных гиков переход с терминала по умолчанию может означать даже снижение нагрузки на зрение и возможность избежать профессиональных травм и заболеваний в будущем из-за продолжительных рабочих сессий. К сожалению, только старые xterm и mlterm подводят нас к волшебному порогу пинга в 10 миллисекунд, что для многих неприемлемо.

14 лучших эмуляторов терминалов Linux с дополнительными функциями [2021]

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

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

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

Отличные эмуляторы терминала для Linux

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

1. Терминатор

Терминал терминатора

Ключевые моменты:

  • Несколько терминалов GNOME в одном окне

Terminator — довольно популярный эмулятор терминала, который все еще поддерживается (перенесен с Launchpad на GitHub).

По сути, он предоставляет вам несколько терминалов GNOME в одном окне. С его помощью вы можете легко группировать и перегруппировать окна терминала. Вы можете захотеть использовать тайловый оконный менеджер, но с некоторыми ограничениями.

Как установить Терминатор?

Для дистрибутивов на основе Ubuntu все, что вам нужно сделать, это ввести следующую команду в терминале:

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

2. Терминал Гуаке

Guake терминал 2

Ключевые моменты:

  • Предназначен для быстрого доступа к терминалу в GNOME
  • Работает быстро и не требует большого количества системных ресурсов
  • Сочетание клавиш для доступа

Терминал Guake изначально был вдохновлен игрой Quake. В отличие от некоторых других эмуляторов терминала, он работает как наложение на каждое другое активное окно.

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

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

Как установить Guake Terminal?

Guake доступен в репозиториях по умолчанию для большинства дистрибутивов Linux. Вы можете сослаться на его официальные инструкции по установке .

Или, если вы используете дистрибутив на основе Debian, просто введите следующую команду:

3. Тиликс Терминал

tilix скриншот

Ключевые моменты:

  • Функция плитки
  • Поддержка перетаскивания
  • Выпадающий режим Quake

Tilix Terminal предлагает аналогичный раскрывающийся список, который вы найдете в Guake, но он также позволяет вам иметь несколько окон терминала в режиме мозаики.

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

Мы уже рассказывали об этом раньше в отдельности если вам интересно узнать об этом больше.

Как установить Тиликс?

Tilix доступен в репозиториях по умолчанию для большинства дистрибутивов. Если вы используете дистрибутив на основе Ubuntu, просто введите:

Рекомендуем прочитать:

Хотите украсить свой Linux-терминал и придать ему другой вид? Вот несколько способов настроить свой терминал.

4. Гипер

гипер скриншот

Ключевые моменты:

  • Терминал построен на HTML / CSS / JS
  • Электронный
  • Кроссплатформенность
  • Обширные возможности конфигурации

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

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

Как установить Hyper?

Hyper недоступен в репозиториях по умолчанию. Однако вы можете найти пакеты .deb и .rpm, доступные для установки через их Официальный веб-сайт .

Если вы новичок, прочитайте статьи, чтобы получить помощь использование файлов deb и с использованием файлов RPM .

5. Тильда

терминал тильда

Ключевые моменты:

  • Выпадающий терминал
  • Панель поиска интегрирована

Tilda — еще один выпадающий эмулятор терминала на основе GTK. В отличие от некоторых других, он фокусируется на предоставлении встроенной панели поиска, которую вы можете переключать, а также позволяет настраивать многие вещи.

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

Как установить Тильду?

Для дистрибутивов на основе Ubuntu вы можете просто ввести:

Вы можете сослаться на его Страница GitHub для инструкций по установке в других дистрибутивах.

6. eDEX-UI

Матричный терминал Edex Ui

Ключевые моменты:

  • Научно-фантастический образ
  • Кроссплатформенность
  • Параметры темы для настройки
  • Поддерживает несколько вкладок терминала

Если вам не нужен эмулятор терминала, который поможет вам выполнять работу быстрее, вы должны попробовать eDEX-UI.

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

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

Возможно, вы захотите ознакомиться с нашей специальной статьей о eDEX-UI чтобы узнать больше об этом и о шагах по его установке.

Как установить eDEX-UI?

Вы можете найти его в некоторых репозиториях, которые включают AUR . В любом случае вы можете получить пакет, доступный для вашего дистрибутива Linux (или файл AppImage), из его Раздел выпусков GitHub .

Рекомендуем прочитать:

Хотите украсить свой Linux-терминал и придать ему другой вид? Вот несколько способов настроить свой терминал.

7. Классный ретро-терминал

Cool Retro Term - это винтажный эмулятор терминала для Linux

Ключевые моменты:

  • Ретро Тема
  • Анимация / эффекты для настройки

Cool Retro Terminal — это уникальный эмулятор терминала, который дает вам вид старинного монитора с электронно-лучевой трубкой.

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

Как установить Cool Retro Terminal?

Вы можете найти все инструкции по установке для основных дистрибутивов Linux в его Страница GitHub . Для дистрибутивов на основе Ubuntu вы можете ввести в терминал следующее:

8. Alacritty

быстрый скриншот

Ключевые моменты:

  • Кроссплатформенность
  • Возможности расширения и упор на интеграцию

Alacritty — интересный кроссплатформенный эмулятор терминала с открытым исходным кодом. Несмотря на то, что он находится на стадии «бета-тестирования», он все еще работает.

Его цель — предоставить вам обширные возможности конфигурации, не забывая при этом о производительности. Например, возможность щелкнуть URL-адрес с помощью клавиатуры, скопировать текст в буфер обмена и выполнить поиск в режиме «Vi» может заинтересовать вас попробовать это.

Вы можете изучить его страницу GitHub для получения дополнительной информации.

Как установить Alacritty?

Alacritty можно установить с помощью диспетчеров пакетов, говорится на официальной странице GitHub, но я не смог найти его в репозитории по умолчанию или менеджер синаптических пакетов в Linux Mint 20.1.

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

9. Konsole

консоль скриншот

Ключевые моменты:

  • Терминал KDE
  • Легкий и настраиваемый

Если вы не новичок, это, вероятно, не нуждается в представлении. Konsole — это эмулятор терминала по умолчанию для окружения рабочего стола KDE.

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

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

Как установить Konsole?

Для дистрибутивов на основе Ubuntu и большинства других дистрибутивов вы можете установить его, используя репозиторий по умолчанию. В дистрибутивах на основе Debian вам просто нужно ввести это в терминале:

10. Терминал GNOME

Терминал по умолчанию

Ключевые моменты:

  • Терминал GNOME
  • Простой, но настраиваемый

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

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

Я также рассмотрел учебник по настроить свой терминал GNOME если вам интересно.

Как установить терминал GNOME?

Если вы не используете рабочий стол GNOME, но хотите попробовать его, вы можете легко установить его из репозиториев по умолчанию.

Для дистрибутивов на основе Debian вот что вам нужно ввести в терминал:

11. Якуаке

терминал якуаке

Ключевые моменты:

  • Выпадающий терминал
  • На основе KDE Konsole

Yakuake — еще один впечатляющий эмулятор терминала, который может заменить Guake в зависимости от того, что вам нравится. Он основан на технологиях KDE Konsole, которые также являются мощным эмулятором терминала, который по умолчанию загружается вместе с KDE Desktop.

Он поддерживает настройку ширины и высоты, а также дает вам возможность работать в полноэкранном режиме. Вы также можете добавить несколько оболочек.

Вы также можете создавать / управлять профилями и назначать сочетания клавиш для адаптации к вашему рабочему процессу.

Как установить Якуаке?

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

Если вы не нашли его в репозитории вашего дистрибутива Linux, вы можете попробовать собрать и установить его, следуя инструкциям в его Страница GitHub .

12. Китти

Китти терминал

Ключевые моменты:

  • Многофункциональный
  • На базе GPU
  • Быстрая производительность
  • Кроссплатформенность (macOS)

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

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

Это будет отличным вариантом для вас, особенно если вы опытный пользователь клавиатуры!

Как установить Китти?

Kitty должна быть доступна во всех репозиториях по умолчанию ваших дистрибутивов Linux. Для систем на основе Ubuntu вы можете установить его, набрав:

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

13. Простой терминал (ул)

простой терминал

Ключевые моменты:

  • Простой терминал с основными функциями
  • Wayland поддерживается

Простой терминал или широко известный как ул это альтернатива для пользователей, которым не нравятся раздутые эмуляторы терминала, такие как xterm или rxvt .

Он предлагает несколько полезных функций, таких как поддержка 256 цветов и многое другое.

Как установить st?

Для дистрибутивов на основе Ubuntu вы можете установить его, набрав:

Вы можете попробовать найти такой же пакет в своем дистрибутиве. Он должен быть доступен как st in AUR для дистрибутивов на основе Arch. Если вы его не нашли, просто скачайте архивный файл со своего официального сайта построить его из исходников.

14. XTERM

терминал xterm

Ключевые моменты:

  • Многофункциональный
  • Один из старейших эмуляторов терминала

XTERM — один из самых популярных эмуляторов терминала. Несмотря на то, что это может показаться раздутым вариантом по сравнению с st, это все же достойный вариант, который вы можете попробовать для X Window System.

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

Как установить XTERM?

Вы можете легко найти его в репозиториях вашей системы. Для дистрибутивов на основе Ubuntu вы можете установить его с помощью следующей команды:

Вы можете найти другие пакеты (включая NetBSD) на его Официальный веб-сайт .

Похвальный отзыв

urxvt — это форк эмулятора терминала rxvt с поддержкой Unicode, о которой вы, возможно, захотите узнать. Это позволяет вам иметь несколько окон на разных дисплеях вместе с множеством других функций.

К сожалению, официальный веб-сайт помечается Firefox из-за испорченных SSL-сертификатов, и, похоже, последний раз журнал изменений обновлялся в 2016 году. Следовательно, я избегал связывать его здесь, вы можете изучить его самостоятельно, если вам интересно.

Заключение

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

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

Какой ваш любимый эмулятор терминала в Linux? Я пропустил перечисление вашего фаворита? Не стесняйтесь сообщать мне свои мысли в комментариях ниже.

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

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