В
- leer oor Termux:API
- installeer Python en nano, en skryf "Hallo, wêreld!" in Python
- leer oor bash-skrifte en skryf 'n skrif met Termux:API
- met behulp van 'n bash script, Termux: API en Python sal ons 'n eenvoudige program skryf
Aangesien ons nou verstaan wat die invoeropdragte doen, sal ek vanaf die volgende stap nie elke aksie in so besonderhede beskryf nie, maar waar daar probleme kan wees, sal ek beslis verduidelik.
Ek gebruik baie aliasse, so die afkortings wat in hierdie deel gebruik word, word hier gewys:
alias updg='apt update && apt upgrade'
alias py='python'
Die plan is gereed, jy kan begin! En natuurlik, moenie vergeet van die "magic Tab" (
Stap 4
Duik in die Termux:API-konyngat af
API hoeveel het saamgesmelt in hierdie woord vir die kodeerder se hart
As ons nie die onderwerp van Termux: API aanraak nie, kan al ons stappe verminder word tot 'n eenvoudige hervertelling van een of ander brosjure soos "Linux vir Dummies", soos tereg in die opmerkings by die eerste deel opgemerk is.
Installeer eers Termux:API vanaf die Google Play Market (dit maak nie seer om Termux daarna weer te begin nie):
Vervolgens moet ons die API-pakket in die Termux-konsole installeer:
updg # Не забываем про alias’ы
apt install termux-api
Vir eksperimentering gebruik ek Android 5.1.1, vir Android 7 moet eienaars Termux: API "beskerm" deur na 'Settings' > 'Protected Apps' te gaan, anders API-oproepe soos termux-battery-status
, sal hang. (Cm.
Nou is dit die moeite werd om die verworwe geleenthede van nader te bekyk. Die nuutste en mees gedetailleerde beskrywing van Termux:API kan gevind word by
Sommige Termux:API-voorbeelde
- termux-battery-status
Wys die toestand van die battery terug
- termux-helderheid
Stel die helderheid van die skerm van 0 tot 255
- termux-roosterbrood
Wys 'n tydelike roosterbroodkennisgewing
- termux-fakkel
Sluit flitslig in
- termux-wifi-scaninfo
Wys inligting oor die laaste skandering van Wi-Fi-netwerke
Dit is maklik om te sien dat die terugkeerwaardes stringe, woordeboeke, lyste van woordeboeke is, in die algemeen, datatipes waarmee Python uitstekend werk, so die volgende stap is om dit op te stel.
Stap 5
Installeer Python en nano
Om Python te installeer, skryf in die terminale:
updg
apt install python
apt install python2
Ons het nou 2 en 3 Python geïnstalleer.
Terwyl ek aan die artikel gewerk het, het ek 'n ander nano-teksredigeerder ontdek waarvan ek meer gehou het as van vim, kom ons installeer dit:
apt install nano
Dit is makliker om te gebruik as vim, en nano het 'n meer gebruikersvriendelike koppelvlak. Op 'n Android-toestel is vim steeds geriefliker.
HelloWorld in Python by Termux
Oor die algemeen was dit moontlik om sonder hierdie item klaar te kom, maar om Python in Termux te plaas en nie HelloWorld te skryf nie, is na my mening slegte maniere.
Ek beoog nie om vir iemand Python te leer nie, so diegene wat nie weet nie, kan eenvoudig die kode kopieer (of op hul eie begin leer, aangesien daar genoeg literatuur is), en diegene wat weet kan self iets maak. En ek sal "onder die dekmantel" steeds 'n manier wys om teks in die terminale in te voer sonder 'n redigeerder.
cat >hello-world.py
# Если не указывать источник (напоминаю cat 1.txt > 2.txt)
# то cat будет брать данные из стандартного потока ввода,
# проще говоря вводимое с клавиатуры.
str = ‘Hello, world!’ # присваиваем переменной str значение "Hello, world!"
print (str) # выводим на экран значение из переменной str
# Ctrl + D закончить ввод и записать файл (hello-world.py)
py hello-world.py # запускаем файл (py это alias от python)
As jy nie 'n fout tydens die invoerproses opgemerk het nie en reeds Enter gedruk het, sal jy nie na die reël hierbo kan gaan nie, om dit te doen, beëindig die invoer deur Ctrl + D te druk (jy kan gewoonlik Ctrl + onderbreek Z) en herhaal alles van die begin af. Aangesien ons '>' gebruik het, sal die lêer heeltemal oorskryf word. Om hierdie rede beveel ek nie aan om hierdie invoermetode te gebruik nie, tensy jy seker is dat jy die kode dadelik sonder foute sal skryf.
Stap 6
Bash skrifte
Bash-skrifte is 'n goeie manier om jou terminale werk te outomatiseer. Die script is 'n lêer met die .sh-uitbreiding (die uitbreiding is opsioneel) wat 'n stel terminale opdragte bevat, waarvan ons sommige reeds bestudeer het. Hier
Met behulp van skrifte kan jy byna alle eentonige aksies outomatiseer. Kom ons skryf die eenvoudigste bash script wat die waarde vertoon van die veranderlike wat hy geskep het, ek sal cat weer gebruik, jy kan 'n gewone teksredigeerder gebruik, en diegene wat veral hulself wil oplei, kan eggo gebruik.
cat >test.sh
export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’
echo $str # Для обращения к переменным перед ними ставится ‘$’
# Ctrl + D
# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым
chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым
./test.sh # Запускаем выполнение нашего скрипта
Bash script met Termux:API
Kom ons skryf iets anders as die berugte HelloWorlds, maar net so nutteloos. Ons draaiboek sal wees:
- voer die termux-battery-status API-versoek uit
- stoor die ontvangde data na die lêer test.txt
- druk data van 'n lêer na die skerm
- voer die voorheen geskrewe hello-world.py-program uit
- skryf die data wat vanaf die program ontvang is na die lêer test.txt
- druk data van 'n lêer na die skerm
- skuif data van lêer na knipbord
- vertoon die inhoud van die knipbord
- vertoon 'n opspringboodskap met data vanaf die knipbord
Skep eers 'n vouer vir werk en kopieer hello-world.py daarheen as test.py, skep test.sh en test.txt lêers in hierdie vouer:
mkdir bashscript
cat hello-world.py >> bashscript/test.py
cd bashscript/
touch test.sh test.txt # touch создает файлы
chmod +x test.sh
Skryf nou op enige gerieflike manier die skrif na die test.sh-lêer:
#!/bin/bash
# В начале каждого скрипта принято ставить #! (называется шебанг)
# после идет указание на шелл для которой написан скрипт
clear # очистим окно терминала
termux-battery-status > test.txt # пункты 1 и 2 из намеченного функционала
cat test.txt # пункт 3
python test.py > test.txt # пункт 4 и 5
cat test.txt # пункт 6
cat test.txt | termux-clipboard-set # пункт 7
# | это конвейер. переносит данные с выхода одного потока на вход другого
termux-clipboard-get # пункт 8
termux-clipboard-get | termux-toast # пункт 9
Nou, in die bashscript-lêergids, skryf ons ./test.sh
ons neem waar in die terminale op die Android-toestel:
So ons het die beplande bash script geskryf. Jy kan dit verdun met die uitset na die konsole van inligting oor die uitvoering van elke aksie (met eggo), ek sal dit vir die lesers oorlaat.
Stap 7
Kom ons doen iets nuttigs
Relatief bruikbaar
Kom ons formuleer die opdrag
Na bekendstelling moet die toepassing 'n ewekansige reël van die lêer op die knipbord plaas en met 'n opspringboodskap daaroor in kennis stel.
Ons sal 'n bash-skrif as basis neem, ons sal 'n ewekansige reël uit 'n lêer onttrek met 'n Python-subroetine. Kom ons maak 'n draaiboek werkplan:
- Begin subroetine
- Dra die resultaat van die subroetine oor na die knipbord
- Wys opspringboodskap
Kom ons definieer die name van die gids en toepassingslêers:
- rndstr-lêergids in die tuisgids
- bron - die lêer waaruit ons lyne sal neem
- rndstr.py - 'n subroetine wat 'n ewekansige lyn van die bronlêer na die konsole vertoon
- rndstr.sh - script lêer
Skep 'n toepassingsgids en skuif na dit en skep lêers daar.
Die eerste twee punte van die script plan kan gekombineer word deur 'n pyplyn, as gevolg hiervan, met behulp van Termux: API kry ons:
#!/bin/bash
python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы
termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"
In die bronlêer kan u enige teks logies verdeel in lyne plaas, ek het besluit om aforismes te plaas:
Bronlêerlys
Искренность не есть истина. Л. Лавель
Терпи и воздерживайся. Эпиктет
Благородно только то, что бескорыстно. Ж. Лабрюйер
Будь благоразумно отважным. Б. Грасиан
Доброта лучше красоты. Г. Гейне
Для великих дел необходимо неутомимое постоянство. Ф.Вольтер
Если ты хочешь, чтобы тебе всегда угождали, прислуживай себе сам. Б. Франклин
Чрезмерная скромность есть не что иное, как скрытая гордость. А. Шенье
Очень умным людям начинают не доверять, если видят их смущение. Ф. Ницше
Бедность указывает на отсутствие средств, а не на отсутствие благородства. Д. Боккаччо
Нужно остерегаться доведения скромности до степени унижения. А. Бакиханов
Кто отказывается от многого, может многое себе позволить. Ж. Шардон
Когда нам платят за благородный поступок, его у нас отнимают. Н. Шамфор
Не получить вовсе - не страшно, но лишиться полученного обидно. Клавдий Элиан
Легче переносить терпеливо то, что нам не дано исправить. Гораций
Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего. Б. Шоу
Все приходит вовремя, если люди умеют ждать. Ф. Рабле
Своим терпением мы можем достичь большего, чем силой. Э. Берк
Надо уметь переносить то, чего нельзя избежать. М. Монтень
Кто в деле смел, тот слов не устрашится. Софокл
Я не люблю сражаться, я люблю побеждать. Б. Шоу
Затравленный и прижатый к стене кот превращается в тигра. М. Сервантес
Достойный человек не идет по следам других людей. Конфуций
Великий ум проявит свою силу не только в умении мыслить, но и в умении жить. Р. Эмерсон
Слава - товар невыгодный. Стоит дорого, сохраняется плохо. О. Бальзак
Сдержанность и уместность в разговорах стоят больше красноречия. Ф. Бэкон
Кто молчать не умеет, тот и говорить, не способен. Сенека Младший
Хорошие манеры состоят из маленьких жертв. Ф. Честерфилд
Добрый человек не тот, кто умеет делать добро, а тот, кто не умеет делать зла. В. Ключевский
Не произносите бесповоротных суждений! Августин
Ничего слишком! Солон
Ons moet net 'n subroetine skep wat 'n ewekansige string uit die bronlêer onttrek.
Kom ons skryf die algoritme van die subroetine:
- Oopbronlêer
- Tel die aantal reëls in 'n oop lêer
- Maak die lêer toe (daar is niks om dit oop te hou vir ekstra tyd nie)
- Ons genereer 'n ewekansige heelgetal binne die aantal reëls van die bronlêer
- Oopbronlêer
- Ons voer 'n reël uit onder die nommer van die gegenereerde nommer
- Maak die lêer toe
Ons implementeer die algoritme in Python (ek skryf onder Python 3.7):
import random # импортируем для генерации случайных чисел
import os # для получения пути
path = os.path.abspath(__file__) # получаем прямой путь до файла rndstr.py
path = os.path.dirname(path) # преобразуем в путь до директории
path = path + '/source' # преобразуем в путь до файла source
f = open(path) # открываем файл
i = 0 # обнуляем счетчик
for str in f: i+=1 # считаем строки файла
f.close # закрываем файл
j = int(round(i * random.random())) # генерируем целое случайное число от 0 до i
f = open(path) # открываем файл
i = 0 # обнуляем счетчик
for str in f: # перебираем строки из файла
if i == j: # если счетчик строк равен сгенерированному числу
print (str, end='') # выводим строку без перехода на новую
break # выходим из цикла
i+=1 # увеличиваем счетчик на 1
f.close # закрываем файл
Nadat die lêers geskep en geskryf is, moet jy die lêeruitvoertoestemmings gee rndstr.sh
, en skep 'n alias vir vinnige bekendstelling.
alias rnst="~/rndstr/rndstr.sh"
Tik nou in terminale rnst
ons sal 'n ewekansige aforisme op die knipbord kry, wat byvoorbeeld in korrespondensie gebruik kan word.
Hier het ons ten minste iets nuttig geskryf. Relatief bruikbaar.
PS
In die laaste stap het ek doelbewus nie skermskote verskaf nie en sommige van die aksies nie in detail ontleed nie en slegs die inhoud van die lêers geskryf sodat lesers die geleentheid het om op hul eie te werk.
Op hierdie "Termux stap vir stap" dink ek dit is die moeite werd om klaar te maak. Dit is natuurlik net die heel eerste stappe, maar nou kan jy self vorentoe beweeg.
Ek het aanvanklik beplan om in hierdie siklus te wys hoe om nmap, sqlmap te gebruik, maar sonder my is daar reeds baie artikels oor hierdie onderwerp. As jy wil hê ek moet voortgaan met die "Termux stap vir stap" siklus, dan is daar 'n opname hieronder en in die kommentaar kan jy voorstel waaroor jy nog moet skryf.
Slegs geregistreerde gebruikers kan aan die opname deelneem.
Gaan voort "Termux stap vir stap"?
-
Ja
-
Geen
2 gebruikers het gestem. Daar is geen onthoudings nie.
Bron: will.com