Hoe bash-variabelen in willekeurige getallen in te stellen
U kunt eenvoudig een willekeurig nummer genereren bij de bash-prompt, die u vervolgens kunt gebruiken om het nummer in te stellen als een variabele. Dit is handig voor alles, van het schrijven van bepaalde soorten scripts tot het uitvoeren van avonturen op roltoplaying. Of u nu een D & D-campagne schrijft of een hulpprogramma schrijft in de krachtige bash-taal, u kunt meestal wegkomen met een enkele regel code. Dit is ook een erg handig hulpmiddel bij het uitvoeren van bepaalde beveiligingscontroles, maar u zult zich wel moeten herinneren dat goede crackers deze eenvoudige nummergeneratoren kunnen omzeilen. Ze zijn nog steeds nuttig voor het genereren van bepaalde typen wachtwoorden en codes, wat ertoe kan bijdragen dat alles toch veilig blijft.
Er zijn een paar verschillende manieren om dit te bereiken, en niet elke techniek is geschikt voor elke situatie, dus we hebben ons best gedaan om elke weg te bekijken en te testen om te zorgen dat het werkte. Je zult hiervoor vanaf een terminal moeten werken, dus gebruik Ctrl + Alt + T of Super (Windows) + T om een grafische terminal te openen, start een terminal door de terminal in de Dash te typen, selecteer deze in de applicatie of Whisker en Systeemwerkset-menu's of ga naar een virtuele terminal in ernst met behulp van Ctrl, Alt en een toets tussen F1 en F6.
Methode 1: Een volledige willekeurige byte kiezen
U kunt een willekeurig getal tussen 1 en 256 genereren door de volgende opdracht rechtstreeks vanaf de bash-prompt uit te voeren:
od-An -N1 -tu1 / dev / urandom
Hoewel u deze opdracht soms kunt zien met / dev / random in plaats van / dev / urandom, wilt u waarschijnlijk niet op deze manier werken. Dit kan onbedoeld andere programma's beroven van het kunnen gebruiken van de willekeurige zaadgenerator tijdens uw gebruik ervan. Zodra je het programma hebt uitgevoerd en een nummer hebt gekregen, kun je er zeker van zijn dat het ook op deze manier werkt:
ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))
Hiermee wordt de variabele ranNum ingesteld op een getal tussen 1 en 256, geselecteerd op het moment dat u het uitvoert. Je kunt het uitvoeren vanaf de opdrachtregel of vanuit een script en het zou in beide richtingen moeten werken. Houd er rekening mee dat u ranNum kunt vervangen door een geldige naam van een variabele.
Methode 2: Een variabele instellen op een willekeurig getal tussen 1 en wat dan ook
U kunt echo $ [RANDOM% 40 + 1] uitvoeren vanaf de opdrachtregel om een willekeurig getal tussen 1 en 40 rechtstreeks naar standaarduitvoer te sturen, maar u kunt ook de 40 in het commando vervangen door vrijwel elk nummer. Uiteindelijk zal de architectuur van je hostmachine geen cijfers meer hebben of misschien bash wil, maar het is twijfelachtig dat je hoe dan ook zo'n hoog aantal nodig hebt.
Laten we aannemen dat je een willekeurig getal tussen 1 en 10 wilt genereren voor je variabele configuratie. Je zou kunnen rennen:
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikkenranNum = $ [RANDOM% 10 + 1]
Houd er rekening mee dat u 10 kunt vervangen door elke gewenste waarde. Deze waarde is inclusief, wat betekent dat 10 een geldige geretourneerde figuur is. Als je het met één wilt verminderen, maak dan gewoon de waarde 9 in plaats van C of C ++ style -1 wiskunde te gebruiken. Deze zijn onnodig bij het instellen van een variabele met deze methode, en ze zullen eigenlijk onverwachte resultaten genereren door cijfers toe te voegen of af te trekken.
Methode 3: Een enkele willekeurige bit selecteren
Als u een variabele wilt instellen op een willekeurig bit van nul of één, dan wilt u misschien de vorige code als volgt wijzigen:
ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))
Deze code stelt ranNum in op 1 of 0, afhankelijk van of de getallen die het uit het / dev / urandom- bestand bemonsterde even of oneven waren. Dit kan handig zijn als u een eenvoudige ja-of-geen-vergelijking wilt instellen voor de ene of de andere staat.
Als dit niet voldoende willekeurig is voor waar je aan werkt, krijg je misschien een iets meer willekeurig getal door te bellen naar de / proc / sys / kernel / willekeurige map met:
ranNum = $ ((0x $ (knippen -c1-1 / proc / sys / kernel / willekeurig / uuid)% 2))
Nogmaals, hierdoor wordt alleen de variabele ingesteld op 1 of 0, wat perfect is voor binaire logica, maar niet zo handig voor tijden dat je een langer nummer nodig hebt. U zou echter een van deze regels in een bash-script kunnen gebruiken als u dit nodig zou hebben. Deze tweede optie is misschien beter voor situaties waarin de eerste ook mislukt
Methode 4: Bash-scripts maken om willekeurige getallen terug te geven
Als u op elk gewenst moment een handig hulpmiddel wilt hebben voor het genereren van een willekeurig nummer, kunt u een opdrachtregelscript maken om dit te doen. Dit gebruikt niets meer dan de standaard bash-taal die de meeste moderne Linux-prompts hebben, dus vrijwel elke moderne Linux-distributie en een flink aantal BSD-gebaseerde besturingssystemen zouden dit prima moeten verwerken. Misschien wil je cd ~ / .local / bin gebruiken voordat je verder gaat, om er zeker van te zijn dat je je script op een plaats hebt waar je het overal vandaan kunt uitvoeren.
Typ nano willekeurig of vi willekeurig om te beginnen, hoewel je desgewenst een andere naam voor je script kunt gebruiken. U kunt ook een andere teksteditor gebruiken als u dat wilt. Stel dat u er een wilde maken die 1 of 0 zou teruggeven als u op de opdrachtregel typt. Voer het volgende in en druk vervolgens op Ctrl + O om het op te slaan als u nano gebruikt:
#! / bin / bash ranNum = $ (($ RANDOM% 2)) echo $ ranNum
Typ Ctrl + X om de teksteditor te sluiten en eenmaal terug op de opdrachtregel, gebruik chmod + x willekeurig om uw script bruikbaar te maken. Je zou natuurlijk ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) of een andere regel kunnen gebruiken in plaats van ranNum = $ (($ RANDOM% 2)) zodat je precies kunt bepalen welk soort nummer je terug wilt hebben. Stel dat u een nummer tussen 1 en 50 regelmatig wilt selecteren. Wijzig de tekst van het bash-script in:
#! / bin / bash ranNum = $ [RANDOM% 50 + 1] echo $ ranNum
Je kunt het nu eenvoudig uitvoeren vanaf de opdrachtregel door willekeurig te typen wanneer je een willekeurig getal wilt genereren.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken