كيفية ضبط متغيرات bash على أرقام عشوائية



جرب أداة القضاء على المشاكل

يمكنك بسهولة إنشاء رقم عشوائي في موجه bash ، والذي يمكنك استخدامه بعد ذلك لتعيين الرقم المذكور كمتغير. هذا مفيد لكل شيء من كتابة أنواع معينة من النصوص إلى تشغيل مغامرات لعب الأدوار على الطاولة. سواء كنت تكتب حملة D&D أو تؤلف أداة مساعدة بلغة bash القوية ، يمكنك عادةً التخلص من سطر واحد من التعليمات البرمجية. تعد هذه أيضًا أداة مفيدة جدًا عند محاولة إجراء فحوصات أمنية معينة ، ولكن عليك أن تتذكر أن المفرقعات الجيدة يمكنها التحايل على مولدات الأرقام البسيطة هذه. لا تزال مفيدة في إنشاء أنواع معينة من كلمات المرور والرموز ، والتي قد تساعد في الحفاظ على أمان الأشياء على أي حال.



هناك عدة طرق مختلفة لتحقيق ذلك ، وليست كل تقنية مناسبة لكل موقف ، لذلك بذلنا قصارى جهدنا لإلقاء نظرة على كل طريقة واختبرناها للتأكد من أنها تعمل. ستحتاج إلى العمل من محطة طرفية لهذا الغرض ، لذلك إما أن تستخدم Ctrl + Alt + T أو Super (Windows) + T لفتح محطة رسومية ، ابدأ واحدة بكتابة Terminal في Dash ، حددها من التطبيق أو Whisker وقوائم أدوات النظام أو توجه إلى محطة افتراضية بشكل جدي باستخدام Ctrl و Alt ومفتاح بين F1 و F6.



الطريقة الأولى: انتقاء بايت عشوائي كامل

يمكنك إنشاء رقم عشوائي بين 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 في الأمر بأي رقم تقريبًا. في نهاية المطاف ، ستنفد الأرقام أو ربما تنفد بنية جهازك المضيف ، ولكن من المشكوك فيه أنك بحاجة إلى مثل هذا الرقم الكبير على أي حال.

لنفترض أنك ترغب في إنشاء رقم عشوائي بين 1 و 10 لتكوينك المتغير. يمكنك تشغيل:

ranNum = $ [RANDOM٪ 10 + 1]

ضع في اعتبارك أنه يمكنك استبدال 10 بأي قيمة عليا تريدها. هذه القيمة شاملة ، مما يعني أن الرقم 10 هو رقم معاد صالح. إذا كنت تريد تقليلها بواحد ، فقم ببساطة بعمل القيمة 9 بدلاً من استخدام رياضيات النمط -1 C أو C ++. هذه غير ضرورية عند تعيين متغير باستخدام هذه الطريقة ، وستؤدي في الواقع إلى نتائج غير متوقعة عن طريق إضافة أو طرح الأرقام.

الطريقة الثالثة: اختيار بت واحد عشوائي

إذا كنت بحاجة إلى تعيين متغير إلى بت عشوائي إما صفر أو واحد ، فقد ترغب في تعديل الكود السابق على النحو التالي:

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

سيعمل هذا الرمز على تعيين ranNum إما إلى 1 أو 0 اعتمادًا على ما إذا كانت الأرقام التي أخذ عينات منها من ملف / ديف / يوراندوم كان الملف زوجيًا أو فرديًا. يمكن أن يكون هذا مفيدًا إذا كنت بحاجة إلى تعيين معادلة بسيطة بنعم أو لا إلى حالة أو أخرى.

إذا لم يكن هذا عشوائيًا بما يكفي لما تعمل عليه ، فقد تحصل على رقم عشوائي أكثر قليلاً عن طريق إجراء مكالمة إلى الدليل / proc / sys / kernel / random باستخدام:

ranNum = $ ((0x $ (cut -c1-1 / proc / sys / kernel / عشوائي / uuid)٪ 2))

مرة أخرى ، على الرغم من ذلك ، سيؤدي هذا إلى تعيين المتغير على 1 أو 0 فقط ، وهو مثالي للمنطق الثنائي ولكنه ليس مفيدًا في الأوقات التي قد تحتاج فيها إلى رقم أطول. ومع ذلك ، يمكنك استخدام أي من هذه الأسطر في برنامج نصي باش إذا كان لديك أي حاجة للقيام بذلك. قد يكون هذا الخيار الثاني أفضل في الواقع للمواقف التي يفشل فيها الخيار الأول أيضًا

الطريقة الرابعة: تأليف نصوص bash لإرجاع أرقام عشوائية

إذا كنت ترغب في الحصول على أداة يدوية لإنشاء رقم عشوائي في أي وقت ، فيمكنك إنشاء برنامج نصي لسطر الأوامر للقيام بذلك. لا يستخدم هذا أكثر من لغة bash القياسية التي تمتلكها معظم مطالبات Linux الحديثة ، لذا يجب أن تتعامل أي توزيعة حديثة إلى حد كبير مع نظام التشغيل Linux وعدد قليل جدًا من أنظمة التشغيل المستندة إلى BSD مع هذا الأمر بشكل جيد. قد ترغب في استخدام cd ~ / .local / bin قبل المضي قدمًا للتأكد من أنه سيكون لديك البرنامج النصي الخاص بك في مكان يمكنك تنفيذه من أي مكان.

اكتب nano random أو vi عشوائي للبدء ، على الرغم من أنه يمكنك استخدام اسم مختلف للنص البرمجي إذا كنت ترغب في ذلك. يمكنك أيضًا استخدام محرر نصوص آخر إذا كنت تفضل ذلك. لنفترض أنك تريد إنشاء واحدة من شأنها إرجاع إما 1 أو 0 عند كتابتها في سطر الأوامر. أدخل ما يلي ثم اضغط على Ctrl + O لحفظه إذا كنت تستخدم nano:

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

اكتب Ctrl + X للخروج من محرر النصوص ومرة ​​أخرى في سطر الأوامر ، استخدم chmod + x random لجعل البرنامج النصي الخاص بك قابلاً للاستخدام. يمكنك بالطبع استخدام ranNum = $ [RANDOM٪ 10 + 1] أو ranNum = $ (($ (od -An -N1 -tu1 / dev / urandom))) أو أي سطر آخر بدلاً من ranNum = $ (($ $ RANDOM٪ 2)) حتى تتمكن من التحكم بالضبط في نوع الرقم الذي تريد استعادته. لنفترض أنك أردت تحديد رقم بين 1 و 50 بانتظام. غيّر نص bash النصي إلى:

#! / bin / bash ranNum = $ [RANDOM٪ 50 + 1] echo $ ranNum

يمكنك الآن تشغيله بسهولة من سطر الأوامر عن طريق كتابة عشوائي متى أردت إنشاء رقم عشوائي.

4 دقائق للقراءة