Как создавать и запускать скрипты .sh в Termux для Android

  • Termux позволяет создать полноценную среду Linux на Android для запуска скриптов .sh без прав root.
  • Для предотвращения ошибок типа «доступ запрещен» крайне важно правильно настроить права доступа к хранилищу, shebang и выполнению команд.
  • Плагины Termux позволяют запускать скрипты при загрузке системы, из виджетов или при обмене файлами и ссылками.
  • Termux интегрирует API Android (уведомления, звук, камера, синтез речи) для автоматизации практически любой задачи из командной строки.

sh-скрипт в Termux для Android

Если вы когда-нибудь пробовали Установите APK-файл, переместите файлы и запустите скрипт .sh на Android. И всё, что вы получили, — это раздражающее сообщение «доступ запрещён»? Не волнуйтесь, вы не одиноки. Android — это не типичный настольный Linux, и хотя они разделяют многие фундаментальные принципы, система разрешений и путей немного усложняет ситуацию.

В этой статье мы шаг за шагом рассмотрим, как Создавайте и запускайте скрипты .sh в Termux для Android.Узнайте, как решить распространенные проблемы с правами доступа и как максимально эффективно использовать это приложение для автоматизации задач при запуске устройства, обмена ссылками или даже использования виджетов. Все это объяснено простым языком, с реальными примерами и советами, которые сэкономят вам время и избавят от головной боли.

Что такое Termux и почему он идеально подходит для скриптов .sh на Android?

Терминал Linux Termux на Android

Termux — это приложение, которое позволяет вам иметь Полноценная среда Linux в Android, без необходимости получения root-прав. Это не просто эмулятор терминала: он включает в себя менеджер пакетов в стиле Debian/Ubuntu, с помощью которого можно установить Python, Ruby, Node.js, gcc, ssh, веб-серверы, базы данных и многое другое.

В нашем случае интересно то, что Termux предлагает полноценную командную оболочку (bash, zsh…).Он поддерживает скрипты, сочетания клавиш, ввод с мыши и систему пакетов, очень похожую на систему классических дистрибутивов. В принципе, его можно использовать для программирования, администрирования серверов или просто для автоматизации вашей системы Android с помощью скриптов .sh.

С самого начала вы увидите, что можете использовать Полезные команды Termux в качестве ls, GREP, карликовый, напор, HTOP, мерзавец, питони т. д. Однако иерархия каталогов не совсем совпадает с той, что используется в настольной системе Linux, и эта деталь имеет решающее значение, когда речь идёт о скриптах.

Кроме того, Termux поддерживает физические клавиатуры и специальные сочетания клавишНапример, клавиша уменьшения громкости выполняет функцию клавиши Ctrl, позволяя использовать комбинации, такие как Ctrl+C, Ctrl+D или Ctrl+L, что значительно упрощает работу с устройством на мобильном телефоне или планшете.

Termux
Termux
Застройщик: Фредрик Форнвалл
Цена: Бесплатный доступ

Установите Termux правильно и избегайте конфликтов версий.

Установка Termux на Android

Одна из часто упоминаемых проблем заключается в том, что после установки Termux, Значок приложения не отображается или выдает странные ошибки.Это часто происходит из-за установки старых или смешанных версий из Google Play и F-Droid.

В настоящее время рекомендуется следующее: Установите Termux из одного надежного источника.Как правило, рекомендуется использовать F-Droid, где находится поддерживаемая версия, или, если это невозможно, официальную версию с GitHub. Если вы выберете F-Droid, скачайте APK-файл Termux напрямую и избегайте смешивания его с версией из Play Store.

Это особенно важно, если вы собираетесь использовать плагины, такие как Termux:Boot, Termux:API или Termux:WidgetЕсли вам нужен гид, Узнайте, как использовать Termux.Для того чтобы цифровая подпись совпадала, все связанные приложения должны быть загружены из одного и того же магазина (Play Store или F-Droid). При использовании приложений из разных источников расширения часто не распознают Termux или просто не будут работать.

Если у вас уже установлен Termux из Play Store и вы хотите перейти на F-Droid, рекомендуемый вариант: Сначала удалите предыдущую версию. Затем установите Termux и его плагины из F-Droid, всё с одного и того же сайта.

Настройте базовую среду: права на обновление и хранение данных.

