Sådan indstilles bash-variabler til tilfældige tal



Prøv Vores Instrument Til At Fjerne Problemer

Du kan nemt generere et tilfældigt tal ved bash-prompten, som du derefter kan bruge til at indstille nummeret som en variabel. Dette er nyttigt til alt fra at skrive bestemte typer scripts til at køre rollespileventyr på bordpladen. Uanset om du skriver en D&D-kampagne eller skriver et værktøj på det stærke bash-sprog, kan du normalt slippe af sted med en enkelt kodelinje. Dette er også et meget nyttigt værktøj, når du forsøger at udforme visse sikkerhedskontroller, men du vil gerne huske, at gode crackere kan omgå disse enkle nummergeneratorer. De er stadig nyttige til at generere bestemte typer adgangskoder og kode, hvilket kan hjælpe med at beskytte tingene alligevel.



Der er et par forskellige måder at opnå dette på, og ikke alle teknikker passer til enhver situation, så vi gjorde vores bedste for at se på hver vej og testede den for at sikre, at den fungerede. Du skal arbejde fra en terminal til dette, så brug enten Ctrl + Alt + T eller Super (Windows) + T for at åbne en grafisk terminal, start en ved at skrive terminal i Dash, vælg den fra applikationen eller whisker og Systemværktøj-menuer eller gå til en virtuel terminal for alvor ved at bruge Ctrl, Alt og en nøgle mellem F1 og F6.



Metode 1: Vælg en fuld tilfældig byte

Du kan generere et tilfældigt tal mellem 1 og 256 ved at køre følgende kommando direkte fra bash-prompten:



af -An -N1 -tu1 / dev / urandom

Mens du måske nogle gange ser denne kommando henvist til / dev / random i stedet for / dev / urandom, vil du sandsynligvis ikke køre på denne måde. Dette kan utilsigtet fratage andre programmer fra at kunne bruge den tilfældige frøgenerator under din brug af den. Når du har kørt programmet og fået et nummer, kan du være sikker på, at det også fungerer på denne måde:



ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))

Dette indstiller variablen ranNum til et tal mellem 1 og 256, valgt på det tidspunkt, du kører den. Du kan køre det fra kommandolinjen eller indefra i et script, og det skal fungere på begge måder. Husk at du kan erstatte ranNum med ethvert gyldigt variabelnavn.

Metode 2: Indstilling af en variabel til et tilfældigt tal mellem 1 og hvad

Du kan køre ekko $ [RANDOM% 40 + 1] fra kommandolinjen for at sende et tilfældigt tal mellem 1 og 40 lige til standardoutput, men du kan også erstatte 40 i kommandoen med stort set ethvert tal. Til sidst vil din værtsmaskins arkitektur løbe tør for cifre eller måske bash vil, men det er tvivlsomt, at du alligevel har brug for et så stort antal.

Lad os antage, at du gerne vil generere et tilfældigt tal mellem 1 og 10 til din variable konfiguration. Du kunne løbe:

ranNum = $ [RANDOM% 10 + 1]

Husk, at du kan erstatte 10 med den øvre værdi, du vil have. Denne værdi er inklusive, hvilket betyder at 10 er et gyldigt returneret tal. Hvis du ville reducere det med en, skal du blot oprette værdien 9 i stedet for at bruge C eller C ++ stil -1 matematik. Disse er unødvendige, når du indstiller en variabel ved hjælp af denne metode, og de genererer faktisk uventede resultater ved at tilføje eller trække cifre.

Metode 3: Valg af en enkelt tilfældig bit

Hvis du har brug for at indstille en variabel til en tilfældig bit på enten nul eller en, kan du muligvis ændre den forrige kode som følger:

ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))

Denne kode indstiller ranNum til enten 1 eller 0, afhængigt af om de numre, den samplede fra / dev / urandom filen var lige eller ulige. Dette kan være nyttigt, hvis du har brug for at indstille et simpelt ja eller nej-ligning til den ene eller den anden tilstand.

Hvis dette ikke er tilstrækkeligt tilfældigt til det, du arbejder på, kan du muligvis få et lidt mere tilfældigt nummer ved at ringe til / proc / sys / kernel / random biblioteket med:

ranNum = $ ((0x $ (klip -c1-1 / proc / sys / kerne / tilfældig / uuid)% 2))

Endnu en gang indstiller dette dog kun variablen til 1 eller 0, hvilket er perfekt til binær logik, men ikke så nyttigt til tidspunkter, hvor du muligvis har brug for et længere nummer. Du kan dog bruge nogen af ​​disse linjer i et bash-script, hvis du har brug for det. Denne anden mulighed kan faktisk være bedre i situationer, hvor den første også fejler

Metode 4: Oprettelse af bash-scripts til returnering af tilfældige tal

Hvis du til enhver tid vil have et praktisk værktøj til at generere et tilfældigt tal, kan du oprette et kommandolinjeskript for at gøre det. Dette bruger intet mere end det standard bash-sprog, som de fleste moderne Linux-prompter har, så stort set enhver moderne Linux-distribution, og en hel del af de BSD-baserede operativsystemer skal klare det fint. Du ønsker muligvis at bruge cd ~ / .local / bin, før du går videre for at sikre dig, at du har dit script et sted, hvor du kan udføre det hvor som helst.

Skriv nano tilfældig eller vi tilfældig for at begynde, selvom du kunne bruge et andet navn til dit script, hvis du vil. Du kan også bruge en anden teksteditor, hvis du foretrækker det. Sig, at du ville oprette en, der ville returnere enten 1 eller 0, når du skrev på kommandolinjen. Indtast følgende, og tryk derefter på Ctrl + O for at gemme det, hvis du bruger nano:

#! / bin / bash ranNum = $ (($ RANDOM% 2)) ekko $ ranNum

Skriv Ctrl + X for at afslutte teksteditoren, og brug chmod + x tilfældigt, når du er tilbage på kommandolinjen, for at gøre dit script anvendeligt. Du kan selvfølgelig bruge ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) eller en hvilken som helst anden linje i stedet for ranNum = $ (($ RANDOM% 2)), så du kunne kontrollere nøjagtigt, hvilken slags nummer du vil have tilbage. Lad os sige, at du regelmæssigt ønskede at vælge et tal mellem 1 og 50. Skift bash-scriptets tekst til:

#! / bin / bash ranNum = $ [RANDOM% 50 + 1] ekko $ ranNum

Du kan nu let køre det fra kommandolinjen ved at skrive tilfældigt, når du vil generere et tilfældigt tal.

4 minutter læst