Найти тему
Дмитрий Сазонов

Termux: дружественный терминал для Android

Добро пожаловать в Termux!

Потребление контента, цифровых услуг, а также времяпровождение в месенджерах и социальных сетях — основное, для чего запрограммированы современные смартфоны. Что, например, подтверждают регулярные обзоры «12 бесплатных программ для Android».

Но хотелось бы не ограничивать себя пределами треугольника «соцсети — контент — услуги» и, например, воспользоваться на смартфоне прикладными программами с настольного ПК. Тем более в мобильных устройствах давно уже хватает необходимых и гигабайт, и гигагерц. Однако заменить смартфоном даже простенький ноутбук так просто не получается. За последние десятилетия мы привыкли к дружественному графическому WYSWYG-интерфейсу в программах для десктопа. Однако на малодюймовых дисплеях смартфонов WYSWYG теряет свою дружественность. Десктопный «Фотошоп» со всеми его графическими панелями и меню, конечно, можно впихнуть на дисплей смартфона, но пользоваться им будет сложно.

А вот для интерфейса командной строки небольшого экрана хватает за глаза. К тому же система «Андроид» основана на ядре Linux, и пользоваться консольными утилитами здесь, можно сказать, сам Линус Торвальдс велел. Поэтому логично поискать какой-нибудь дружественный для смартфона эмулятор терминала, позволяющий на операционной системе Android устанавливать и запускать стандартные программы Linux с интерфейсом командной строки, и тем самым расширить прикладные возможности смартфона.

Сразу скажем, такой дружественный эмулятор терминала для «Андроида» уже найден. Называется он Termux.

-2

Первыми Termux заприметили хакеры и те, кто себя к таковыми причисляет. Потому что с помощью этого эмулятора запускается джентльменский набор хакерских утилит: инструмент реверс-инжиниринга Radare2, брутфорсер Hydra, wifi-перехватчик Aircrack-ng, хакерский фреймворк Metasploit и другие. Неудивительно, что за Termux закрепилось звание лучшего карманного друга хакера.

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

  • дружественный для мобильного устройства интерфейс
  • собственный репозиторий программного обеспечения
  • система дополнений (аддонов)

Ниже рассмотрим эти возможности Termux подробнее.

Установка

Для работы Termux требуется Android 5 и выше. Установка этого эмулятора терминала производится в одно нажатие с сервисов Google Play или F-droid. Будет загружено приложение размером чуть более 200 килобайт, которое сразу же готово к работе. Текущая версия приложения на момент написания статьи 0.98.

Начальный экран termux
Начальный экран termux

Termux не требует настройки или какого-либо редактирования конфигурационных файлов. Также не потребуется для работы Termux прав суперпользователя (root). Эмулятор будет использовать ядро Linux и системную библиотеку libc (Bionic) установленной на смартфон системы Android.

Но так как операционная система Android не использует стандартную иерархию файловой систем для Unix/Linux, а также имеет особенности многопользовательского режима, то следует пояснить как и куда Termux устанавливается.

Все необходимые для работы с Termux каталоги и файлы устанавливаются в специальную для Android-приложений директорию /data/data во внутреннем хранилище устройства. В текущих версиях Termux корневой каталог этого эмулятора терминала будет расположен в каталоге /data/data/com.termux/files. Здесь будет находится каталог usr для устанавливаемых приложений и их настроек. Так же здесь будет создана домашняя директория home для пользователя Android c именем наподобие u0_a81. Выяснить имя пользователя Termux можно командой whoami, а командой env — полные пути глобальных переменных $PATH, $PREFIX, $HOME и другую информацию.

Вывод whoami, env
Вывод whoami, env

В Android-системах приложения обычно не видят файлы друг друга в каталоге /data/data. Чтобы иметь возможность редактировать файлы и с помощью программ Termux, и с помощью внешних программ Android, в домашнем каталоге эмулятора терминала можно создать классические ссылки (symlink) на общие папки во внутреннем хранилище смартфона, В комплект с эмулятором уже входит дружественный скрипт termux-setup-storage, после запуска которого в директории $HOME будет создан каталог storage, а в нём — ссылки на стандартные папки для общих данных DCIM, Downloads, Share, Pictures, Music, Movies. В результате, например, текстовые файлы, расположенные в этих каталогах, будет просто редактировать и с помощью Vim в Termux, и с помощью текстового редактора Total Commander или какого другого.

-5

Установка Termux на внешние SD-карты не поддерживается. По той причине, что, как правило, SD-карты отформатированы в файловой системе FAT, которая не предоставляет всех необходимых файловых атрибутов, необходимых для запуска стандартных Linux-приложений.

Интерфейс Termux

Termux является приложением для ОС Android и обладает всеми интерфейсными возможностями этой системы: поворот экрана, иконка в служебной панели, выделение текста, копирование/вставка через буфер обмена, ввод через экранную клавиатуру, красивые моноширные Android-шрифты.

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

-6

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

Midnight Commander в Termux
Midnight Commander в Termux

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

-8

Пару слов об экранной клавиатуре. Для работы в терминале Linux-системы необходимы специальные клавиши — Tab, Alt, Ctrl, вверх-вниз. Termux в нижней части экрана имеет свою специальную экранную панельку с этими специальными символами. Поэтому совсем необязательно устанавливать клавиатуру наподобие Hacker’s Keyboard, а довольствоваться стандартной экранной клавиатурой Android.

Само собой, в Termux поддерживаются внешние USB-, Bluetooth-клавиатуры.

