ทำ cat / dev / urandom - Broken terminal


31

ด้วยความอยากรู้เมื่อชุดตัวละครของคุณแตกออกจากการทำอะไรคล้าย ๆcat /dev/urandomจะมีวิธีในการแก้ไขปัญหาดังกล่าวหรือไม่?


6
แน่นอน ... อย่าทำอย่างนั้น! cat -Aนอกจากนี้ถ้าคุณคิดว่าคำสั่งอาจผลิตตัวอักษรที่ไม่ถูกต้องการใช้งาน
jnylen

2
นอกจากนี้ผมได้รับเสมออยากรู้ว่าcatสามารถทำลายชุดตัวละครของคุณ ...
crasic

cat / bin / ls มักจะแก้ไขปัญหานี้ (ไม่แน่ใจว่าทำไม)
skarface

2
@crasic: ส่งไบนารีไปยังเทอร์มินัลและแต่ละเทอร์มินัลมีวิธีในการเปลี่ยนแบบอักษร / สี / ฯลฯ โดยรับ caracters พิเศษ ดูมหัศจรรย์: linusakesson.net/programming/tty (aka "demystified TTY) ทั้งนี้ขึ้นอยู่กับการตั้งค่า TERM ของคุณมันจะตอบสนองแตกต่างกันเช่นกัน (และแน่นอนขึ้นอยู่กับจำนวนไบต์ที่ได้รับและตามลำดับ)
Olivier Dulac

@skarface: คุณอาจจะโชคดีที่ไบนารี่ของ / bin / ls ใกล้จะถึงจุดสิ้นสุดแล้วลำดับของไบต์ที่แก้ไขการแสดงผล มันจะขึ้นอยู่กับ OS, ไบนารี่ (เช่น, เวอร์ชันใด, คอมไพล์ออปชั่นที่ใช้ ฯลฯ ) และการตั้งค่าเทอร์มินัลของเทอร์มินัลของคุณ ... ดังนั้นฉันขอแนะนำให้คุณใช้ "stty sane" แทน ^^
Olivier Dulac

คำตอบ:


50

ลองหนึ่งในสิ่งเหล่านี้:

stty sane

หรือ

reset

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

โปรดทราบว่าstty saneจะถูกกำหนดโดย POSIXในขณะที่resetไม่ได้ ซึ่งหมายความว่าในบางระบบอาจไม่มีresetหรืออาจทำสิ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิงเช่นการรีเซ็ตทั้งระบบ resetผมยังไม่ได้พบระบบได้โดยไม่ต้อง

สำหรับข้อมูลพื้นฐานอื่น ๆ อ่าน "ลินุกซ์แป้นพิมพ์และคอนโซล HOWTO" บท"รีเซ็ต terminal ของคุณ"


ฉันให้คำตอบที่ถูกต้องแก่คุณเพราะคุณเป็นคนแรก ขออภัยที่อื่น ๆ
Pedro Montoto García

โดยทั่วไปการเขียนไบต์แบบสุ่มไปยังเทอร์มินัลไม่น่าจะทำให้มันอยู่ในสถานการณ์ที่ต้องมีสติแบบ stty เพื่อแก้ไข ที่มีแนวโน้มที่จะมาจากโปรแกรมหยุดทำงาน
Random832

stty saneเป็นวิธีที่ปลอดภัยและเหมาะสม (ฉันเบื่อ "รีเซ็ต" ด้วยเหตุผลที่ฉันระบุไว้ในความคิดเห็นภายใต้คำตอบของโกหก)
Olivier Dulac

1
@OlivierDulac ขอบคุณที่แบ่งปันประสบการณ์ของคุณ ฉันค้นคว้าและเรียนรู้ที่resetไม่ได้กำหนดโดย POSIX
เลสมานา

1
@ ฉันไม่คิดว่า @OlivierDulac กำลังแพร่กระจาย FUD การอ้างอิงที่resetไม่ "ปลอดภัย" คือข้อเท็จจริงที่ว่าไม่ได้ถูกกำหนดโดย POSIX โปรดหยุดการแพร่กระจาย FUD ที่ @OlivierDulac กำลังแพร่กระจาย FUD
lesmana

20

คุณสามารถลองใช้คำสั่งรีเซ็ต


4
คุณเชื่อมโยง man page โดยปริยายแนะนำ RTFM ที่ดี คุณคือฮีโร่ของฉันในวันนี้ขอบคุณ
ลุ

สิ่งนี้ใช้ได้กับยูนิกซ์หลายตัว ... แต่บางคำเตือน: ระวัง: ในบางระบบ (เช่นระบบปฏิบัติการอื่น ๆ หรือการแจกจ่ายลินุกซ์?) สิ่งนี้อาจเป็นการเริ่มระบบรีเซ็ต (ฉันเชื่อว่ามันไม่ทำงาน โซลาริสบางรุ่น) ดังนั้นการรีเซ็ตระบบเช่นบังคับให้รีบูต (โดยไม่ต้องปิดระบบที่เหมาะสม) ... เช่นเดียวกับคำสั่งใด ๆ ให้ระวัง (สิ่งนี้เป็นจริงสำหรับคำสั่งอื่นเช่นกัน: 'tar' บางตัวอย่างไม่ลบคำนำหน้า "/" และดังนั้นจึงสามารถเขียนทับไฟล์ที่มีความละเอียดอ่อน ฯลฯ ได้เสมอให้แน่ใจว่าคุณรู้ว่าคำสั่งที่คุณตั้งใจจะใช้ในระบบของคุณอย่างไร กำลังใช้)
Olivier Dulac

1
@OlivierDulac; OP แท็ก linux คำถามของเขาเพื่อให้เขาได้คำตอบ linuxcentric แม้ว่ามันจะทำงานบนระบบยูนิกซ์อื่น ๆ รวมถึง Solaris โดยไม่มีปัญหา ฉันทำงานกับ Solaris เป็นเวลา 15 ปี! คุณกำลังสับสนคำสั่ง SPARC Open Boot Prom reset ด้วยคำสั่ง userland reset (1) หากคุณออกการรีเซ็ตที่พรอมต์ตกลงคุณไม่น่าจะได้รับการกู้คืนจากเทอร์มินัลที่เสียหาย
user9517 รองรับ GoFundMonica

@lain: อ่านี่อาจเป็นไปได้ (Open Boot prom) แน่นอน แต่ก็ยังหมายถึงในบางสภาพแวดล้อม "รีเซ็ต" เชื่อมโยงกับการตั้งค่าโฮสต์ดังนั้นฉันชอบคน (แม้ว่าพวกเขาจะ "ส่วนใหญ่" บน linux) เพื่อเรียนรู้ / ใช้คำสั่ง "ปลอดภัย" "stty sane" (ซึ่งระบุสิ่งที่ มันทำได้และไม่ชัดเจนเหมือน "รีเซ็ต") ... นั่นคือเหตุผลที่ฉันเตือนผู้อ่านเกี่ยวกับเรื่องนี้
Olivier Dulac

@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD ลิงก์ทั้งหมดรีเซ็ตเป็น tset - โปรดแสดงหลักฐานสำหรับข้อมูลที่ผิดของคุณนอกเหนือจากที่คุณเข้าใจผิด OBP ไม่ใช่ระบบปฏิบัติการโฮสต์ดังนั้นจึงไม่นับ
user9517 รองรับ GoFundMonica

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