Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

สร้างตัวเลขสุ่มใน Bash:คู่มือฉบับย่อ

คุณสามารถสร้างตัวเลขสุ่มได้อย่างง่ายดายที่ bash prompt ซึ่งคุณสามารถใช้ตั้งค่าตัวเลขดังกล่าวเป็นตัวแปรได้ สิ่งนี้มีประโยชน์สำหรับทุกสิ่งตั้งแต่การเขียนสคริปต์บางประเภทไปจนถึงการดำเนินการผจญภัยสวมบทบาทบนโต๊ะ ไม่ว่าคุณจะเขียนแคมเปญ D&D หรือเขียนยูทิลิตี้ในภาษา bash ที่ทรงพลัง คุณก็มักจะใช้โค้ดเพียงบรรทัดเดียว นี่เป็นเครื่องมือที่มีประโยชน์มากเมื่อพยายามสร้างการตรวจสอบความปลอดภัยบางอย่างล่วงหน้า แต่คุณจะต้องจำไว้ว่าแครกเกอร์ที่ดีสามารถหลีกเลี่ยงตัวสร้างตัวเลขง่ายๆ เหล่านี้ได้ ยังคงมีประโยชน์สำหรับการสร้างรหัสผ่านและรหัสบางประเภท ซึ่งอาจช่วยรักษาสิ่งต่าง ๆ ให้ปลอดภัยต่อไปได้

มีหลายวิธีในการบรรลุเป้าหมายนี้ และไม่ใช่ว่าทุกเทคนิคจะเหมาะกับทุกสถานการณ์ ดังนั้นเราจึงพยายามอย่างเต็มที่เพื่อดูแต่ละวิธีและทดสอบเพื่อให้แน่ใจว่าได้ผล คุณจะต้องทำงานจากเทอร์มินัลเพื่อทำสิ่งนี้ ดังนั้นให้ใช้ Ctrl+Alt+T หรือ Super (Windows)+T เพื่อเปิดเทอร์มินัลแบบกราฟิก เริ่มต้นด้วยการพิมพ์เทอร์มินัลใน Dash เลือกจากเมนูแอปพลิเคชันหรือ Whisker และเครื่องมือระบบ หรือไปที่เทอร์มินัลเสมือนอย่างจริงจังโดยใช้ Ctrl, Alt และปุ่มระหว่าง F1 และ F6

วิธีที่ 1:การเลือกไบต์แบบสุ่มทั้งหมด

คุณสามารถสร้างตัวเลขสุ่มได้ระหว่าง 1 ถึง 256 โดยการรันคำสั่งต่อไปนี้โดยตรงจาก bash prompt:

od -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=$[สุ่ม%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$(ตัด -c1-1 /proc/sys/kernel/random/uuid) % 2))

อีกครั้งหนึ่ง สิ่งนี้จะตั้งค่าตัวแปรเป็น 1 หรือ 0 เท่านั้น ซึ่งเหมาะสำหรับตรรกะไบนารี่ แต่ไม่มีประโยชน์สำหรับเวลาที่คุณอาจต้องการตัวเลขที่ยาวกว่านี้ อย่างไรก็ตาม คุณสามารถใช้บรรทัดเหล่านี้ในสคริปต์ทุบตีได้ หากคุณจำเป็นต้องทำเช่นนั้น ตัวเลือกที่สองนี้อาจดีกว่าสำหรับสถานการณ์ที่ตัวเลือกแรกล้มเหลวเช่นกัน

วิธีที่ 4:การเขียนสคริปต์ทุบตีเพื่อส่งคืนตัวเลขสุ่ม

