จุดประสงค์ของคำสั่ง“ ใช่” คืออะไร?


39

มีเป็นyesคำสั่งใน Unix / Linux ซึ่งโดยทั่วไปอนันต์พิมพ์ไปy stdoutประเด็นคืออะไรและมีประโยชน์อย่างไร


ความเป็นไปได้พิเศษไม่กี่ที่นี่

1
ความเป็นไปได้ที่ซ้ำกันของคำสั่ง `ใช่ 'คืออะไร? ... (การตั้งค่าสถานะนี้ซ้ำซ้อนเนื่องจากคำถามที่ใหม่กว่านั้นเป็นคำถามที่ดีกว่าและตอบได้ดีกว่า)
Aditya

เกี่ยวข้อง: unix.stackexchange.com/q/257297/117549
Jeff Schaller

คำตอบ:


41

ใช่สามารถใช้ในการส่งการตอบรับ (หรือเชิงลบเช่นใช่ n) การตอบสนองต่อคำสั่งใด ๆ ที่จะร้องขออย่างใดอย่างหนึ่งจึงทำให้คำสั่งเพื่อทำงานแบบไม่โต้ตอบ

คำสั่ง yes พร้อมกับคำสั่ง head สามารถใช้เพื่อสร้างไฟล์เสียงขนาดใหญ่สำหรับการทดสอบ

นอกจากนี้ยังสามารถใช้ในการทดสอบว่าระบบจัดการโหลดสูงได้ดีเพียงใดเนื่องจากการใช้ yes ให้ผลลัพธ์ในการใช้งานตัวประมวลผล 100% สำหรับระบบที่มีโปรเซสเซอร์เดียว (สำหรับระบบมัลติโปรเซสเซอร์จะต้องใช้กระบวนการสำหรับโปรเซสเซอร์แต่ละตัว) ตัวอย่างเช่นนี่อาจเป็นประโยชน์สำหรับการตรวจสอบว่าระบบระบายความร้อนของระบบจะมีประสิทธิภาพหรือไม่เมื่อโปรเซสเซอร์ทำงานที่ 100%

ในปี 2549 คำสั่ง yes ได้รับการเผยแพร่เนื่องจากเป็นวิธีการทดสอบว่า MacBook ของผู้ใช้ได้รับผลกระทบจาก Intermittent Shutdown Syndrome หรือไม่ ด้วยการรันคำสั่ง yes สองครั้งผ่าน Terminal ภายใต้ Mac OS X ผู้ใช้ก็สามารถใช้ CPU ของคอมพิวเตอร์ได้สูงสุดและดูว่าความล้มเหลวนั้นเกี่ยวกับความร้อนหรือไม่

ผ่านวิกิพีเดีย: http://en.wikipedia.org/wiki/Yes_(Unix)


9
สำหรับความเสียหายเพิ่มเติมลองyes `yes yes`
sendmoreinfo

3
@sendmoreinfo Evil
Tobias Kienzler

โอ้นั่นเป็นการทดสอบความเครียดที่ดี แค่ลองแล้วก็วิ่งไปหาเพื่อนร่วมงานขอ vm xD ใหม่
Toastgeraet

17

นี้อาจจะมีความเห็นที่ขัดแย้ง แต่ในมุมมองของฉันมันคือการแก้ไขที่น่าเกลียดสำหรับอินเตอร์เฟซผู้ใช้ที่ไม่ดีในเครื่องมือบรรทัดคำสั่ง

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

$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...

เนื่องจากคำตอบของคำถามนั้นนำมาจากอินพุตมาตรฐานการแก้ไขด่วนสำหรับปัญหานี้คือการมีแอปพลิเคชันที่ส่งออกสตริงy\nอย่างต่อเนื่องซึ่งเป็นสิ่งที่yesทำ สามารถใช้ท่อ Unix เพื่อส่งเอาต์พุตนี้เป็นอินพุตไปยังคำสั่งที่กำหนด

$ yes | frobnicate

ปัญหาอย่างหนึ่งของวิธีนี้คือyesไม่มีความเป็นไปได้ที่จะตรวจสอบคำถามที่มันตอบไป:

frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y

ทางออกที่ดีเมื่อมันสามารถใช้ได้เป็นตัวเลือกที่เฉพาะเจาะจงในการทำงานไม่โต้ตอบเช่นหรือrm -f apt-get -yสิ่งนี้ทำให้การเข้ารหัสพฤติกรรมที่มีเหตุผลมากขึ้นในแอปพลิเคชัน


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

6
แน่นอนคุณสามารถใช้ซอฟต์แวร์กรรมสิทธิ์ "Microsoft Windows" เพื่อทดสอบการตอบสนองของคอมพิวเตอร์ต่อโหลด cpu สูง แต่ "ใช่" เป็นโอเพ่นซอร์ส
Wildcard

1
มันเป็นหนึ่งในการแก้ไขที่น่าเกลียดที่สวยที่สุด
Jezzamon

4

ฉันชอบที่จะใช้yesเมื่อฉันคลายซิปไฟล์. zip หลายไฟล์ซึ่งทั้งหมดมีไฟล์เดียวกันที่มีชื่อเดียวกันและฉันถูกถามว่าจะทำอย่างไรในแต่ละกรณี (เช่นข้อตกลงใบอนุญาต)

yes | for z in *.zip; do unzip "$z"; done 

2

เพิ่งพบการใช้งานอื่นสำหรับมัน: ชอบที่จะล้างฮาร์ดดิสก์ที่มีรูปแบบที่แตกต่างจากศูนย์ (เช่น: dd if = / dev / ศูนย์ของ = / dev / sdd bs = 1M) และใช้ 'ใช่' สำหรับมัน:

yes UUUUUUUUUUUUU > /dev/sdd


1

ผู้ร่วมงานใช้วิธีนี้ในวิธีการใหม่ในการป้อนรหัสผ่าน

yes password | passwd

passwdจะขอรหัสผ่านเก่าก่อนหากผู้ใช้ไม่ได้เป็นรูทหรือผู้ใช้ขั้นสูงและจะไม่ดำเนินการต่อไปหากไม่ได้ป้อนรหัสผ่านที่ถูกต้อง ดังนั้นทั้งผู้ใช้คือรูทหรือpasswordรหัสผ่านเก่าเช่นกันและไม่มีอะไรเปลี่ยนแปลง
Michael Konietzka

@MichaelKonietzka แน่นอน แต่ด้วยเงื่อนไขที่คุณกล่าวถึงมันเป็นกรณีการใช้งานที่มีประโยชน์
frogstarr78

3
ยกเว้นสิ่งนี้จะยังคงมีอยู่ในประวัติศาสตร์ในธรรมดา Crazeyyy
Gleno

3
@Gleno ใน bash คุณสามารถนำหน้าด้วยช่องว่างเพื่อป้องกันไม่ให้มีการบันทึก (ในstackoverflow.com/q/640403/118153 )
Iiridayn

2
นอกจากนี้การรั่วไหลของรหัสผ่านให้กับผู้ใช้ท้องถิ่นในรายการกระบวนการ ( psหรือtopในเวลาที่เหมาะสม)
Federico Poloni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.