После установки Termux первым шагом является его минимальная подготовка для работы со скриптами и файлами устройств. Для этого необходимо выполнить два ключевых шага: Обновить пакеты и интегрировать хранилище Android..

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

Второй шаг — предоставить доступ к хранилищу мобильного устройства. По умолчанию Termux видит только свою собственную директорию. $ HOMEкоторая изолирована от остальной части Android. Если вы хотите читать и записывать данные во внутреннюю память или на SD-карту, вам необходимо выполнить следующую команду:

termux-setup-storage

Эта команда запросит права доступа и создаст каталог. $ДОМ/склад со ссылками на загрузок, Документация, фотографиии т. д. Таким образом, ваши скрипты смогут Чтение и копирование файлов в пользовательскую область Android и из неё. без необходимости жонглировать.

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

Понимание структуры маршрутизации в Termux и концепции shebang.

Termux не использует точно такую ​​же иерархию, как стандартный дистрибутив Linux. Пути типа /bin, /usr или /etc находятся не там, где вы ожидаете.и это влияет на строки скриптов (строку, которая начинается с #! (указав переводчика).

Во многих руководствах или проектах (например, в ботах для Instagram, таких как InstaPy) вы увидите скрипты с заголовками подобного рода. #!/bin/sh o #!/usr/bin/env pythonВ более старых версиях Termux приходилось «исправлять» эти пути с помощью утилиты под названием termux-fix-shebangпотому что бинарные системы находились не на типичных маршрутах.

В последних версиях включен этот пакет. termux-exec, который отвечает за правильно интерпретировать стандартные шебангиБлагодаря этому большинство скриптов, ожидающих классической среды Unix, работают без каких-либо изменений. Тем не менее, если скрипт не запускается, стоит проверить следующее:

  • Пусть все это укажет на переводчика, который действительно существует. в Termux.
  • Убедитесь, что у скрипта есть права на выполнение. chmod +x.
  • Убедитесь, что вы используете правильный путь при запуске (например) ./install.sh o ~/script.sh).

Если вы из тех, кто любит, чтобы всё было «в порядке», вы можете создать классическая структура каталогов в Termux (как / USR / бен) с использованием специальных команд, генерирующих символические ссылки и стандартные пути. Это не обязательно, но иногда упрощает повторное использование устаревших скриптов.

Создание, предоставление прав доступа и запуск скрипта .sh в Termux.

Перейдём к делу: как создать и запустить простой скрипт .sh в Termux? Основной алгоритм всегда один и тот же: Напишите скрипт, сохраните его, предоставьте необходимые права доступа и запустите.Вы можете применить это как к своему собственному скрипту, так и, например, к классическому. install.sh таких проектов, как InstaPy Quickstart.

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

pkg install nano

Предположим, вы хотите создать ~/script.shВы могли бы сделать следующее:

nano ~/script.sh

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

#!/bin/sh
echo "Encendido del dispositivo: $(date)" >> ~/registros.log

Когда закончите, сохраните в nano с помощью Ctrl + O, Enter, а затем Ctrl + XВы создали скрипт, но он пока не исполняемый. Чтобы это исправить, добавьте права доступа с помощью:

chmod +x ~/script.sh

После этого вы можете проверить, всё ли работает, выполнив следующую команду:

~/script.sh

./script.sh (если вы находитесь в той же директории, что и файл)

Если вы это сделаете, обновления ~/registros.log Указав дату и время, вы получаете подтверждение того, что Скрипт .sh работает корректно.Этот же рецепт применим и при попытке запустить install.sh Убедитесь, что файл, загруженный с GitHub, имеет права на его выполнение и что вы вызываете его, указывая правильный путь.

Исправлена ​​ошибка «отказано в доступе» при запуске скриптов .sh.

Одна из самых распространенных проблем, возникающих при попытке установить APK-файл или переместить файлы с помощью файла .sh на Android, заключается в том, что Всё выглядит правильно, но терминал выдаёт сообщение "Доступ запрещён".В Termux эта проблема обычно имеет несколько типичных причин.

Первое и самое очевидное заключается в том, что У скрипта отсутствуют права на выполнение.Даже если на вас идеальная челка, без chmod +x archivo.sh Ничего нельзя сделать. Это классическая ошибка, которую всегда следует проверять.