หากคุณต้องการมีเครื่องมือที่มีประโยชน์สำหรับสร้างตัวเลขสุ่มได้ตลอดเวลา คุณสามารถสร้างสคริปต์บรรทัดคำสั่งได้  สิ่งนี้ไม่ได้ใช้อะไรมากไปกว่าภาษาทุบตีมาตรฐานที่พรอมต์ Linux สมัยใหม่ส่วนใหญ่มี ดังนั้นการกระจาย Linux สมัยใหม่และระบบปฏิบัติการที่ใช้ BSD บางส่วนน่าจะจัดการเรื่องนี้ได้ดี คุณอาจต้องการใช้ cd ~/.local/bin ก่อนที่จะดำเนินการต่อเพื่อให้แน่ใจว่าคุณจะมีสคริปต์ของคุณอยู่ในตำแหน่งที่คุณสามารถเรียกใช้งานได้จากทุกที่

พิมพ์ nano Random หรือ vi Random เพื่อเริ่มต้น แม้ว่าคุณจะใช้ชื่ออื่นสำหรับสคริปต์ของคุณได้หากต้องการ คุณสามารถใช้โปรแกรมแก้ไขข้อความอื่นได้เช่นกันหากต้องการ สมมติว่าคุณต้องการสร้างสิ่งที่จะส่งกลับ 1 หรือ 0 เมื่อพิมพ์ที่บรรทัดคำสั่ง ป้อนข้อมูลต่อไปนี้แล้วกด Ctrl+O เพื่อบันทึกหากคุณใช้นาโน:

#!/bin/bash ranNum=$(($RANDOM % 2)) ก้อง $ranNum

พิมพ์ Ctrl+X เพื่อออกจากโปรแกรมแก้ไขข้อความ และเมื่อกลับมาที่บรรทัดคำสั่งแล้ว ให้ใช้ chmod +x สุ่มเพื่อทำให้สคริปต์ของคุณใช้งานได้ แน่นอนคุณสามารถใช้ ranNum=$[RANDOM%10+1],  ranNum=$(($(od -An -N1 -tu1 /dev/urandom))) หรือบรรทัดอื่นแทน  ranNum=$(($RANDOM % 2)) เพื่อให้คุณสามารถควบคุมได้อย่างชัดเจนว่าคุณต้องการกลับหมายเลขประเภทใด สมมติว่าคุณต้องการเลือกตัวเลขระหว่าง 1 ถึง 50 เป็นประจำ เปลี่ยนข้อความของสคริปต์ทุบตีเป็น:

#!/bin/bash ranNum=$[RANDOM%50+1] ก้อง $ranNum

ตอนนี้คุณสามารถเรียกใช้จากบรรทัดคำสั่งได้อย่างง่ายดายโดยพิมพ์สุ่มเมื่อใดก็ตามที่คุณต้องการสร้างตัวเลขสุ่ม

เกี่ยวกับผู้เขียน

สร้างตัวเลขสุ่มใน Bash:คู่มือฉบับย่อ

เควิน แอร์โรว์ส

Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์สูงและมีความรู้และมีประสบการณ์ในอุตสาหกรรมมานานกว่าทศวรรษ เขาได้รับการรับรองจาก Microsoft Certified Technology Specialist (MCTS) และมีความมุ่งมั่นอย่างแรงกล้าที่จะติดตามข่าวสารเกี่ยวกับการพัฒนาเทคโนโลยีล่าสุด Kevin ได้เขียนหัวข้อที่เกี่ยวข้องกับเทคโนโลยีอย่างกว้างขวาง โดยนำเสนอความเชี่ยวชาญและความรู้ของเขาในด้านต่างๆ เช่น การพัฒนาซอฟต์แวร์ ความปลอดภัยทางไซเบอร์ และการประมวลผลแบบคลาวด์ การมีส่วนร่วมของเขาในด้านเทคโนโลยีได้รับการยอมรับและเคารพอย่างกว้างขวางจากเพื่อนร่วมงานของเขา และเขาได้รับการยกย่องอย่างสูงจากความสามารถของเขาในการอธิบายแนวคิดทางเทคนิคที่ซับซ้อนในลักษณะที่ชัดเจนและรัดกุม