วิธีป้องกันเชลล์ adb ไม่ให้ออกจาก Ctrl + C


11

เมื่อฉันadb shellเข้าสู่อุปกรณ์ของฉัน (จากเดสก์ท็อป Windows) และเรียกใช้คำสั่งที่นั่นบางครั้งฉันต้องการยกเลิกคำสั่งนั้น วิธี unixy มาตรฐานที่จะทำคือการCtrl+Cรวมกันที่สำคัญ อย่างไรก็ตามเมื่อฉันทำเช่นนั้นทั้งadb shellยุติ

ฉันจะยกเลิกเพียงแค่โปรแกรมปัจจุบันภายในเชลล์ไม่ใช่เชลล์เองได้อย่างไร


ฉันอ่านโพสต์ในฟอรัมที่อ้างว่า <kbd> Ctrl </kbd> + <kbd>] </kbd> ใช้งานได้ แต่ฉันลองใช้โดยไม่มีโชค ไมล์สะสมของคุณอาจแตกต่างกันไป ดูเหมือนจะไม่มีทางที่จะเปิด adb ผ่าน Ctrl-C เนื่องจากไม่ได้จับ SIGINT มาตรฐานวิธี Ctrl-Vดูเหมือนจะไม่ทำงานให้กด Ctrl-C แม้ว่ามันจะไม่แปลง Enter เพื่อ^Jโชคไม่ดี
มัดธายอ่าน

คำตอบ:


13

ฉันพบวิธีแก้ปัญหาสำหรับสิ่งนี้ (อย่างน้อยสำหรับโทรศัพท์ที่รูท) หากโทรศัพท์ถูกรูทเครื่องbusyboxอาจถูกติดตั้งเป็นส่วนใหญ่ sttyเป็นส่วนหนึ่งของ busybox

stty intr ^ x

นิยามใหม่Ctrl+ Xเพื่อทำหน้าที่เป็นคำสั่งแบ่งเช่นสิ่งที่ก่อนหน้า+CtrlC


3
นั่นเป็นสิ่งที่ยอดเยี่ยมมาก
แมทธิวอ่าน


3

ฉันสามารถหยุดtopกระบวนการและยังคงอยู่ในเชลล์โดยพิมพ์คำสั่งต่อไปนี้:

C

CTRL+Z

CTRL+M

ถ้าฉันไม่ได้พิมพ์คอมโบทั้ง 3 ตัวมันจะไม่หยุดและฉันจะต้องCTRL+ Cเพื่อออกจากเชลล์ ฉันพบสิ่งนี้โดยลองใช้กุญแจหลายแบบและพบว่าบังเอิญ YMMV


Ctrl + Z ระงับกระบวนการเช่นคุณต้องฆ่าในภายหลังด้วยการฆ่าหรือ killall วิธีแก้ปัญหานี้ดีกว่าไม่มีอะไร แต่ ...
haimg

ฉันรู้ว่าหลังจากเมื่อฉัน "ทางออก" สิ่งที่ตลกมันไม่ใช่ ctrl + z ที่ทำอะไรมันไม่ได้กลับไปที่เชลล์จนกว่าฉันจะได้ ctrl + m และถ้าฉันไม่ได้พิมพ์ "c" ก่อนมันไม่ได้ทำอะไรเลย
Ryan Conrad

สิ่งนี้ไม่ได้ผลสำหรับฉัน (ฉันพยายามvmstatไม่ได้top) ที่น่าสนใจเมื่อผมกดCtrl-Zมันมีลักษณะเหมือนไม่มีอะไรเกิดขึ้น แต่ในความเป็นจริงการป้อนข้อมูลเริ่มต้นของฉันถูกเปลี่ยนเส้นทางตรงไปยังเปลือก Windows และไม่ adb เอาท์พุทของ adb (จาก vmstat) ยังคงปรากฏขึ้นในหน้าต่างเชลล์ แต่ฉันสามารถพิมพ์cd C:(ตัวอย่าง) และมันจะดำเนินการในเชลล์ Windows ถ้าฉันกดCtrl-Cเอาท์พุทจะหยุดและฉันจะเห็นคำสั่งที่ฉันพิมพ์ลงในเชลล์ Windows ที่อยู่เบื้องหลัง แปลกมาก!
แมทธิวอ่าน

3

Ctrl+ \ตามด้วยการEnterทำงานปกติดี

นี่จะส่งสัญญาณ SIGQUIT ซึ่งอาจไม่เหมาะสำหรับเซิร์ฟเวอร์ (ทิ้งไฟล์หลักเช่น) แต่ฉันไม่คิดว่ามันจะมีปัญหาในการใช้สิ่งนี้บนโทรศัพท์ / แท็บเล็ต Android (ซึ่งไม่ได้ถ่ายโอนไฟล์หลักตามค่าเริ่มต้น ) ทางออกง่าย ๆ ที่ใช้งานได้ในกรณีส่วนใหญ่


3

สำหรับ Windows คุณสามารถป้อน [Alt] + [3] ผ่านทาง numpad (อย่าลืมกด Enter หลังจากนั้น)
สิ่งนี้จะส่ง [Ctrl] + [c] ไปยังเชลล์ดังนั้นการยกเลิกคำสั่งปัจจุบัน:

D: \ Android> adb shell
$ cat
แมว
♥
^ C

$ exit
ทางออก

D: \ Android>

โปรดทราบว่า [Alt] + [3] จะสร้าง ASCII-Char ♥ใน Windows ซึ่งเท่ากับ ETX-Byte
คุณสามารถกด [Alt] + [0] - [3] (กดปุ่ม Alt ค้างไว้ในขณะที่กด [0] และ [3] บน numpad) หากคุณไม่ใช้หน้าต่างเพื่อแสดงหัวใจ;)

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