Другая распространенная причина заключается в том, что Скрипт пытается записывать данные в системные пути, куда Android это не разрешает.Особенно без прав root. Забудьте о свободном доступе к системным каталогам; сосредоточьтесь на пользовательских путях (например, на тех, которые доступны извне). $ДОМ/склад) или в рамках возможностей самого приложения.

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

В конкретном случае, когда кто-то пытается установить InstaPy Quickstart на Android, критически важным моментом является следующее: Для работы Termux необходимо наличие всех необходимых зависимостей. (Python, pip, необходимые библиотеки) и скрипт install.sh Программа должна запускаться в Termux, а не в каком-либо случайном приложении. Если после корректного запуска она всё равно выдаёт ошибку, проверьте пути установки, shebang и права доступа к целевым каталогам.

Автоматический запуск скриптов .sh при запуске Android с помощью Termux:Boot

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

Termux:Boot — это приложение, интегрирующееся с Termux и Программа запускает все найденные ею скрипты с расширением .sh в специальном каталоге. Когда телефон завершит загрузку. Это идеально подходит, например, для запуска таких служб, как MySQL, небольших демонов, задач логирования или любой автоматизации, необходимой при запуске.

Termux:Boot можно скачать из Google Play (в некоторых странах платная версия) или из F-Droid, где он доступен бесплатно. Но помните золотое правило: Termux и Termux:Boot должны поступать из одного и того же источника. чтобы их подписи совпадали. Если вы используете F-Droid для Termux, используйте также F-Droid для Termux:Boot.

После установки Termux:Boot обычно этого достаточно. открыв приложение один раз чтобы он зарегистрировался в качестве получателя события загрузки. Он не требует сложной настройки; вся магия происходит в фоновом режиме путем чтения скриптов, которые вы поместите в соответствующую директорию.

Путь к скрипту при запуске: ~/.termux/boot и практический пример.

Механизм Termux:Boot прост: Любой скрипт .sh, помещенный в ~/.termux/boot/, будет запускаться при загрузке устройства.Эта папка по умолчанию не существует, поэтому вам придётся создать её самостоятельно.

Для этого в Termux выполните следующую команду:

mkdir -p ~/.termux/boot/

Оттуда вы можете напрямую создавать свои скрипты по указанному пути или скопировать уже имеющиеся. Следуя предыдущему примеру, если бы мы создали ~/script.shМы могли бы скопировать это следующим образом:

cp ~/script.sh ~/.termux/boot/script.sh

Пока файл имеет разрешения на выполнение (chmod +x ~/.termux/boot/script.sh), Termux:Boot будет запускать его при каждой загрузке. Этот скрипт может содержать любая допустимая команда для bash/shот записи в лог до запуска службы базы данных с помощью чего-то вроде:

mysqld_safe -u root &

Если вы хотите убедиться, что всё настроено правильно, это хорошая идея. Снова откройте приложение Termux:Boot Подождите несколько секунд, закройте, а затем перезагрузите устройство. После включения проверьте содержимое файла журнала или состояние служб, которые вы пытались запустить из скрипта.

Использование cron и других средств автоматизации с Termux

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

После установки вы используете crontab -e Чтобы редактировать таблицу cron и добавлять записи. Например, можно настроить задание на запуск каждую минуту для создания или обновления определенного каталога, или на запуск скрипта .sh с определенным интервалом.

Работа cron в Termux очень похожа на работу в стандартной системе Linux, но имеет одно важное ограничение: Если Android завершит работу приложения Termux в фоновом режимеВыполнение задач может прекратиться. Пока система соблюдает установленный порядок, cron работает отлично, но это следует учитывать на телефонах с агрессивной политикой энергосбережения.

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

Интеграция Termux с Android: Termux: API и скрипты при совместном использовании.

Одно из главных преимуществ Termux заключается в том, что он не ограничивается изолированным терминалом: с помощью дополнения... Термукс: API Вы можете получить доступ ко многим аппаратным функциям Android и комбинировать их со своими скриптами .sh, а также с такими инструментами, как... SL4A на Android.

Для использования сначала установите приложение Termux:API из F-Droid или Play Store (следуя той же политике исходного кода, что и для остальных плагинов), а затем установите пакет в терминале. termux-apiОтсюда ваши скрипты могут вызывать такие команды, как:

  • termux-notification для отображения уведомлений на Android.
  • termux-dialog Открывать диалоговые окна и запрашивать данные у пользователя.
  • termux-toast для отображения коротких сообщений на экране.
  • termux-tts-speak использовать функцию преобразования текста в речь (TTS) от Google.
  • termux-media-player для воспроизведения аудио/видео.
  • termux-microphone-record для записи звука с микрофона.
  • Команды для работы с буфером обмена, местоположением, камерой и т. д.

