Как да зададете bash променливи на произволни числа



Опитайте Нашия Инструмент За Премахване На Проблемите

Можете лесно да генерирате произволно число в подканата на bash, което след това можете да използвате, за да зададете това число като променлива. Това е полезно за всичко - от писането на определени типове скриптове до стартирането на приключения за ролеви игри на маса. Независимо дали пишете D&D кампания или създавате помощна програма на мощния bash език, обикновено можете да се измъкнете с един ред код. Това също е много полезен инструмент, когато се опитвате да извършите определени проверки за сигурност, но ще искате да запомните, че добрите крекери могат да заобиколят тези прости генератори на числа. Те все още са полезни за генериране на определени видове пароли и код, което може да помогне да запазите нещата така или иначе.



Има няколко различни начина за постигане на това и не всяка техника е подходяща за всяка ситуация, затова направихме всичко възможно да разгледаме всеки начин и да го тестваме, за да сме сигурни, че работи. За това ще трябва да работите от терминал, така че използвайте Ctrl + Alt + T или Super (Windows) + T, за да отворите графичен терминал, започнете един, като напишете терминал в Dash, изберете го от приложението или Whisker и менюта на System Tools или се насочете сериозно към виртуален терминал, като използвате Ctrl, Alt и клавиш между F1 и F6.



Метод 1: Избиране на пълен произволен байт

Можете да генерирате произволно число от между 1 и 256, като изпълните следната команда директно от командния ред на bash:



на -An -N1 -tu1 / dev / urandom

Въпреки че понякога може да видите тази команда да се препраща към / dev / random вместо / dev / urandom, вероятно няма да искате да стартирате по този начин. Това може неволно да ограби други програми от възможността да използват генератора на произволни семена по време на използването му. След като стартирате програмата и сте получили номер, можете да сте сигурни, че ще работи и по този начин:



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

Това ще зададе променливата ranNum на число между 1 и 256, избрано в момента, в който я стартирате. Можете да го стартирате от командния ред или от вътрешността на скрипт и той трябва да работи по двата начина. Имайте предвид, че можете да замените ranNum с всяко валидно име на променлива.

Метод 2: Задаване на променлива на произволно число между 1 и каквото и да било

Можете да стартирате echo $ [RANDOM% 40 + 1] от командния ред, за да изпратите произволно число между 1 и 40 направо към стандартния изход, но можете също така да замените 40-те в командата с почти всяко число. В крайна сметка архитектурата на вашата хост машина ще свърши с цифри или може би bash, но е съмнително, че така или иначе имате нужда от толкова голям номер.

Да предположим, че искате да генерирате произволно число между 1 и 10 за вашата променлива конфигурация. Можете да изпълните:

ranNum = $ [СЛУЧАЙНА% 10 + 1]

Имайте предвид, че можете да замените 10 с каквато и да е горна стойност. Тази стойност е включена, което означава, че 10 е валидна върната цифра. Ако искате да го намалите с един, просто направете стойността 9, вместо да използвате математика C или C ++ стил -1. Те са ненужни при задаване на променлива с помощта на този метод и всъщност ще генерират неочаквани резултати чрез добавяне или изваждане на цифри.

Метод 3: Избор на единичен случаен бит

Ако трябва да зададете променлива на произволен бит от нула или единица, тогава може да пожелаете да модифицирате предишния код, както следва:

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

Този код ще зададе ranNum на 1 или 0 в зависимост от това дали номерата, от които е взел проби от / dev / urandom файла бяха четни или нечетни. Това може да бъде полезно, ако трябва да зададете просто уравнение да или не на едно или друго състояние.

Ако това не е достатъчно произволно за това, върху което работите, тогава може да получите малко по-произволно число, като се обадите в директорията / proc / sys / kernel / random с:

ranNum = $ ((0x $ (cut -c1-1 / proc / sys / kernel / random / uuid)% 2))

За пореден път обаче това ще настрои променливата само на 1 или 0, което е идеално за двоична логика, но не е толкова полезно за моменти, когато може да се наложи по-дълъг номер. Можете обаче да използвате всеки от тези редове в bash скрипт, ако е имало нужда да го направите. Тази втора опция всъщност може да е по-добра за ситуации, когато и първата не успее

Метод 4: Автор на bash скриптове за връщане на случайни числа

Ако искате да имате удобен инструмент за генериране на произволно число по всяко време, можете да създадете скрипт от командния ред, за да го направите. Това не използва нищо повече от стандартния баш език, който имат повечето съвременни подкани на Linux, така че почти всяка модерна дистрибуция на Linux и немалко от базираните на BSD операционни системи трябва да се справят добре. Може да искате да използвате cd ~ / .local / bin, преди да продължите, за да сте сигурни, че ще имате скрипта си на място, където можете да го изпълните отвсякъде.

Въведете nano random или vi random, за да започнете, въпреки че бихте могли да използвате друго име за вашия скрипт, ако искате. Можете да използвате и друг текстов редактор, ако предпочитате. Да кажем, че сте искали да създадете такъв, който ще връща или 1, или 0, когато бъде въведен в командния ред. Въведете следното и след това натиснете Ctrl + O, за да го запазите, ако използвате nano:

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

Въведете Ctrl + X, за да излезете от текстовия редактор и след като се върнете в командния ред, използвайте chmod + x random, за да направите скрипта си използваем. Можете, разбира се, да използвате ranNum = $ [СЛУЧАЙНА% 10 + 1], ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) или всяка друга линия вместо ranNum = $ (($ СЛУЧАЙНО% 2)), за да можете да контролирате какъв точно номер искате да получите обратно. Да приемем, че сте искали редовно да избирате число между 1 и 50. Променете текста на bash скрипта на:

#! / bin / bash ranNum = $ [СЛУЧАЙНА% 50 + 1] ехо $ ranNum

Вече можете лесно да го стартирате от командния ред, като въведете произволно, когато искате да генерирате произволно число.

4 минути четене