Slik setter du bash-variabler til tilfeldige tall
Du kan enkelt generere et tilfeldig tall ved bash-prompten, som du deretter kan bruke til å angi nummeret som en variabel. Dette er nyttig for alt fra å skrive bestemte typer skript til å løpe bordspill rollespillende opplevelser. Enten du kanskje skriver en D & D-kampanje eller forfatter et verktøy i det kraftige bash-språket, kan du vanligvis komme unna med en enkelt linje med kode. Dette er også et veldig nyttig verktøy når du prøver å preforme bestemte sikkerhetskontroller, men du vil huske at gode kjeks kan omgå disse enkle nummergeneratorene. De er fortsatt nyttige for å generere bestemte typer passord og kode, noe som kan bidra til å holde ting sikkert i alle fall.
Det er noen forskjellige måter å oppnå dette på, og ikke alle teknikker er riktige for enhver situasjon, så vi gjorde vårt beste for å ta en titt på hver vei og testet den for å sikre at den virket. Du må jobbe fra en terminal for dette, så bruk enten Ctrl + Alt + T eller Super (Windows) + T for å åpne en grafisk terminal, start en ved å skrive terminal i Dash, velg den fra Application eller Whisker og System Tools menyer eller hodet til en virtuell terminal på alvor ved å bruke Ctrl, Alt og en nøkkel mellom F1 og F6.
Metode 1: Plukker en full tilfeldig byte
Du kan generere et tilfeldig tall fra 1 til 256 ved å kjøre følgende kommando direkte fra bash-prompten:
od -An -N1 -tu1 / dev / urandom
Mens du kanskje noen ganger ser denne kommandoen referert til / dev / random i stedet for / dev / urandom, vil du sannsynligvis ikke vil kjøre denne måten. Dette kan utilsiktet rane andre programmer fra å kunne bruke tilfeldige frøgeneratoren under bruken av den. Når du har kjørt programmet og fått et nummer, kan du være sikker på at det vil fungere på denne måten også:
ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom)))
Dette vil sette variabelen ranNum til et tall mellom 1 og 256, valgt når du kjører den. Du kan kjøre det fra kommandolinjen eller fra innsiden av et skript, og det skal fungere uansett. Husk at du kan erstatte ranNum med et gyldig variabelnavn.
Metode 2: Angi en variabel til et tilfeldig tall mellom 1 og uansett
Du kan kjøre ekko $ [RANDOM% 40 + 1] fra kommandolinjen for å sende et tilfeldig tall mellom 1 og 40 rett til standardutgang, men du kan også erstatte 40 i kommandoen med nesten alle tall. Til slutt vil maskinens arkitektur gå tom for siffer eller kanskje bash vilje, men det er tvilsomt at du trenger et så høyt tall uansett.
La oss anta at du vil generere et tilfeldig tall mellom 1 og 10 for variabelkonfigurasjonen. Du kan kjøre:
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke herranNum = $ [RANDOM% 10 + 1]
Husk at du kan erstatte 10 med uansett øvre verdi som du vil ha. Denne verdien er inkluderende, noe som betyr at 10 er en gyldig returnert figur. Hvis du ønsket å redusere det med en, så gjør du bare verdien 9 i stedet for å bruke C eller C ++ style -1 matematikk. Disse er unødvendige når du angir en variabel ved hjelp av denne metoden, og de vil faktisk generere uventede resultater ved å legge til eller subtrahere siffer.
Metode 3: Velge en enkelt tilfeldig bit
Hvis du må sette en variabel til en tilfeldig bit av enten null eller en, kan du ønske å endre tidligere kode som følger:
ranNum = $ (($ (od -An -N1 -i / dev / urandom)% 2))
Denne koden vil sette ranNum til enten 1 eller 0, avhengig av om tallene det samplet fra / dev / urandom filen var like eller merkelige. Dette kan være nyttig hvis du trenger å sette en enkel ja eller ingen ligning til en eller annen stat.
Hvis dette ikke er tilstrekkelig tilfeldig for det du jobber med, kan du få et litt mer tilfeldig nummer ved å ringe til / proc / sys / kjerne / tilfeldig katalog med:
ranNum = $ ((0x $ (kutt -c1-1 / proc / sys / kjerne / tilfeldig / uuid)% 2))
Igjen, dette vil bare sette variabelen til 1 eller 0, som er perfekt for binær logikk, men ikke så nyttig for tider når du kanskje trenger et lengre tall. Du kan imidlertid bruke noen av disse linjene i et bash script hvis du hadde behov for det. Dette andre alternativet kan faktisk være bedre for situasjoner der den første også svikter
Metode 4: Authoring bash Skript for å returnere tilfeldige tall
Hvis du vil ha et praktisk verktøy for å generere et tilfeldig nummer når som helst, kan du opprette et kommandolinjeskript for å gjøre det. Dette bruker ikke noe mer enn det standardbash-språket som er mest moderne Linux-instruksjoner, så stort sett alle moderne Linux-distribusjoner, og ganske mange av de BSD-baserte operativsystemene skal håndtere dette helt fint. Du kan ønske å bruke cd ~ / .local / bin før du går videre for å sikre at du har skriptet ditt på et sted du kan kjøre det fra hvor som helst.
Skriv nano tilfeldig eller vi tilfeldig for å begynne, selv om du kan bruke et annet navn for skriptet ditt hvis du vil. Du kan også bruke en annen tekstredigerer hvis du foretrekker det. Si at du ønsket å opprette en som ville returnere enten 1 eller 0 når den ble skrevet på kommandolinjen. Skriv inn følgende og trykk deretter Ctrl + O for å lagre det hvis du bruker nano:
#! / bin / bash ranNum = $ (($ RANDOM% 2)) ekko $ ranNum
Skriv Ctrl + X for å gå ut av teksteditoren og en gang tilbake på kommandolinjen, bruk chmod + x tilfeldig for å gjøre skriptet ditt brukbart. Du kan selvfølgelig bruke ranNum = $ [RANDOM% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) eller en annen linje i stedet for ranNum = $ ( RANDOM% 2)) slik at du kan kontrollere nøyaktig hvilken type nummer du vil ha tilbake. La oss si at du ønsket å velge et nummer mellom 1 og 50 jevnlig. Endre bash script-teksten til:
#! / bin / bash ranNum = $ [RANDOM% 50 + 1] ekko $ ranNum
Du kan nå enkelt kjøre den fra kommandolinjen ved å skrive tilfeldig når du vil generere et tilfeldig nummer.
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her