Ако някога сте опитвали Инсталирайте APK файл, преместете файлове и стартирайте .sh скрипт на Android И всичко, което получихте, беше досадно съобщение „отказано разрешение“? Не се притеснявайте, не сте сами. Android не е типичният настолен Linux и макар че споделят много основни принципи, системата за разрешения и пътища малко усложнява нещата.
В тази статия ще разгледаме стъпка по стъпка как Създавайте и изпълнявайте .sh скриптове в Termux за AndroidНаучете как да решавате често срещани проблеми с разрешенията и как да извлечете максимума от това приложение, за да автоматизирате задачи, когато стартирате устройството си, споделяте връзки или дори използвате джаджи. Всичко това е обяснено на разбираем език, с примери от реалния свят и съвети, които ще ви спестят време и главоболия.
Какво е Termux и защо е идеален за .sh скриптове на Android?

Termux е приложение, което ви позволява да имате пълна Linux среда в Android, без да е необходим root достъп. Това не е просто терминален емулатор: той включва мениджър на пакети в стил Debian/Ubuntu, с който можете да инсталирате Python, Ruby, Node.js, gcc, ssh, уеб сървъри, бази данни и много други.
Интересното за нашия случай е, че Termux предлага истинска обвивка (bash, zsh…)Той предлага поддръжка за скриптове, клавишни комбинации, въвеждане с мишка и система от пакети, много подобна на тази на класическа дистрибуция. По принцип можете да го използвате за програмиране, администриране на сървъри или просто за автоматизиране на вашата Android система с .sh скриптове.
Още от първия старт ще видите, че можете utilizar Полезни команди на Termux като ls, Впиши, Нано, Vim, htop, Git, питони т.н. Йерархията на директориите обаче не е точно същата като в настолна Linux система и този детайл е от решаващо значение, когато говорим за скриптове.
В допълнение, Termux поддържа физически клавиатури и специални клавишни комбинацииНапример, клавишът за намаляване на звука действа като клавиш Ctrl, което ви позволява да използвате комбинации като Ctrl+C, Ctrl+D или Ctrl+L, което прави изживяването много по-удобно на мобилен телефон или таблет.
Инсталирайте Termux правилно и избягвайте конфликти на версии

