Терминус корак по корак (2. део)

В задњи део упознали смо се са основним командама Термук-а, подесили ССХ везу са рачунаром, научили како да креирамо псеудониме и инсталирали неколико корисних услужних програма. Овог пута морамо ићи још даље, уз вас смо:

  • сазнајте више о Термук:АПИ
  • инсталирајте Питхон и нано и напишите "Здраво, свет!" у Питхон-у
  • научите о басх скриптама и напишите скрипту користећи Термук:АПИ
  • користећи басх скрипту, Термук:АПИ и Питхон написаћемо једноставан програм

Пошто сада разумемо шта раде команде за унос, онда од следећег корака нећу тако детаљно описивати сваку радњу, али тамо где може бити потешкоћа, дефинитивно ћу објаснити.

Често користим псеудониме, тако да су скраћенице које се користе у овом делу приказане овде:

alias updg='apt update && apt upgrade'
alias py='python'

План је спреман, можете почети! И наравно, не заборавите на "магичну картицу" (Види део 1).

Корак КСНУМКС

Роњење низ Термук:АПИ Зечју рупу

АПИ колико се стопило у ову реч за срце кодера

Ако се не дотичемо теме Термук: АПИ, онда би се сви наши кораци могли свести на једноставно препричавање неке брошуре као што је „Линукс за лутке“, као што је с правом примећено у коментарима на први део.

Прво инсталирајте Термук:АПИ са Гоогле Плаи Маркет-а (не шкоди након тога поново покренути Термук):

Терминус корак по корак (2. део)

Затим морамо да инсталирамо АПИ пакет у Термук конзолу:

updg # Не забываем про alias’ы
apt install termux-api

За експериментисање користим Андроид 5.1.1, за Андроид 7 власници треба да „заштите“ Термук: АПИ тако што ће отићи на „Подешавања“ > „Заштићене апликације“ у супротном АПИ позива попут termux-battery-status, ће висити. (Центиметар. пројецт вики)

Сада је вредно детаљније погледати стечене могућности. Најновији и најдетаљнији опис Термук:АПИ се може наћи на пројецт вики. Покушаћу да изаберем највизуелније и најинтересантније, што ће ми омогућити да у будућности напуним руку за самосталан рад.

Неки примери Термук:АПИ

  • термук-баттери-статус
    Враћа стање батерије
    Терминус корак по корак (2. део)
  • термук-светлост
    Подешава осветљеност екрана од 0 до 255
    Терминус корак по корак (2. део)
  • термук-здравица
    Приказује привремено обавештење о здрављу
    Терминус корак по корак (2. део)
  • термук-торцх
    Укључује батеријску лампу
    Терминус корак по корак (2. део)
  • термук-вифи-сцанинфо
    Враћа информације о последњем скенирању Ви-Фи мрежа
    Терминус корак по корак (2. део)

Лако је видети да су повратне вредности стрингови, речници, листе речника, уопште, типови података са којима Питхон одлично ради, тако да је следећи корак да га подесите.

Корак КСНУМКС

Инсталирајте Питхон и нано

Да бисте инсталирали Питхон, напишите у терминалу:

updg
apt install python
apt install python2

Сада имамо инсталиран 2 и 3 Питхон-а.

Док сам радио на чланку, открио сам још један уређивач нано текста који ми се више допао од вим-а, хајде да га инсталирамо:

apt install nano

Лакши је за коришћење од вим-а, а нано има интерфејс који је лакши за употребу. На Андроид уређају, вим је и даље практичнији.

ХеллоВорлд у Питхон-у у Термук-у

Углавном, било је могуће без ове ставке, али стављање Питхон-а у Термук, а не писање ХеллоВорлд, по мом мишљењу, је лоше понашање.

Не постављам себи за циљ да било кога учим Питхон-у, па они који не знају могу једноставно да копирају код (или да почну сами да уче, пошто литературе има довољно), а они који знају могу сами да направе нешто. И ја ћу "под маском" ипак показати начин за унос текста у терминал без едитора.

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)

Терминус корак по корак (2. део)