Кроме того, Termux может перехват определенных «интентов» AndroidЭто позволяет запускать скрипты автоматически при обмене файлами или URL-адресами из других приложений.

Например, если вы поделитесь ссылкой с YouTube в Termux, скрипт запустится. ~/bin/termux-url-opener получение URL-адреса в переменной $1. Соло tienes Que:

  • Создайте каталог ~ / bin если его не существует.
  • Создайте файл termux-url-opener дентро де эль.
  • Дайте разрешения на выполнение с помощью chmod +x ~/bin/termux-url-opener.

В этом скрипте вы можете, например, загрузить видео с помощью youtube-dl или аналогичный используя URL-адрес, который поступает в $1или сохраните ссылку в список, чтобы прочитать позже.

Нечто подобное происходит и с termux-file-editorКогда вы делитесь файлом с Termux, запускается соответствующий обработчик. Вы можете настроить его для открытия вашего любимого редактора, создав символическую ссылку следующим образом:

ln -s $PREFIX/bin/nvim ~/bin/termux-file-editor

Или напишите свой собственный сценарий. termux-file-editorкарликовый(Пометить как исполняемый файл и т. д.), чтобы обработать файл так, как вам нужно. Это очень мощный способ. связывание действий между Android и вашими скриптами .sh.

Запуск скриптов из виджетов и ярлыков: Termux:Widget

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

Для корректной работы необходимо разместить скрипты в определенных папках:

  • ~/.shortcuts/ для скриптов, которые будут отображаться в виджете.
  • ~/.shortcuts/tasks/ для выполнения конкретных задач, управляемых плагином.
  • ~/.shortcuts/icons/ для значков PNG, которые будут отображаться с каждым скриптом.

Имя файла значка должно совпадать с именем скрипта путем добавления . Png, например script.sh.pngНа типичном экране Full HD размер 96 × 96 px Обычно это работает хорошо, хотя для больших экранов может быть целесообразнее увеличить разрешение до 144 или 196 пикселей.

Просто поместив скрипт в ~/.shortcuts/Предоставьте ему права на выполнение и добавьте виджет Termux в панель запуска. Вы сможете запустить этот файл .sh простым касанием.Идеально подходит для задач, которые вы часто повторяете: резервное копирование, синхронизация, голосовые заметки и т. д.

Другие расширенные инструменты и варианты использования Termux.

Помимо запуска отдельных скриптов, Termux позволяет вам иметь Удивительно совершенная рабочая среда На Android можно установить интерпретаторы для таких языков, как Python, Ruby, Perl, Node.js или Rust, и использовать их со своими скриптами .sh для автоматизации более сложных задач.

Вы также можете покататься полные среды разработки с помощью git, gcc, make, Neovim, Emacs и т. д., а также веб-серверов, серверов баз данных или SSH-сервисов. Многие пользователи хранят свои dotfile-файлы в репозитории git, чтобы клонировать свою конфигурацию непосредственно в Termux и чувствовать себя «как дома» на любом устройстве Android.

Если вы используете менеджеры паролей, например... passВы можете установить их вместе с... GnuPG и синхронизируйте свои пароли через Git, что позволит вам иметь к ним доступ и на мобильном устройстве. Даже такие инструменты, как рыба (очень удобная в использовании оболочка) и современные утилиты, такие как zoxide, starship, ripgrep, lsd, bat or atuin Они легко интегрируются.

Для тех, кто привык к настольным компьютерам, идея наличия SSH-сервер или веб-сервер, работающий на телефоне. В Termux нет ничего сложного. Вы можете запустить его с помощью простого скрипта .sh, связать его с Termux:Boot или виджетом и управлять им как небольшим портативным сервером.

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

Благодаря всему этому Termux превращается в своего рода швейцарский армейский нож: От установки простого APK-файла с помощью скрипта .sh до автоматизации сложных задач путем объединения API Android, cron, запуска системы и виджетов.Практически все, что вы можете себе представить, работающее в терминале Linux, можно положить в карман.

Как освоить Android Termux
Теме статьи:
Подробно о Termux: как освоить это Android-устройство