Termux, Эмулятор терминала линукс для андроид

Материал из LUWRAIN Wiki
Версия от 12:00, 15 июня 2020; Shanson (обсуждение | вклад) (Новая страница: « = termux, Эмулятор терминала линукс для андроид. = termux - это эмулятор терминала и linux-среда…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
      = termux, Эмулятор терминала линукс для андроид. =

termux - это эмулятор терминала и linux-среда для android, это замечательная прога вообще отдельного описания требует, но постараюсь коротко.

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

но режим со встроенной оболочкой android тут называется failsafe, то есть аварийный, а основной режим ещё интереснее.

это особый, адаптированный под условия android, дистрибутив linux, который может запускаться на телефоне безо всякого рута.

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

в-общем, у каждого приложения там есть определённый каталог на фс, где приложение может держать свои данные, private storage, там можно размещать и запускать оттуда любые адаптированные под местные условия бинари.

они создали свою среду linux с прогами, адаптированными под эти различия на базе busybox и apt.

как результат, вы можете поставить туда очень многие пакеты нормального linux, например apache, python, jq, bash, curl, wget, nmap и т.д.

говорят, кто-то запускал там nodejs.

что интересно, если другие похожие софты используют chroot, то эта работает с путями android напрямую, то есть те же shell-скрипты должны там начинаться с #!/data/data/com.termux/files/usr/bin/bash

соответственно, всё, что запускается в termux, компилируется именно под эту раскладку.

это и отличает его от софт типа LinuxDeploy, которые ставят в chroot существующие дистры, такие как debian или arch, используя бинари, скомпилированные просто под arm.

из-за этого многие проги не могут нормально взаимодействовать с особенностями android (своя система shared memory и ещё некоторые) и просто отказываются работать, особенно это относится к сложным мультипроцессным софтам (hydra, postgresql).

ещё, так как это дело использует хакерские методы для запуска дистров, у вас может, например, отказаться работать sudo или не быть интернета в не рутовых сессиях.

в termux же, если там есть какой пакет, то вы можете быть почти уверены, что он у вас будет работать, так как компилируется всё изначально под андроид.

ещё, кроме безрута, это даёт ряд преимуществ:

возможность лёгкого доступа к файловой системе устройства (то, что в файловых менеджерах называют встроенной памятью)

возможность неплохо управлять ресурсами android через специальный аддон.

например, можно пропустить список своих sms через grep или какой-нибудь regexp, запросить какой-то api через curl и результат вывезти в панель уведомлений, и т. д.

или поработать с буфером обмена.

или, наконец, сделать снимок с камеры, заслать что-нибудь в систему синтеза речи android, поставить что-то на воспроизведение.

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

тут всё ограничено только вашей фантазией.

есть даже система для вывода простеньких диалогов (меню, да/нет, дата-время, ввод текста)


и да, получается, что для нас это самый доступный ssh-клиент, который я видел. ещё можно поставить спецверсию ssh-агента и использовать для хранения ключей хранилище ключей android, что делает очень сложной задачу их кражи даже при условии наличия рута, так как все операции над ними проходят через специальный чип, правда ещё не тестировал, может работать не у всех. больше о технических деталях можно узнать у них на wiki, я же сосредоточусь на интерфейсе. итак, главное окно termux, кроме собственно окна терминала и клавиотуры, содержит в себе ещё ряд, в котором сгруппированы вспомогательные клавиши (esc, tab, стрелки, правда только вверх и вниз, а также модификаторы ввиде флажков) если прокрутить на этом ряде вперёд, как бы пролистывая на вторую страницу, то будет обычное поле редактирования. объясняю зачем это нужно. девелоперы termux это сделали, поскольку у многих клавиотур есть функции типа автодополнения и предсказания набираемого текста, истории буфера обмена и подобные, для которых клаве необходимо иметь точное представление об уже набранном тексте, что в условиях терминального окна нормально работать не может, так как там набранный текст определяется работающей в терминале программой, с которой клава взаимодействовать не способна в принципе. итак, набираемый в этом поле текст никак не влияет на то, что работает в терминале, пока мы не нажмём клавишу ввод. тогда поле очистится и всё, что мы набирали, отправится вверх в терминал. когда мы ещё раз нажмём ввод, будет послан сигнал перевода строки и, если перед нами стандартная консоль, введённая нами команда начнёт выполняться. для нас с вами это поле означает нормальную работу произношения символов и слов при вводе, а также возможность нормально перемещаться по тексту, чтобы исправить ошибки, так что его очень удобно использовать для подготовки команды перед запуском. но такие вещи, как автодополнение по tab, так просто работать не будут, поскольку, повторюсь, терминал ничего не может знать о наших действиях до тех пор, пока мы не отправим написанное наверх клавишей ввод. а когда мы это отправили и редактор очищен, то ничем на набранное мы повлиять не можем, разве что с большим трудом удалить, так как при наборе прямо в терминал talkback не озвучивает наших действий над клавиатурой, видимо просто не может получить о них данные, так что очень легко допустить ошибку, а перемещаться в стороны мы не можем, так как есть только стрелки вверх и вниз, комбинациями ctrl+f ctrl+b если только, но это опять же озвучиваться не будет, и если проконтролировать набор и удаление ещё можно постоянными перепроверками результата, то дастоверно определить местоположение курсора вообще невозможно. кроме этих элементов, можно нажатием и удержанием на терминале вызвать контекстное меню, где можно вставить текст из буфера, скопировать содержимое терминала, перейти по ссылкам, если они есть в текущем выводе, и ещё некоторые вещи. есть ещё одно меню, которое можно вызвать проводкой двумя пальцами слева направо в верхней части окна. там можно скрыть или показать клавиотуру, также развернуть клавиотуру можно нажатием на нижнюю часть терминала, или управлять сеансами. сеансы это нечто вроде независимых вкладок. если на кнопке new session сделать удержание, откроется окно, где можно дать своё имя новому сеансу или войти в failsafe режим, ещё failsafe можно запустить из меню ярлыка в лаунчере. failsafe это, как уже говорилось, аварийный режим, когда попадаешь не в среду termux, а в стандартную систему оболочки android с базовыми командами. он предназначен для ситуаций, когда вы настолько испортили файлы типа .bashrc, что командная оболочка падает при старте и ничего невозможно сделать, так как система просто не доходит до того этапа, когда можно вводить команды. наконец, есть значёк termux в уведомлениях, который висит, если у вас есть хоть один сеанс или включена блокировка сна. о последнем подробнее: если вы просто запустите в termux что-то долго работающее и отключите экран, очень скоро это что-то остановится, так как система уйдёт в спящий режим. чтобы этого не было, надо включить режим wake lock либо кнопкой значка, либо командой termux-wake-lock (termux-wake-unlock для выключения) эти команды спокойно можно вызывать из скриптов. ещё есть команда termux-storage-setup, которая откроет доступ из этой среды к вашей файловой системе через подкаталог storage домашнего каталога. обратите внимание, что нормальный доступ ко многим вещам, например к usb-носителям и внешней карте, весьма затруднителен, так как android требует для этого использовать систему saf (storage access framework), которую можно вызывать только из java кода, но никак не из нативных библиотек и тем более не из автономных бинарников. больше команд по управлению андроидом можно получить, поставив дополнительное приложение termux-api и с ним пакет termux-api. пакетчик тут apt. ещё пара мелочей: комбинация ctrl+l на виртуальной клаве может быть использована вместо команды clear, а ctrl+d там, где уместна exit или что-то подобное. эти клавиши и на десктопах работают, но на смартфоне это может быть особенно удобно. beep-сигнал с терминала преобразуется в лёгкий вибросигнал. ещё одна вещь, на которой надо остановиться, это установка ssh-сервера, так как конфигурировать всю эту систему удобнее с компа. для начала вызываем passwd и задаём себе какой-нибудь пароль. потом вызываем pkg in openssh pkg это скрипт, который для краткости объединяет вызов apt update с основным вызовом. in - сокращённая запись от install, если не сработает, попробуйте полную install. openssh это пакет, который объединяет клиент и сервер ssh. дожидаемся конца, отвечая y где надо. потом: sshd никакой менеджер сервисов тут не используется, поэтому вызываем вот так, напрямую. всё, теперь наш ssh сервер работает на порту 8022. обратите внимание, что порт именно 8022, так как порты ниже 1024 использовать не позволяется. логин можете использовать любой, а пароль тот, что задавали через passwd. для остановки команда pkill sshd и не забудьте поставить флаг keep screen on или включить блокировку сна, рекомендуется второе, иначе скоро сервер встанет сам собой.

подробности, как уже писал, на их wiki.

скачать можно либо с плеймаркета, либо с FDroid. если предпочитаете не использовать первое, но не знаете, что такое второе, всё равно идите на FDroid и качайте apk оттуда, они в отличие от гугла не блокируют прямую скачку apk через браузер. но и termux, и аддоны все должны быть из одного источника, либо с плея, либо оттуда.