Ако нисте приметили грешку током процеса уноса и већ сте притиснули Ентер, онда нећете моћи да пређете на ред изнад, да бисте то урадили, завршите унос притиском на Цтрл + Д (у принципу можете прекинути Цтрл + З) и поновите све из почетка. Пошто смо користили '>' онда ће датотека бити потпуно преписана. Из тог разлога, не препоручујем коришћење овог метода уноса осим ако нисте сигурни да ћете одмах написати код без грешака.

Корак КСНУМКС

Басх скрипте

Басх скрипте су одличан начин да аутоматизујете свој рад на терминалу. Скрипта је датотека са екстензијом .сх (екстензија је опциона) која садржи скуп терминалских команди, од којих смо неке већ проучили. Ево листа већине команди, све би требало да ради, али имајте на уму да је ово листа за "одрасли" Линук, не Термук, већ само одличан материјал о басх скриптама.

Уз помоћ скрипти можете аутоматизовати скоро све монотоне радње. Хајде да напишемо најједноставнији басх скрипт који приказује вредност из променљиве коју је креирао, ја ћу поново користити цат, можете користити нормалан уређивач текста, а они који посебно желе да се обуку могу користити ецхо.

cat >test.sh

export str="Привет, Хабр!"
# export создает переменную str
# и присваивает ей значение "Привет, Хабр!"
# Не ставьте пробелы до и после ‘=’

echo $str # Для обращения к переменным перед ними ставится ‘$’

# Ctrl + D

# ./test.sh для запуска скрипта, но если это сделать сейчас то будет ошибка
# для избавления от ошибки нужно сделать файл test.sh исполняемым

chmod +x test.sh
# chmod изменяет права доступа (+ добавить / - убрать)
# ‘+x’ означает что мы делаем файл исполняемым

./test.sh # Запускаем выполнение нашего скрипта

Терминус корак по корак (2. део)

Басх скрипта са Термук:АПИ

Хајде да напишемо нешто другачије од озлоглашеног ХеллоВорлдса, али исто тако бескорисно. Наш сценарио ће бити:

  1. изврши АПИ захтев термук-баттери-статус
  2. примљене податке сачувати у датотеци тест.ткт
  3. штампа податке из датотеке на екран
  4. изврши претходно написани програм хелло-ворлд.пи
  5. податке примљене из програма уписати у датотеку тест.ткт
  6. штампа податке из датотеке на екран
  7. преместите податке из датотеке у међуспремник
  8. приказати садржај међуспремника
  9. приказати искачућу поруку са подацима из међуспремника

Прво направите фасциклу за посао и копирајте хелло-ворлд.пи тамо као тест.пи, креирајте тест.сх и тест.ткт датотеке у овој фасцикли:

mkdir bashscript

cat hello-world.py >> bashscript/test.py

cd bashscript/

touch test.sh test.txt # touch создает файлы

chmod +x test.sh

Сада, на било који погодан начин, напишите скрипту у датотеку тест.сх:

#!/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

Сада, у фасцикли басхсцрипт, пишемо ./test.sh посматрамо у терминалу на Андроид уређају:

Терминус корак по корак (2. део)

Тако смо написали планирани басх сценарио. Можете га разблажити са излазом на конзолу информација о извршењу сваке акције (помоћу еха), ово ћу оставити за читаоце.

Корак КСНУМКС

Хајде да урадимо нешто корисно

Релативно корисно

Хајде да формулишемо задатак
Након покретања, апликација треба да постави насумични ред из датотеке у међуспремник и обавести о томе искачућом поруком.

Узећемо басх скрипту као основу, извући ћемо насумични ред из датотеке користећи Питхон потпрограм. Хајде да направимо план рада скрипте:

  1. Покрени подпрограм
  2. Пренесите резултат потпрограма у међуспремник
  3. Прикажи искачућу поруку

Хајде да дефинишемо имена директоријума и датотека апликације:

  • фолдер рндстр у почетном директоријуму
    • извор - датотека из које ћемо узимати редове
    • рндстр.пи - потпрограм који приказује насумични ред од изворне датотеке до конзоле
    • рндстр.сх - датотека скрипте

Креирајте директоријум апликације и пређите на њега и тамо креирајте датотеке.

Прве две тачке плана скрипте могу се комбиновати цевоводом, као резултат, користећи Термук: АПИ добијамо:

#!/bin/bash

python ~/rndstr/rndstr.py | termux-clipboard-set # 1 и 2 пункты плана работы

termux-toast "OK" # 3 пункт. Выводим всплывающее сообщение "ОК"

У изворну датотеку можете ставити било који текст логично подељен на редове, одлучио сам да ставим афоризме:

Листа изворних датотека

Искренность не есть истина. Л. Лавель
Терпи и воздерживайся. Эпиктет
Благородно только то, что бескорыстно. Ж. Лабрюйер
Будь благоразумно отважным. Б. Грасиан
Доброта лучше красоты. Г. Гейне
Для великих дел необходимо неутомимое постоянство. Ф.Вольтер
Если ты хочешь, чтобы тебе всегда угождали, прислуживай себе сам. Б. Франклин
Чрезмерная скромность есть не что иное, как скрытая гордость. А. Шенье
Очень умным людям начинают не доверять, если видят их смущение. Ф. Ницше
Бедность указывает на отсутствие средств, а не на отсутствие благородства. Д. Боккаччо
Нужно остерегаться доведения скромности до степени унижения. А. Бакиханов
Кто отказывается от многого, может многое себе позволить. Ж. Шардон
Когда нам платят за благородный поступок, его у нас отнимают. Н. Шамфор
Не получить вовсе - не страшно, но лишиться полученного обидно. Клавдий Элиан
Легче переносить терпеливо то, что нам не дано исправить. Гораций
Устаешь ждать, но насколько хуже было бы, если бы ждать стало нечего. Б. Шоу
Все приходит вовремя, если люди умеют ждать. Ф. Рабле
Своим терпением мы можем достичь большего, чем силой. Э. Берк
Надо уметь переносить то, чего нельзя избежать. М. Монтень
Кто в деле смел, тот слов не устрашится. Софокл
Я не люблю сражаться, я люблю побеждать. Б. Шоу
Затравленный и прижатый к стене кот превращается в тигра. М. Сервантес
Достойный человек не идет по следам других людей. Конфуций
Великий ум проявит свою силу не только в умении мыслить, но и в умении жить. Р. Эмерсон
Слава - товар невыгодный. Стоит дорого, сохраняется плохо. О. Бальзак
Сдержанность и уместность в разговорах стоят больше красноречия. Ф. Бэкон
Кто молчать не умеет, тот и говорить, не способен. Сенека Младший
Хорошие манеры состоят из маленьких жертв. Ф. Честерфилд
Добрый человек не тот, кто умеет делать добро, а тот, кто не умеет делать зла. В. Ключевский
Не произносите бесповоротных суждений! Августин
Ничего слишком! Солон

Само треба да креирамо потпрограм који издваја насумични низ из изворне датотеке.
Хајде да напишемо алгоритам потпрограма:

  1. Отворите изворни фајл
  2. Бројање броја линија у отвореној датотеци
  3. Затворите датотеку (нема ништа што би је оставило отворено за додатно време)
  4. Генеришемо насумични цео број унутар броја редова изворне датотеке
  5. Отворите изворни фајл
  6. Износимо ред испод броја генерисаног броја
  7. Затварање датотеке

Алгоритам имплементирамо у Питхон-у (пишем под Питхон-ом 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  #  закрываем файл

Након што су датотеке креиране и написане, потребно је да дате дозволе за извршавање датотеке rndstr.sh, и креирајте псеудоним за брзо покретање.

alias rnst="~/rndstr/rndstr.sh"

Сада куцате у терминалу rnst добићемо насумични афоризам у клипборду, који се, на пример, може користити у преписци.

Овде смо написали бар нешто корисно. Релативно корисно.

Пс

У последњем кораку намерно нисам дао снимке екрана и нисам детаљно анализирао неке од радњи, пишући само садржај фајлова како би читаоци имали прилику да раде сами.

На овом "Термук-у корак по корак" мислим да вреди завршити. Наравно, ово су само први кораци, али сада можете и сами напредовати.

У почетку сам планирао да у овом циклусу покажем како се користи нмап, склмап, али без мене већ има доста чланака на ову тему. Ако желите да наставим циклус „Термук корак по корак“, онда постоји анкета испод и у коментарима можете предложити о чему још да пишете.

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Наставити "Термук корак по корак"?

  • Да

  • Не

2 корисника гласало. Нема уздржаних.

Извор: ввв.хабр.цом

Додај коментар