Единственное, что в интерфейсе Termux может вызвать некоторое замешательство и лёгкую панику — это неочевидный вызов главного меню, где находится опция выхода из сессии терминала. Главное меню называется «more», и оно объединено со стандартным меню «copy/paste», которое вызывается длительным нажатием на экран смартфона. Так что для Termux вполне можно переиначить старый анекдот о Vim: я постоянно работаю в Termux, потому что не знаю как из него выйти. Правильный выход из текущей сессии терминала — это набрать команду exit.

Программы

Termux — это больше чем просто эмулятор терминала. Практически это дистрибутив Linux, потому что к нему имеется собственный репозиторий прикладного программного обеспечения. Репозиторий Termux содержит более 500 программных пакетов, скомпилированных и готовых к установке для этого эмулятора терминала. Это, конечно не Debian/Linux, в репозитории которого около 30 000 пакетов. Тем не менее в репозитории Termux можно подобрать себе джентльменский набор ПО не только для хакеров:

  • Программирование: Сlang — компилятор С/С++, Python, Ruby, Rust, Lisp;
  • Редактирование текста, IDE: Emacs, Vim/Neovim, Nano, Joe, Ne;
  • Командные оболочки: BASH (по умолчанию), ZSH, FISH, TCSH;
  • Web-разработка: Apache, Nginx, PHP, MariaDB;
  • Изображения, звук, видео: Ffmpeg, Imagemagick, G’MIC, Graphicsmagick, Play-aydio, Music Player Daemon, Dcraw;
  • Удалённое администрирование: Openssh, Dropbear, SFTP, MOSH, Rsync.

MariaDB в Termux

Установка пакетов осуществляется через специальный пакетный менеджер pkg, который является «обёрткой» (враппером) для пакетного менеджера apt. После установки Termux следует обновить пакетную базу:

$ pkg update

$ pkg upgrade

Поиск доступного пакета в базе:

$ pkg search [package name]

Установка пакета:

$ pkg install [package name]

Удаление пакета:

$ pkg uninstall [package name]

Пакеты в репозитории Termux обновляются методом rolling release. То есть программы обновляются постоянно по мере выхода их новых версий. Список готовых к обновлению пакетов можно посмотреть командой apt list —upgradeable. Список всех установленных пакетов выдаёт команда dpkg -l.

Для сборки собственных пакетов существует и специальный тулчейн для Docker, который содержит необходимое для компиляции приложений Termux из исходных кодов. Но данная возможность — тема отдельной статьи.

Трудности

Трудности тоже в Termux присутствуют. Куда ж без них! Они обусловлены, во-первых, Bionic — системной Си-библиотекой для Android. В Bionic не реализованы многие функции стандартной libc. Поэтому, например, нельзя сгенерировать нужный региональный стандарт (локаль) и связанные с ним переменные окружения с помощью locale-gen, в результате чего в Termux нельзя видеть кодировку отличную от Юникода,

Во-вторых, это проблемы роста Termux как проекта. которому есть куда развиваться в отношении поддержки пакетов. Сообщество Termux не такое большое как сообщество Debian и поддержки пакетов уровня крупных дистрибутивов здесь пока нет. Так установочные скрипты, которые осуществляют автоматическую настройку программы после её установки, как это реализовано в пакетах Debian. в пакетах из репозитория Termux могут отсутствовать. И, например, чтобы запустить Apache+PHP+MariaDB придётся почитать инструкции и в ручном режиме их выполнить.

Для многих чтение мануалов и инструкций — это существенный минус к дружественности.

Дополнения (аддоны)

Для Termux имеется дополнения в виде отдельных приложений, которые нужно скачивать и устанавливать отдельно (В Google Play некоторые аддоны не бесплатны). Эти дополнения расширяют возможности Termux. Следует иметь в виду, что эти дополнения нужно устанавливать с того же ресурса, с которое была загружена основная программа — с Google Play или же с F-droid — так как на разных ресурсах установочные пакеты программы имеют разные цифровые подписи.

Termux: Styling. Как легко догадаться по названию, с помощью этого дополнения легко поменять внешний вид Termux. Изменить можно цвета фона и шрифта, а также сам шрифт. Аддон после установки вызывается через главное меню Termux.

Светлая тема Termux

Termux: API. Замечательное дополнение, которое предоставляет из командной строки доступ к функциям системы Android. То есть с помощью специальных команд можно прямо из терминала получить доступ к функциям фотокамеры, датчиков, свойствам дисплея, списку телефонных вызовов, СМС-сообщениям, системному буферу обмена, GPS, WiFi и многому другому, Кроме установки самого аддона, следует ещё специальный пакет termux-api из репозитория Termux. Примеры команд:

  • termux-battery-status — статус батареи
  • termux-contact-list — вывод адресной книги
  • termux-camera-photo — сделать фотографию
  • termux-telephony-call — сделать телефонный звонок

В целом, дополнение предоставляет около сорока команд для доступа к функциям системы Android.

Статус батареи через Termux: API

Termux: Widget. Дополнение предоставляет виджет для запуска скриптов прямо с домашнего экрана Android. Скрипты следует размещать в специальной директории $HOME/.shortcuts. После чего в окне виджета они появятся в виде списка.

Termux: Widget

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

Приложения для X-Windows

Репозиторий приложений для Termux содержит и программы для работы в графическом оконном режиме X-Windows. Но запустить их можно только установив внешний отдельный X-server, который не входит в состав Termux. Поэтому в этой статье только отметим такую возможность, а подробности оставим для других обзоров.

Программы с графическим интерфейсом

Termux Open Source

Termux является каноническим проектом со свободным исходным кодом, который расположен на 

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