Termux шаг за шагом


При первом знакомстве Termux, а я далеко не линуксоид, вызвал в моей голове две мысли: «Круть несусветная!» и «Как им пользоваться?». Порывшись в инетах, я не нашел ни одной статьи в полной мере позволяющей начать пользоваться Termux`ом так чтобы это приносило больше удовольствия чем гемора. Будем это исправлять.

Для начала определимся, что это за зверь такой Termux, и что он может. На главной странице WikiTermux (рекомендую ознакомиться) говорится, что “Termux — это эмулятор терминала и среда Linux”, т.е. установив его мы получим вполне работоспособный Linux терминал на своем Android устройстве. Несомненным плюсом является работа в виртуальном окружении (многое можно делать без root`а), благодаря чему навредить файловой системе Android практически нереально. А при наличии root`а ваши возможности ограничены только фантазией (ну и знанием матчасти).

За каким, собственно говоря, я полез к Termux`у? Во-первых хакинг, точнее желание немного в нем разобраться. Во-вторых отсутствие возможности пользоваться Kali Linux`ом.
Тут я постараюсь собрать воедино все полезное найденное мной по теме. Разбирающегося эта статья вряд ли чем удивит, но тем кто только познает прелести Termux`а, надеюсь, будет полезна.

Для лучшего понимания материала рекомендую повторять описанное мной не простой копипастой а самостоятельно вводить команды. Для удобства нам понадобится либо Android устройство с подключенной клавиатурой, либо как в моем случае Android устройство и ПК/Ноутбук (Windows) подключенные к одной сети. Android желательно с root`ом, но не обязательно. Иногда я что-то указываю в скобках, обычно, это позволит лучше понять материал (если написанное в скобках не совсем понятно, то смело пропускайте это, потом в процессе и по мере необходимости все разъяснится).

Шаг 1


Буду банален и чертовски логичен одновременно


Ставим Termux c Google Play Market:

image

Открываем установленное приложение и видим:

image

Далее стоит обновить предустановленные пакеты. Для этого по порядку вводим две команды, по ходу выполнения которых со всем соглашаемся, вводя Y:

apt update
apt upgrade

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

Теперь у нас наиболее свежая версия Termux.

Еще несколько нужных команд


ls – отображает список файлов и директорий в текущей директории
cd – перемещает в указанную директорию, например:
Важно понимать: если путь не указан прямо (~/storage/downloads/1.txt) он будет от текущей директории
cd dir1 – переместит в dir1 если в текущей директории она есть
cd ~/dir1 – переместит в dir1 по указанному пути от корневой папки
cd  или cd ~ — переместить в корневую папку
clear – очищаем консоль
ifconfig – можно посмотреть IP, а можно и сеть настроить
cat – позволяет работать с файлами/устройствами (в рамках одного потока) например:
cat 1.txt – просмотрим содержимое файла 1.txt
cat 1.txt>>2.txt – копируем файл 1.txt в файл 2.txt  (файл 1.txt останется)
rm — используемая для удаления файлов из файловой системы. Ключи, использующиеся с rm:
-r – обрабатывать все вложенные директории. Данный ключ необходим, если удаляемый файл является директорией. Если удаляемый файл не является директорией, то ключ -r не влияет на команду rm.
-i – выводить запрос на подтверждение каждой операции удаления.
-f – не возвращать код ошибочного завершения, если ошибки были вызваны несуществующими файлами; не запрашивать подтверждения операций.
Например:
rm -rf mydir – удалить без подтверждения и кода ошибочного завершения файл (или каталог) mydir.
mkdir <путь> – создает директорию по указанному пути
echo – может служить для записи строки в файл, если используется ‘>’ файл будет перезаписан, если ‘>>’ строка будет дописана в конец файла:
echo "string" > filename
Более подробно по командам UNIX ищем в интернете (саморазвитие никто не отменял).
Сочетание клавиш Ctrl + C и Ctrl + Z прерывает и прекращает выполнение команд соответственно.

Шаг 2


Облегчи себе жизнь


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

  1. Подключить к Android устройству полноценную клавиатуру любым удобным способом.
  2. Воспользоваться ssh. Проще говоря, у вас на компьютере будет открыта консоль Termux`а запущенного на вашем Android устройстве.

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

