Эта и другие ниже по тексту gif были созданы в Termux
Статья посвящается любителям CLI в знак солидарности лучшего терминала на OS Android, который испытывает «кошмарную» монополию Google.
Эта диаграмма создана в Termux
Termux — это Android приложение под свободной GPL3+ лицензией: эмулятор терминала для среды GNU/Linux, которое работает напрямую без необходимости рутирования. Минимальный базовый функционал устанавливается автоматически, расширенные возможности подтягиваются с помощью менеджера пакетов и установкой стороннего ПО с git, а продвинутая деятельность на телефоне достигается за счёт рут-прав пользователя и установкой proot дистрибутивов GNU/Linux.
Сам Termux весит ~100 Мб (расширяется на Гб) работает на OS Android v7-11.
Termux-среда — киберпанковские разработки и некоторые пакеты содержат кучу ошибок, исправлением которых при случае занимается сам пользователь или сообщество, что является (по шкале красноглазия) нормой в open source среде (стандартные пакеты так же как и приложение распространяются под свободными, но разными лицензиями — это требования сопровождающих packages). В целом, качество и популярность приложения поддерживается на достаточно высоком уровне в мировом масштабе (звёзды на Github-е; рейтинг/отзывы на GP). В настоящее время технические политики GP vs Termux конфликтуют между собой в результате чего у пользователей новичков может ничего не получаться в CLI с минимальным базовым функционалом из коробки. RTFM и ещё раз RTFM. На Github-е с рекурсией на документацию частые проблемы и их решения достаточно технически-просто расписаны сообществом, по этому стоит лишний раз заглянуть в местную wiki перед постингом своей проблемы на профильном форуме.
Опыт использования Termux
Я уже не помню точно когда и каким образом Termux стал инструментом моей души, но изучать и юзать это чудо стал со времён Android 6. Накопился личный опыт, которым я хотел бы поделиться с читателями и по возможности самому освоить что-то новое (пишите в комментах ваш уникальный опыт использования этого терминала).
В данном мини-цикле статей вербализация пойдет о нижеизложенном со всеми остановками:
- управлять серверами через ssh;
- скачивать ролики/отрывки с YouTube;
- нарезать видео, создавать gif;
- воспроизводить музыку/радио прямо в CLI;
- нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет);
- редактировать документы;
- проверять орфографию: как txt-документов, так и различных статей по url, например, проверка орфографии статей на Codeby;
- генерировать словари различной сложности;
- создавать блок-схемы; графики и даже 3d-визуализацию;
- тестировать интернет соединение/интерфейс (требуется частично Root);
- снифить/сканировать сети (требуется частично Root);
- запускать и управлять TOR-сетью;
- управлять приложениями и процессами в ОС Android (требуется Root);
- защищать любые данные от случайного редактирования/уничтожения;
- автоматически бэкапить/шифровать по ночам любые данные в своё облако;
- проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «снифть, парсить, брутить, дампить, сканить, фишить»);
- работать с электропочтой;
- изучать UNIX/shell;
- программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
- запускать python/php/npm скрипты;
- работать с криптографией; стеганографией и цифровыми подписями;
- парсить данные;
- и даже запускать GNU-gui-софт из CLI.
Дисклеймер
Любые действия и техники исполнения, связанные с рассматриваемыми инструментами в данной статье, являются исключительно ответственностью читателей. Злоупотребление набором инструментов и/или недопонимание может привести к ответственности соответствующих лиц. Автор не несёт ответственность в случае предъявления каких-либо обвинений против каких-либо лиц, злоупотребляющих инструментами/информацией для правонарушений; или сдачи читателями на запчасти своих испорченных гаджетов. Инструменты, упомянутые в этой статье, связанные с бэкапом/пентестом/шифрованием могут нанести ущерб или быть опасными, ознакомьтесь с законами вашей страны/округа и технической информацией. Если вы что-то собираетесь использовать, то используете это на свой страх и риск. Короче, автор ни к чему не призывает, а лишь демонстрирует возможности ПО в ознакомительных целях, что не является руководством к неправомерным действиям или обучающим материалом для сокрытия правонарушений.
Установка и настройка среды Termux
1. Скачиваем и устанавливаем приложение Termux из магазина приложений
Ссылка скрыта от гостей
(Termux в магазине приложений GP больше не поддерживается и не обновляется с осени 2020 года, вся разработка продолжает осуществляется на Github, но релизы выкладываются в F-droid/Github). Причины с рекурсией описаны здесь.2.
$ termux-setup-storage
Этой командой пользователь предоставляет Termux разрешение на «доступ к хранилищу» (обязательный шаг). После предоставления разрешения приложению у пользователя появится доступ из Termux к диску/общедоступным каталогам Android через ~/storage/shared/* и флэш накопителю ~/storage/external-1/*. На Android 11 существуют проблемы с правами: требуется повторно отозвать/дать права «доступ к хранилищу».
* Перейдите в «Настройки Android» -> «Приложения» -> «Termux» -> «Разрешения».
* Отозвать разрешение на хранение
* Предоставьте разрешение на хранение еще раз.
А на Android 12 Termux не способен в принципе нормально работать.
3. Установка ПО из менеджера пакетов
$ pkg list-all
#посмотреть стандартные пакеты в менеджере (альтернатива apt/dpkg). Портированных пакетов >1000, не заблудитесь.$ pkg update && pkg install python wget curl nano git tsu tor cronie grep htop printf
#установить необходимый минимум утилит, другие пакеты выбирать и ставить по мере необходимости.У Termux имеется приятная особенность угадывания: если пользователь запускает какую-либо утилиту (в т.ч. с опечаткой), которая у него не установлена, но присутствует в репозитории, то юзер получает уведомление «угадывания» в терминале: что похожего имеется в репо и что пользователю нужно доставить, а проверить оно ли это ему требуется
$ sqget
#ввод ошибочной команды$ pkg show «оно ли это»
#получить мета-информацию о пакетеПример решения проблем с обновлением/установкой пакетов
Если пользователь Termux сталкивается с ошибкой при 'pkg update' обновлении пакетов из коробки (как повезёт), например из-за цензуры в стране, и/или из-за того, что Termux давно не обновлялся на устройстве пользователя (или того хуже имеется проблема с подписями: Termux ранее был установлен с GP и обновлён/переустановлен с F-droid); из-за компрометации ключей разработчиков, то удаление/установка Termux-приложения не поможет (обязательно нужно вычищать с устройства и все установленные termux-сервисы (termux api; termux boot; termux style), а так же очищать кэш и данные приложения перед удалением версии Termux GP). После же обычного удаления приложения часть данных остаётся на устройстве пользователя в таком случае проблем не избежать.
Первые три скриншота — описание проблемы обновлений Termux (в данном примере проблема обновлений пакетов навязана пользователю из-за internet censorship). Нижние 2 скриншота — решение: применение команды: «termux-change-repo». Данная команда предоставляет пользователю выбрать альтернативное зеркало репозитория: изменить источник обновления пакетов. Если с каким-либо репозиторием проблемы, то пользователь всегда может его заменить на дублёр с другого хостинга.
$ termux-change-repo
Выбрать получение обновлений (для всех репо, их может быть больше одного) с другого хостинга, которое не цензурируется вашим провайдером (на мой взгляд самое стабильное зеркало репозитория в РФ — это зеркало Termux/Github). Эта проблема и ее решение описана в документации, но как видите некоторые юзеры об этом и не догадываются и регулярно задают одни и те же одинаковые вопросы на профильных форумах (обычно такие пользователи вычисляются по количеству минусов над своим вопросом).
4. Кастомизация Termux (необязательно)
4.1. Стиль
Благодаря Fan-сообществу в Termux имеется множество готовых цветовых тем, а не только белый шрифт на чёрном фоне. Для выбора темы пользователю необходимо скачать с
Ссылка скрыта от гостей
дополнение к Termux: Termux-Styling. После установки аддона при длительном нажатии на экран в области CLI появится пункт: more --> style. Можно выбирать/сменять из списка любую, приятную для глаз цветовую тему.4.2. Настройка приветствия и приглашающей строки (необязательно)
На скриншоте приветствие и приглашающая строка Termux. Слева — настройки по умолчанию, справа — кастомные настройки пользователя.
Для настройки кастомной, приглашающей строки пользователю необходимо описать переменную «PS1» в файле домашнего каталога ~/.bashrc
Код:
Bash:
$ nano ~/.bashrc -$ # ключ «-$» заставляет nano визуально переносить текст на новую строку
# Наполнение:
HISTSIZE=20000 #сохранять историю команд
HISTFILESIZE=1000 #размер истории в текущей сессии
export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S' #отображать дату введённой команды в истории (проверка даты --> $ history)
PS1="\[\033[1;34m\]┌──\[\033[0m\]\[\033[1;31m\]boss\[\033[0m\]\[\033[;34m\]──[\[\033[0m\]\[\033[1;35m\]\w\[\033[0m\]\[\033[;34m\]]\[\033[0m\]\n\[\033[1;34m\]└─❕\[\033[0m\]" #настройка переменной приглашающей строки как у автора.
export EDITOR=nano #сделать nano — редактором по умолчанию.
#«ctrl + o» сохранить; «ctrl + x» выход
$ bash
Для настройки приветствия пользователю необходимо отредактировать файл "/data/data/com.termux/files/usr/etc/motd"
Если у пользователя имеются рут-права, то редактирование файла «motd» из-за общего доступа очень простое, например, с помощью Total Commander + QuickEdit.
Если же рута нет, то
$ nano ../usr/etc/motd
#две точки означают подняться на каталог выше из текущей директории.Всё что пользователь набросает в "motd" каждый раз будет отображаться при запуске Termux. В моём случае с помощью утилиты
Ссылка скрыта от гостей
сгенерировал текст «Код Доступа Рай», добавив строкой ниже смайлики цветных кружков и всё это записал в файл «motd».4.3. Настройка размера отображения вывода в CLI.
По умолчанию Termux отображает 2000 строк, что является невероятно низким значением рендеринга по отношению к мощностям гаджетов. Например, пользователь сильно ограничен при просмотре баз данных, словарей, работой с html/текстами и т.д. Что бы проще было понять проблему её нужно воспроизвести.
Код:
$ seq 2100
#генерация числовых строк от 1..2100 и вывод их на печать. Попробуйте прокрутить CLI до самого верха и вы остановитесь на числе/строке 100 (всё что сгенерировано до числа 100 пользователь не увидит, а увидит строки чисел от 100..2100, вот оно ограничения в 2к строк).В прошлом году я обратился к разработчикам Termux с предложением расширить ограничения терминала с 2к строк до 5-50к. строк. Проведя тесты, разработчики поддержали предложение и в Termux с v0.114+ доступна пользовательская настройка на рендеринг строк в termux-конфиге.
Код:
$ nano -$ .termux/termux.properties
#конфиг, в котором настраиваются некоторые вещи: например, рендеринг строк, клавиши виртуальной клавиатуры, кликабельность ссылок в CLI.Добавим строки:
Bash:
terminal-transcript-rows=10000 #отображать в CLI 10к строк вместо 2к (доступно с v0.114+)
terminal-onclick-url-open=true #понимать url(s) в CLI (доступно с v0.118+).
Продолжение:
Часть 2-я
Часть 3-я
Часть 4-я
Часть 5-я
Последнее редактирование: