{"id":30531,"date":"2019-10-31T21:36:03","date_gmt":"2019-10-31T18:36:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/termux-shag-za-shagom-chast-2\/"},"modified":"2019-10-31T21:36:03","modified_gmt":"2019-10-31T18:36:03","slug":"termux-shag-za-shagom-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","title":{"rendered":"Termux stap voor stap (Deel 2)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">vorige deel<\/a><\/noindex> We have become acquainted with the basic commands of Termux, set up an SSH connection with a PC, learned to create aliases, and installed several useful utilities. This time, we are about to take a step further, we will:<\/p>\n<p><\/p>\n<ul>\n<li>leren over Termux:API<\/li>\n<li>install Python and nano, as well as write 'Hello, world!' in Python<\/li>\n<li>leren over bash-scripts en een script schrijven met gebruik van Termux:API<\/li>\n<li>met behulp van bash-scripts, Termux:API en Python een eenvoudige applicatie schrijven <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Aangezien we nu begrijpen wat de ingevoerde commando's doen, zal ik vanaf deze stap niet elk detail zo uitgebreid beschrijven, maar waar het moeilijkheden kan opleveren, zal ik het zeker toelichten.<\/p>\n<p><\/p>\n<p>I frequently use aliases, so the shortcuts used in this part are shown here:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">alias updg='apt update &amp;&amp; apt upgrade'\nalias py='python'<\/code><\/pre>\n<p><\/p>\n<p>The plan is ready, we can get started! And of course, don't forget about the 'magic Tab' (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444950\/\">Zie Deel 1<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h2>Stap 4<\/h2>\n<p><\/p>\n<h3>Duiken in de konijnenhol van Termux:API<\/h3>\n<p><\/p>\n<p><i>API, wat een veelzeggend woord voor het hart van een programmeur<\/i><\/p>\n<p><\/p>\n<p>If we don't touch on the topic of Termux:API, then all our steps could have been summarized as a simple retelling of some brochure like 'Linux for Dummies', as was rightly noted in the comments to the first part.<\/p>\n<p><\/p>\n<p>First, let's install Termux:API from the Google Play Market (after which it would be good to restart Termux):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/415e25a8ddefc5d4f1741c97d742eeb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Next, we need to install the API package in the Termux console:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg # Vergeet de aliasen niet\napt install termux-api<\/code><\/pre>\n<p><\/p>\n<p>Voor experimenten gebruik ik Android 5.1.1, voor eigenaren van Android 7 moet je Termux:API 'beveiligen' door naar 'Instellingen' &gt; 'Beveiligde applicaties' te gaan, anders blijven API-aanroepen zoals <code>termux-battery-status<\/code>, hangen. (Zie <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">project wiki<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p>Nu is het tijd om ons beter bekend te maken met de verworven mogelijkheden. De meest recente en gedetailleerde beschrijving van Termux:API is te vinden op <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.termux.com\/wiki\/Termux:API\">project wiki<\/a><\/noindex>. Ik zal proberen het meest overzichtelijke en interessante te kiezen, zodat je een goed begrip krijgt voor zelfstandig werken in de toekomst.<\/p>\n<p><\/p>\n<h3>Enkele voorbeelden van Termux:API <\/h3>\n<p><\/p>\n<ul>\n<li>termux-battery-status<br \/>\nGeeft de batterijstatus terug<br \/>\n<img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/9a5f793d1b028905b3ee9ceab0fbcdec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-brightness<br \/>\nStelt de schermhelderheid in van 0 tot 255<br \/>\n<img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/23e5f3726607921d7f52d5d0de543968.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-toast<br \/>\nToont een tijdelijke pop-upnotificatie<br \/>\n<img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/5c75ad9b678773801ea9975b23422384.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-torch<br \/>\nZet de zaklamp aan<br \/>\n<img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7695202f5972e93e5b7a8f4bd952882c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>termux-wifi-scaninfo<br \/>\nGeeft informatie over de laatste netwerkscan van Wi-Fi terug<br \/>\n<img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/f10669f8e7dff1046ab4f9b7d68228e0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ul>\n<p><\/p>\n<p>Het is niet moeilijk op te merken dat de teruggegeven waarden strings, dictionaries, lijsten van dictionaries zijn, in feite datatypes waar Python uitstekend mee overweg kan, daarom gaan we het nu installeren.<\/p>\n<p><\/p>\n<h2>Stap 5<\/h2>\n<p><\/p>\n<h3>Laten we Python en nano installeren<\/h3>\n<p><\/p>\n<p>To install Python, we type in the terminal:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">updg\napt install python\napt install python2<\/code><\/pre>\n<p><\/p>\n<p>Nu hebben we zowel Python 2 als 3 ge\u00efnstalleerd.<\/p>\n<p><\/p>\n<p>Tijdens het schrijven van dit artikel heb ik een andere teksteditor ontdekt, nano, die me beter bevalt dan vim. Laten we deze installeren:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">apt install nano<\/code><\/pre>\n<p><\/p>\n<p>It's easier to use than vim, and nano has a more user-friendly interface. <i>Op Android-apparaten is vim echter handiger.<\/i><\/p>\n<p><\/p>\n<h3>HelloWorld in Python in Termux<\/h3>\n<p><\/p>\n<p>In principe zou deze stap niet nodig zijn, maar Python in Termux installeren en geen HelloWorld schrijven, zou ik ongepast vinden.<\/p>\n<p><\/p>\n<p>I do not aim to teach anyone Python, so those who do not know can just copy the code (or start studying independently, as there is plenty of literature), and those who do know can whip something up themselves. Meanwhile, I will 'quietly' show another way to enter text in the terminal without a text editor.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;hello-world.py     \n# Als je geen bron opgeeft (ik herinner eraan cat 1.txt &gt; 2.txt)\n# dan haalt cat de gegevens uit de standaardinvoer,\n# in eenvoudige woorden, wat je vanaf het toetsenbord invoert.\n\nstr = 'Hello, world!' # we geven de variabele str de waarde \"Hello, world!\"\nprint (str) # we geven de waarde van de variabele str weer\n\n# Ctrl + D om de invoer te be\u00ebindigen en het bestand op te slaan (hello-world.py)\n\npy hello-world.py # we starten het bestand (py is een alias voor python)<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/e9086da1ce27f723681f142dad11d878.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Als je tijdens de invoer een fout hebt gemaakt en al op Enter hebt gedrukt, kun je niet naar de vorige regel teruggaan, daarvoor moet je de invoer be\u00ebindigen met Ctrl + D (je kunt ook helemaal stoppen met Ctrl + Z) en alles opnieuw doen. Aangezien we '&gt;' hebben gebruikt, wordt het bestand volledig overschreven. Daarom raad ik deze invoermethode niet aan als je niet zeker weet dat je de code meteen zonder fouten schrijft.<\/p>\n<p><\/p>\n<h2>Stap 6<\/h2>\n<p><\/p>\n<h3>Bash-scripts<\/h3>\n<p><\/p>\n<p>Bash-scripts zijn een geweldige manier om het werk met de terminal te automatiseren. Een script is een bestand met de extensie .sh (de extensie is niet verplicht) dat een reeks terminalopdrachten bevat, waarvan een deel al is bestudeerd. Hier is <noindex><a rel=\"nofollow\" href=\"https:\/\/tproger.ru\/translations\/bash-cheatsheet\/\">een lijst van de meeste commando's<\/a><\/noindex>, everything should work, but please note that this is a list for 'adult' Linux, not for Termux, and just <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/325522\/\">prachtig materiaal over bash-scripts<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Met scripts kunnen vrijwel alle monotone taken geautomatiseerd worden. Laten we een eenvoudige bash-script schrijven die de waarde van een door zichzelf aangemaakte variabele uitvoert. Ik zal weer gebruik maken van cat, maar jullie kunnen een normale teksteditor gebruiken, en voor degenen die het op prijs stellen, kunnen zich oefenen met echo.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">cat &gt;test.sh\n\nexport str=\"Hallo, Habr!\"\n# export cre\u00ebert de variabele str\n# en wijst deze de waarde \"Hallo, Habr!\" toe\n# Plaats geen spaties voor of na \u2018=\u2019\n\necho $str # Om naar variabelen te verwijzen, plaats je \u2018$\u2019 ervoor\n\n# Ctrl + D\n\n# .\\\/test.sh om het script uit te voeren, maar als je dat nu doet, zal er een fout optreden\n# om deze fout te verhelpen, moet je het bestand test.sh uitvoerbaar maken\n\nchmod +x test.sh\n# chmod verandert de toegangsrechten (+ toevoegen \/ - verwijderen)\n# \u2018+x\u2019 betekent dat we het bestand uitvoerbaar maken\n\n.\\\/test.sh # We starten de uitvoering van ons script<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/7c56f1aaf938a711f3a30dd3eed3eec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3>Bash-script met Termux:API<\/h3>\n<p><\/p>\n<p>Laten we iets schrijven dat verschilt van de beruchte HelloWorld's, maar net zo nutteloos is. Ons script zal:<\/p>\n<p><\/p>\n<ol>\n<li>een API-verzoek termux-battery-status uitvoeren<\/li>\n<li>de verkregen gegevens opslaan in het bestand test.txt<\/li>\n<li>de gegevens uit het bestand op het scherm weergeven<\/li>\n<li>het eerder geschreven programma hello-world.py uitvoeren<\/li>\n<li>de door het programma verkregen gegevens in het bestand test.txt opslaan<\/li>\n<li>de gegevens uit het bestand op het scherm weergeven<\/li>\n<li>de gegevens uit het bestand naar het klembord verplaatsen<\/li>\n<li>de inhoud van het klembord op het scherm weergeven<\/li>\n<li>een pop-upbericht weergeven met de gegevens uit het klembord<\/li>\n<\/ol>\n<p><\/p>\n<p>Laten we eerst een map maken voor ons werk en daar hello-world.py als test.py kopi\u00ebren. We cre\u00ebren in deze map de bestanden test.sh en test.txt:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">mkdir bashscript\n\ncat hello-world.py &gt;&gt; bashscript\/test.py\n\ncd bashscript\/\n\ntouch test.sh test.txt # touch cre\u00ebert bestanden\n\nchmod +x test.sh<\/code><\/pre>\n<p><\/p>\n<p>Laten we nu op een voor ons handige manier het script in het bestand test.sh schrijven:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\n\n# \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c #! (\u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0448\u0435\u0431\u0430\u043d\u0433)\n# \u043f\u043e\u0441\u043b\u0435 \u0438\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043d\u0430 \u0448\u0435\u043b\u043b \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0441\u043a\u0440\u0438\u043f\u0442\n\nclear # \u043e\u0447\u0438\u0441\u0442\u0438\u043c \u043e\u043a\u043d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430\n\ntermux-battery-status &gt; test.txt # \u043f\u0443\u043d\u043a\u0442\u044b 1 \u0438 2 \u0438\u0437 \u043d\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430\n\ncat test.txt # \u043f\u0443\u043d\u043a\u0442 3\n\npython test.py &gt; test.txt # \u043f\u0443\u043d\u043a\u0442 4 \u0438 5\n\ncat test.txt # \u043f\u0443\u043d\u043a\u0442 6\n\ncat test.txt | termux-clipboard-set # \u043f\u0443\u043d\u043a\u0442 7\n# | \u044d\u0442\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440. \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0432\u044b\u0445\u043e\u0434\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0434\u0440\u0443\u0433\u043e\u0433\u043e\n\ntermux-clipboard-get # \u043f\u0443\u043d\u043a\u0442 8\n\ntermux-clipboard-get | termux-toast # \u043f\u0443\u043d\u043a\u0442 9<\/code><\/pre>\n<p><\/p>\n<p>Nu, terwijl we in de map bashscript zijn, typen we <code>.\/test.sh<\/code> we observeren in de terminal op ons Android-apparaat:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Termux stap voor stap (Deel 2)\" src=\"\/wp-content\/uploads\/2019\/03\/44c6632c7a3903dad1113017dc81ee61.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kijk, we hebben het geplande bash-script geschreven. We kunnen de uitvoer van informatie over de uitvoering van elke actie (met behulp van echo) mengen. Dit laat ik over aan de lezers.<\/p>\n<p><\/p>\n<h2>Stap 7<\/h2>\n<p><\/p>\n<h3>Laten we iets nuttigs doen<\/h3>\n<p><\/p>\n<p><i>Relatief nuttig<\/i><\/p>\n<p><\/p>\n<p>Laten we de technische specificatie formuleren<br \/>\nDe applicatie moet na het starten een willekeurige regel uit een bestand naar het klembord plaatsen en hiervan op de hoogte stellen met een pop-upmelding.<\/p>\n<p><\/p>\n<p>We nemen als basis een bash-script, de willekeurige regel uit het bestand halen we met behulp van een subprogramma in Python. Laten we een werkplan voor het script opstellen:<\/p>\n<p><\/p>\n<ol>\n<li>Het subprogramma starten<\/li>\n<li>Kopieer het resultaat van de subroutine naar het klembord<\/li>\n<li>Geef een pop-upmelding weer<\/li>\n<\/ol>\n<p><\/p>\n<p>Laten we de namen van de app-directory en bestanden bepalen:<\/p>\n<p><\/p>\n<ul>\n<li>de rndstr-map in de thuismap\n<ul>\n<li>source \u2014 het bestand waaruit we de regels zullen nemen<\/li>\n<li>rndstr.py \u2014 de subroutine die een willekeurige regel uit het source-bestand naar de console afdrukt<\/li>\n<li>rndstr.sh \u2014 het scriptbestand<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>We maken de applicatiemap aan en gaan daarheen om de bestanden te cre\u00ebren.<\/p>\n<p><\/p>\n<p>De eerste twee punten van het scriptplan kunnen met een pijplijn worden samengevoegd, uiteindelijk, met behulp van Termux:API krijgen we:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\n\npython ~\/rndstr\/rndstr.py | termux-clipboard-set # 1 \u0438 2 \u043f\u0443\u043d\u043a\u0442\u044b \u043f\u043b\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u044b\n\ntermux-toast \"OK\" # 3 \u043f\u0443\u043d\u043a\u0442. \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \"\u041e\u041a\"<\/code><\/pre>\n<p><\/p>\n<p>In het source-bestand kun je elke tekst plaatsen die logisch is verdeeld in regels; ik heb ervoor gekozen om citaten te plaatsen:<\/p>\n<p>\n<b class=\"spoiler_title\">Lijst van het source-bestand<\/b><\/p>\n<pre><code class=\"plaintext\">Oprechtheid is geen waarheid. L. Lavelle\nVerdraag en onthoud je. Epictetus\nAlleen dat is nobel, wat onbaatzuchtig is. J. La Bruy\u00e8re\nWees verstandig moedig. B. Gracian\nGoedheid is beter dan schoonheid. G. Heine\nVoor grote daden is onvermoeibare volharding nodig. F. Voltaire\nAls je wilt dat men je altijd tevreden stelt, dien jezelf dan. B. Franklin\nOvermatige bescheidenheid is niets anders dan verborgen trots. A. Chenier\nHeel verstandige mensen worden wantrouwend als ze hun verwarring zien. F. Nietzsche\nArmoede wijst op een gebrek aan middelen, niet op een gebrek aan adel. D. Boccaccio\nWe moeten oppassen dat bescheidenheid niet tot vernedering leidt. A. Bakihanov\nWie veel opoffert, kan zich veel \u043f\u043e\u0437\u0432\u043e\u043ben. J. Chardon\nWanneer we betaald worden voor een nobele daad, wordt deze van ons afgepakt. N. Chamfort\nHet is niet eng om helemaal niets te krijgen, maar het is vervelend om te verliezen wat je hebt gekregen. Claudius Aelianus\nHet is gemakkelijker om geduldig te verdragen wat we niet kunnen veranderen. Horatius\nJe raakt moe van het wachten, maar hoe veel erger zou het zijn als er niets te wachten was. B. Shaw\nAlles komt op tijd, als mensen kunnen wachten. F. Rabelais\nMet ons geduld kunnen we meer bereiken dan met onze kracht. E. Burke\nWe moeten in staat zijn om te verdragen wat we niet kunnen vermijden. M. Montaigne\nWie moedig is in zaken, zal niet bang zijn voor woorden. Sofocles\nIk hou niet van vechten, ik hou van winnen. B. Shaw\nEen slachtoffer dat tegen de muur gedrukt wordt, verandert in een tijger. M. Cervantes\nEen waardig persoon volgt niet de sporen van anderen. Confucius\nEen groot verstand zal zijn kracht niet alleen tonen in het vermogen om te denken, maar ook in het vermogen om te leven. R. Emerson\nEer is een onvoordelige goederen. Het kost veel, maar blijft slecht behouden. O. Balzac\nBeheersing en gepastheid in conversaties zijn meer waard dan welsprekendheid. F. Bacon\nWie niet kan zwijgen, kan niet spreken. Seneca de Jongere\nGoede manieren bestaan uit kleine opofferingen. F. Chesterfield\nEen goed mens is niet degene die goed kan doen, maar degene die niet kwaad kan doen. V. Kljutschevsky\nDoe geen onherroepelijke uitspraken! Augustinus\nNiets is te veel! Solon<\/code><\/pre>\n<p><\/p>\n<p>We moeten een subprogramma maken dat een willekeurige regel uit het bestand source extraheren.<br \/>\nLaten we het algoritme van het subprogramma beschrijven:<\/p>\n<p><\/p>\n<ol>\n<li>Open het bestand source<\/li>\n<li>Tel het aantal regels in het geopende bestand<\/li>\n<li>Sluit het bestand (er is geen reden om het onnodig geopend te houden)<\/li>\n<li>We genereren een willekeurig geheel getal binnen het aantal regels van het bestand source<\/li>\n<li>Open het bestand source<\/li>\n<li>We geven de regel weer met het nummer van het gegenereerde getal<\/li>\n<li>We sluiten het bestand<\/li>\n<\/ol>\n<p><\/p>\n<p>We implementeren het algoritme in Python (ik schrijf voor Python 3.7):<\/p>\n<p><\/p>\n<pre><code class=\"python\">import random  #  importeren voor willekeurige getallen\nimport os  #  voor het verkrijgen van het pad\n\npath = os.path.abspath(__file__)  #  krijgen we het directe pad naar het bestand rndstr.py\npath = os.path.dirname(path)  #  omzetten naar het pad van de directory\npath = path  + '\\\/source'  #  omzetten naar het pad naar het bestand source\n\nf = open(path)  #  openen we het bestand\ni = 0  #  de teller op nul zetten\nfor str in f: i+=1  #  tellen we de regels van het bestand\nf.close  #  sluiten we het bestand\n\nj = int(round(i * random.random()))  #  genereren we een willekeurig geheel getal van 0 tot i\n\nf = open(path)  #  openen we het bestand\ni = 0  #  de teller op nul zetten\nfor str in f:  #  doorlopen we de regels in het bestand\n \u00a0\u00a0\u00a0if i == j:  #  als de regelnummer gelijk is aan het gegenereerde getal\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print (str, end='')  #  printen we de regel zonder naar een nieuwe regel over te gaan\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break  #  verlaten we de loop\n \u00a0\u00a0\u00a0i+=1  #  verhogen we de teller met 1\nf.close  #  sluiten we het bestand<\/code><\/pre>\n<p><\/p>\n<p>Nadat de bestanden zijn gemaakt en geschreven, moeten we uitvoeringsrechten aan het bestand geven <code>rndstr.sh<\/code>, en een alias maken voor snelle uitvoering.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">alias rnst=\"~\\\/rndstr\\\/rndstr.sh\"<\/code><\/pre>\n<p><\/p>\n<p>Nu, door in de terminal in te voeren <code>rnst<\/code> krijgen we een willekeurige aforisme in het klembord, die we bijvoorbeeld kunnen gebruiken in de correspondentie.<\/p>\n<p><\/p>\n<p>We hebben tenminste iets nuttigs geschreven. Relatief nuttig.<\/p>\n<p><\/p>\n<h3>P.s.<\/h3>\n<p><\/p>\n<p>Ik heb opzettelijk in de laatste stap geen screenshots gegeven en heb bepaalde acties niet gedetailleerd toegelicht, slechts de inhoud van de bestanden beschreven, zodat lezers zelf aan de slag kunnen.<\/p>\n<p><\/p>\n<p>I think it's time to conclude 'Termux step by step'. Of course, these are just the very first steps, but now you can move forward on your own.<\/p>\n<p><\/p>\n<p>Initially, I planned to show how to use nmap, sqlmap in this series, but there are already many articles on this topic. If there's a desire for me to continue the 'Termux step by step' series, there's a survey below, and in the comments, you can suggest what else I could write about.<\/p>\n<p class=\"for_users_only_msg\">Alleen geregistreerde gebruikers kunnen deelnemen aan de enqu\u00eate. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Log in<\/a><\/noindex>, alstublieft.<\/p>\n<h2 class=\"default-block__polling-title\">Doorgaan met 'Termux stap voor stap'?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Yes<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    No<\/p>\n<\/li>\n<\/ul>\n<p>    2 gebruikers hebben gestemd. Geen onthoudingen.<br \/>\n<br \/>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445868\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux&#8217;\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias&#8217;\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0448\u0430\u0433\u043d\u0443\u0442\u044c \u0435\u0449\u0435 \u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u044b \u0441 \u0432\u0430\u043c\u0438: \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e Termux:API \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python \u0438 nano, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c &#171;Hello, world!&#187; \u043d\u0430 Python \u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0440\u043e bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22529,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30531","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux&#039;\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias&#039;\u044b \u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Termux \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c (\u0427\u0430\u0441\u0442\u044c 2) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux&#039;\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias&#039;\u044b \u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:36:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:36:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Termux stap voor stap (Deel 2) | ProHoster","description":"In het vorige deel hebben we de basiscommando's van Termux leren kennen, hebben we een SSH-verbinding met de pc ingesteld, hebben we geleerd aliasen te maken en.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Termux \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c (\u0427\u0430\u0441\u0442\u044c 2) | ProHoster","og:description":"\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c \u0441 \u0431\u0430\u0437\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 Termux'\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 SSH \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u041f\u041a, \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c alias'\u044b \u0438.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/termux-shag-za-shagom-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:36:03+00:00","article:modified_time":"2019-10-31T18:36:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30531","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 01:39:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:16:48","updated":"2026-08-11 12:50:36","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=30531"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/30531\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/22529"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=30531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=30531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=30531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}