На компьютере необходимо установить программу ssh клиент, я пользуюсь Bitvise SSH Client,  т.ч. все дальнейшие действия совершаются в этой программе.



Т.к. на данный момент Termux поддерживает только подключение по методу Publickey с использованием файла-ключа, нам необходимо этот файл создать. Для этого в программе Bitvise SSH Client на вкладке Login щелкаем по Client  key manager в открывшемся окне генерируем новый публичный ключ и экспортируем его в OpenSSH формате в файл с названием termux.pub (на самом деле можно любое название). Созданный файл помещаем во внутреннюю память вашего Android устройства в папку Downloads (к этой папке, и еще к нескольким, Termux имеет упрощенный доступ без root).

Во вкладке Login в поле Host вводим IP вашего Android устройства (узнать можно введя в Termux команду ifconfig) в поле Port должно быть 8022.

Теперь переходим к установке OpenSSH в Termux, для этого вводим следующие команды:

apt install openssh (в процессе, если потребуется, вводим ‘y’)
pkill sshd (этой командой останавливаем OpenSSH)
termux-setup-storage (подключить внутреннюю память)
cat ~/storage/downloads/termux.pub>>~/.ssh/authorized_keys (копируем файл-ключ)
sshd (запускаем ssh хост)

Возвращаемся к Bitvise SSH Client и нажимаем кнопку Log in. В процессе подключения появится окно, в котором выбираем Method – publickey, Client key это Passphrase (если вы ее указали при генерации файла-ключа).

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



Теперь мы можем вводить команды с ПК а выполняться они будут на вашем Android устройстве. Не сложно догадаться какие это дает преимущества.

Шаг 3


Настроим Termux, установим дополнительные утилиты


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

apt install bash-completion (Работает автоматически по нажатию Tab)

Ну что за жизнь без текстового редактора с подсветкой кода (если вдруг захочется покодить, а оно захочется). Для установки пишем:

apt install vim

Тут уже можно пользоваться автозаполнением — пишем ‘apt i’ теперь нажимаем Tab и наша команда дописывается до ‘apt install’.

Пользоваться vim`ом не сложно, чтобы открыть файл 1.txt (если его нет, то он создастся) пишем:

vim 1.txt

Чтобы начать вводить текст нажмите ‘i’
Чтобы закончить вводить текст нажмите ESC
Перед вводом команды должно быть двоеточие ‘:’
‘:q’ – выйти без сохранения
‘:w’ – сохранить
‘:wq’ – сохранить и выйти

Раз мы теперь можем создавать и редактировать файлы, давайте немного улучшим вид и информативность командной строки Termux`а. Для этого нам нужно присвоить переменной окружения PS1 значение "\[\033[1;33;1;32m\]:\[\033[1;31m\]\w$ \[\033[0m\]\[\033[0m\]" (если интересно что это и с чем его едят, прошу сюда). Чтобы это сделать нам нужно в файл '.bashrc' (лежит в корне и выполняется при каждом запуске оболочки) добавить строку:

PS1 = "\[\033[1;33;1;32m\]:\[\033[1;31m\]\w$ \[\033[0m\]\[\033[0m\]"