Един от често споменаваните проблеми е, че след инсталирането на Termux, Иконата на приложението не се показва или дава странни грешкиТова често се случва поради инсталиране на стари или смесени версии от Google Play и F-Droid.
Настоящата препоръка е, че Инсталирайте Termux от един надежден източникОбикновено се препоръчва да използвате F-Droid, където се намира поддържаната версия, или ако това не е възможно, официалната версия от GitHub. Ако изберете F-Droid, изтеглете директно Termux APK файла и избягвайте да го смесвате с версията от 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 предлага командата PKGкоето опростява процеса и се грижи за това Подходяща актуализация когато докосне.
Втората стъпка е да се предостави достъп до паметта на мобилното устройство. По подразбиране Termux вижда само собствената си директория. $ HOMEкойто е изолиран от останалата част на Android. Ако искате да четете и записвате във вътрешната памет или SD картата, трябва да изпълните:
termux-setup-storage
Тази команда ще поиска разрешения и ще създаде директория $HOME/съхранение с връзки към изтегляния, документи, снимкии т.н. По този начин вашите скриптове ще могат да Четене и копиране на файлове към и от потребителската област на 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 среда, работят без никакви промени. Въпреки това, ако даден скрипт не успее да се изпълни, си струва да проверите следното:
- Нека шебангът сочи към преводач, който действително съществува в Термукс.
- Уверете се, че скриптът има разрешения за изпълнение с
chmod +x. - Че използвате правилния път, когато го изпълнявате (например
./install.sho~/script.sh).
Ако сте човек, който обича всичко да е „подредено“, можете да създадете класическа структура на директории в Термукс (както / ЮЕсАр / хамбар) използвайки специфични команди, които генерират символни връзки и стандартни пътища. Не е задължително, но понякога улеснява повторното използване на стари скриптове.
Създаване, предоставяне на разрешения и изпълнение на .sh скрипт в Termux
Нека да се заемем с работата: как да създадете и стартирате прост .sh скрипт в Termux? Основният процес е винаги един и същ: Напишете скрипта, запазете го, предоставете разрешения и го изпълнете.Можете да го приложите както към собствения си скрипт, така и например към класическия. install.sh на проекти като InstaPy Quickstart.
За да създадете скрипт, можете да използвате Нано, Vim, 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 достъп. Забравете за свободното манипулиране на системните директории; фокусирайте се върху потребителските пътища (като тези, които са изложени на показ). $HOME/съхранение) или в това, което самото приложение може да управлява.
Може да се случи и това Стартирате командите от терминален емулатор, различен от 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За да направите това, трябва да инсталирате съответния пакет и да го конфигурирате. crontabs точно както бихте направили на всяка Linux система.
След като инсталирате, използвате crontab -e За да редактирате cron таблицата и да добавяте записи. Например, можете да конфигурирате задание да се изпълнява всяка минута и да създава или актуализира определена директория или да стартира .sh скрипт през определен интервал.
Работата на cron в Termux е много подобна на тази на стандартна Linux система, но има едно важно ограничение: Ако Android затваря приложението Termux във фонов режимЗадачите може да спрат да се изпълняват. Стига системата да спазва процеса, cron работи много добре, но това е нещо, което трябва да се има предвид при телефони с агресивни политики за пестене на батерията.
Ако не сте сигурни относно синтаксиса на cron (изразите за минута, час, ден и т.н.), можете да използвате ресурси като crontab.guru, които ви помагат да напишете правилното програмиране визуално.
Интегриране на Termux с Android: Termux: API и скриптове при споделяне
Една от големите силни страни на Termux е, че не остава само в изолиран терминал: с добавката Termux:API Можете да получите достъп до много функции на хардуера на Android и да ги комбинирате с вашите .sh скриптове, както и с инструменти като SL4A на Android.
За да го използвате, първо инсталирайте приложението Termux:API от F-Droid или Play Store (следвайки същата политика за изходния код, както при останалите плъгини) и след това инсталирайте пакета в терминала. termux-apiОттам вашите скриптове могат да извикват команди като:
- termux-известие за показване на известия на Android.
- termux-диалог да отваряте диалогови прозорци и да изисквате данни от потребителя.
- termux-тост за показване на кратки съобщения на екрана.
- termux-tts-speak да използвате TTS (текст в реч) на Google.
- termux-media-player за възпроизвеждане на аудио/видео.
- termux-microphone-record за запис на звук от микрофона.
- Команди за клипборда, местоположение, камера и др.
В допълнение, Termux може улавяне на определени „намерения“ на AndroidТова позволява автоматичното изпълнение на скриптове при споделяне на файлове или URL адреси от други приложения.
Например, ако споделите линк от YouTube към Termux, скриптът ще се изпълни. ~/bin/termux-url-opener получаване на URL адреса в променливата $1. Трябва само да:
- Създайте директорията ~/bin ако не съществува.
- Създайте файла termux-url-opener дентро де ел.
- Дайте разрешения за изпълнение с
chmod +x ~/bin/termux-url-opener.
В този скрипт можете например да изтеглите видеото с youtube-dl или подобен използвайки URL адреса, който пристига в $1или запазете връзката в списък, за да я прочетете по-късно.
Нещо подобно се случва и с termux-файлов-редакторКогато споделяте файл с Termux, този манипулатор се стартира. Можете да го конфигурирате да отваря любимия ви редактор, като създадете символна връзка, подобна на тази:
ln -s $PREFIX/bin/nvim ~/bin/termux-file-editor
Или напишете свой собствен сценарий termux-файлов-редактор (с Нано(маркирайте го като изпълним и т.н.), за да обработите файла по желания от вас начин. Това е много мощен начин да свързване на действия между Android и вашите .sh скриптове.
Стартирайте скриптове от джаджи и преки пътища: Termux:Widget
Ако харесвате комфорта, има още един особено полезен аксесоар: Termux:УиджетТози плъгин ви позволява да създавате преки пътища на началния екран за изпълнявайте скриптове директно от уиджетбез ръчно отваряне на терминала всеки път.
За да работи, трябва да поставите скриптовете си в определени пътища:
- ~/.shortcuts/ за скриптове, които ще се показват в уиджета.
- ~/.shortcuts/tasks/ за специфични задачи, управлявани от плъгина.
- ~/.shortcuts/икони/ за PNG иконите, които ще се показват с всеки скрипт.
Името на файла с иконата трябва да съвпада с името на скрипта, като се добави . Png, например script.sh.pngНа типичен Full HD екран, размерът на 96 × 96 px Обикновено работи добре, въпреки че за по-големи екрани може да е препоръчително да се увеличи до 144px или 196px.
Просто като поставите скрипта в ~/.shortcuts/, дайте му разрешения за изпълнение и добавете Termux widget към вашия стартер, Ще можете да стартирате този .sh файл с едно просто докосване.Идеален за задачи, които често повтаряте: архивиране, синхронизиране, гласови бележки и др.
Други разширени инструменти и случаи на употреба с Termux
Освен изпълнението на отделни скриптове, Termux ви позволява да имате изненадващо завършена работна среда В Android можете да инсталирате интерпретатори за езици като Python, Ruby, Perl, Node.js или Rust и да ги използвате с вашите .sh скриптове, за да автоматизирате по-сложни задачи.
Можете също да яздите пълни среди за разработка с git, gcc, make, Neovim, Emacs и др., и дори уеб сървъри, сървъри за бази данни или SSH услуги. Много потребители съхраняват своите dotfiles в git хранилище, за да клонират конфигурацията си директно в Termux и да се чувстват „като у дома си“ на всяко Android устройство.
Ако използвате мениджъри на пароли, като например минавамМожете да ги инсталирате заедно с gnupg и синхронизирайте паролите си чрез Git, което ви позволява да ги имате достъпни и на мобилното си устройство. Дори инструменти като риба (много лесна за употреба обвивка) и съвременни помощни програми като зоксид, звезден кораб, рипгреп, ЛСД, прилеп или атуин Те се интегрират безпроблемно.
За тези, които идват от фон на работния плот, идеята да имат SSH сървър или уеб сървър, работещ на телефона С Termux изобщо не е лудост. Можете да го стартирате с обикновен .sh скрипт, да го свържете с Termux:Boot или уиджет и да го управлявате като малък преносим сървър.
Подкрепа за графични интерфейси чрез X11 и VNC Също е налично, въпреки че изисква по-разширена настройка; ако се интересувате, разгледайте го. Как да емулираме и стартираме Linux на AndroidВъпреки това, това демонстрира до каква степен Termux надминава простата идея за „терминален емулатор“ и се превръща в малка Linux дистрибуция в рамките на Android.
С всичко това, Termux се превръща в нещо като швейцарско ножче: От инсталиране на прост APK файл със .sh скрипт до автоматизиране на сложни задачи чрез комбиниране на Android API, cron, стартиране на системата и джаджиМожете да сложите практически всичко, което можете да си представите да правите, в Linux терминал в джоба си.