Для простоты и наглядности воспользуемся vim`ом:

cd
vim .bashrc

Вписываем строку, сохраняем и выходим.

Добавить строку в файл можно и другим способом, воспользовавшись командой ‘echo’:

echo PS1='"\[\033[1;33;1;32m\]:\[\033[1;31m\]\w$ \[\033[0m\]\[\033[0m\]"' >>  .bashrc

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

В файл .bashrc так же можно вписать alias’ы – сокращения. Например мы хотим одной командой проводить update и upgrade сразу. Для этого в .bashrc добавляем строку:

alias updg = "apt update && apt upgrade"

Для внесения  строки можно воспользоваться vim’ом или командой echo (если не получается самостоятельно – см. ниже)

Синтаксис alias’ов таков:

alias <сокращение> = "<перечень команд>"

Итак, добавляем сокращение:

echo alias updg='"apt update && apt upgrade"' >> .bashrc

Вот еще несколько полезных утилит


Ставить через apt install

man — Встроенная справка для большинства комманд.
man %commandname

imagemagick — Утилита для работы с изображениями(конвертирование, сжатие, обрезка). Поддерживает много форматов включая pdf.Пример: Сконвертировать все картинки из текущей папки в один pdf и уменьшить их размер.
convert *.jpg -scale 50% img.pdf

ffmpeg — Один из лучших конвертеров аудио/видео. Инструкцию по использованию гуглите.

mc — Двухпанельный файловый менеджер наподобие Far.

Впереди еще немало шагов, главное что движение начато!

Комментарии (21)


  1. ivanych
    23.03.2019 14:23

    Не могли бы Вы добавить в начало статьи краткое пояснение о том, что такое вообще Termux?


    1. kireevmp
      23.03.2019 14:51

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


      1. maxzhurkin
        23.03.2019 17:15
        +2

        Есть ещё люди, узнавшие о его существовании из статьи, и вот на них сея стройная идеологическая конструкция рушится


    1. LexxXell Автор
      25.03.2019 18:41

      Вы думаете стоит? Я писал с расчетом на тех, кто как и я раньше, нашли Termux сами (не думаю что это сложно), но из-за очень слабого знания *nix`образных, сталкиваются к кучей, казалось бы мелких, но раздражающих проблем.


      1. ivanych
        25.03.2019 19:25

        Никогда не помешает указать контекст.


        1. LexxXell Автор
          26.03.2019 02:09

          Пояснение добавил (второй абзац).
          Как на Ваш взгляд, достаточное раскрытие контекста?


          1. ivanych
            26.03.2019 04:20

            Да, теперь очень хорошо, сразу понятно о чем дальше статья. Спасибо.


  1. ivan2kh
    23.03.2019 15:21

    Все думал, зачем может понадобится ssh сервер на смартфоне (есть же adb shell). Сделать из смартфона систему видеонаблюдения на дачу?


    1. legolegs
      23.03.2019 20:48

      есть же adb shell
      1. А по вайфаю он работает?
      2. Множество утилит ожидают использования ssh как транспорта, напр. rsync.


      1. ivan2kh
        23.03.2019 21:13

        1. да, но не секьюрно, так что ssh имеет смысл


  1. Ktulhy
    23.03.2019 17:57

    … или просто поставить fish/zsh/иже с ним и не настраивать все руками, например :)
    Очень полезная в этом плане HackerKeyboard, чтобы работать прямо с телефона
    Куча плагинов, которые могут управлять практически усем телефоном (звонить, смс отсылать, вибрировать, etc).


    1. maxzhurkin
      24.03.2019 00:19

      Вас кто-то избаловал предварительно настроенной zsh — по умолчанию она тоже требует настройки руками


    1. taranarmo
      26.03.2019 00:29

      Говоря о настройке руками и zsh, стоило сказать о Oh-My-Zsh, иначе его действительно нужно настраивать руками
      Кстати о клавиатурах: уже около двух лет назад восстала из мёртвых AnySoftKeyboard, очень удобная клавиатура


    1. LexxXell Автор
      26.03.2019 01:15

      Господа, согласитесь, жмакать пальцами по «живой» клаве и приятнее и быстрее.
      А в контексте обучения еще удобнее работа по ssh с компа.
      image
      Против zsh ни чего не имею (разве что в терминале Bitvise он плохо смотрится), но на bash`е мне показалось удобнее через переопределение переменной окружения PS1 рассказать про .bashrc и далее подвести тему к alias`ам.


  1. Daniyar94
    24.03.2019 01:17

    YouTube-DL поддерживает?


    1. Daniyar94
      24.03.2019 01:42

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


  1. Foreglance
    24.03.2019 09:19

    Использовал Termux для хостинга домашнего Node-RED сервера.


  1. r1sha
    24.03.2019 13:38

    Статью можно было сократить до одного предложения: «Termux – замена Linux, когда под рукой нет компьютера». И используется он соответственно


  1. andreymal
    24.03.2019 15:43

    Как им пользоваться?

    Как дебианом.


    Весь пост помещается в это одно предложение.


    1. LexxXell Автор
      25.03.2019 18:09

      Пост рассчитан на людей практически впервые столкнувшихся с миром *nix.


  1. twaikyont
    25.03.2019 18:10

    Termux уже работает не только с Public Key. В последних версиях можно поставить пакет openssh (в нем sshd), и потом просто пустить команду passwd. Установленый пароль будет пускать по SSH.