ล้างคำสั่งจากเทอร์มินัลใน OS X


24

สมมติว่าฉันพิมพ์คำสั่งในเทอร์มินัล 'mv * .jpg .. \ photos' และเมื่อฉันพิมพ์ฉันก็รู้ว่าฉันไม่ต้องการรันคำสั่งนี้อีกเลย ฉันต้องการเพียงลบทั้งคำสั่ง ฉันไม่ต้องการล้างทั้งหน้าจอหรือลบประวัติทุบตีใด ๆ ที่ฉันต้องการยกเลิกบรรทัดปัจจุบันและลบมัน

มีแป้นพิมพ์ลัดหรือฉันต้องลบอักขระแต่ละตัวจริงหรือไม่

คำตอบ:


36

สมมติว่าคุณอยู่ในทุบตีใช้+CtrlU


ขอบคุณ! ที่ทำมัน มีรายการรูปแบบของแป้นพิมพ์ลัดที่บันทึกไว้ที่อื่นหรือไม่?
Paul Alexander


2
สิ่งนี้ได้ผลกับฉันด้วยเช่นกัน
LandonSchropp

1
ใช้งานได้เฉพาะเมื่อเคอร์เซอร์อยู่ที่ท้ายบรรทัด สำหรับสถานการณ์เหล่านั้นที่เคอร์เซอร์ของคุณเป็นจุดเริ่มต้นคุณจำเป็นต้องใช้ CTRL-K
Jarrod Nettles

คุณทำสิ่งนี้ในสคริปต์ได้อย่างไร
Jonny

7

หลายโปรแกรมที่รอให้คุณพิมพ์บรรทัดคำสั่งแล้วรันบรรทัดนั้นรวมถึง bash ใช้Ctrl+ Cเพื่อหมายถึง“ ยกเลิกงานปัจจุบันและกลับไปที่หน้าจอหลัก”

บางโปรแกรมรวมถึง bash ใช้Ctrl+ U( ล้างคำสั่งจากเทอร์มินัลใน OS X ) เพื่อหมายถึง "ลบจุดเริ่มต้นของบรรทัดจนถึงเคอร์เซอร์" (หรือ "ลบทั้งบรรทัด")

ในทุบตีความแตกต่างที่สังเกตได้ระหว่างCtrl+ CและCtrl+ Uรวมถึง:

  • คุณสามารถยกเลิกCtrl+ Uแต่ไม่+CtrlC
  • Ctrl+ Uเก็บส่วนของบรรทัดหลังเคอร์เซอร์ถ้ามี
  • Ctrl+ Uลบข้อความที่ได้รับผลกระทบจากหน้าจอ; Ctrl+ Cแสดงพรอมต์ใหม่ใต้บรรทัดปัจจุบัน

บางครั้งคุณต้องการหยุดพิมพ์คำสั่ง แต่ป้อนคำสั่งในประวัติเชลล์เพื่อรันในภายหลัง เคล็ดลับที่มีประโยชน์คือการใส่#จุดเริ่มต้นของบรรทัดและดำเนินการ: เนื่องจากตอนนี้บรรทัดเป็นความคิดเห็นแล้วมันจะไม่ทำอะไรเลย ในทุบตีมีทางลัดเดียวสำคัญ: +Alt#


2

มีreadlineฟังก์ชั่นที่อาจจะไม่ผูกพันกับการกดแป้นที่เรียกkill-whole-lineว่าจะฆ่าทั้งบรรทัดเมื่อเทียบกับการฆ่าเฉพาะส่วนก่อนเคอร์เซอร์ ( unix-line-discardซึ่งค่อนข้างเป็นชื่อเรียกผิดและถูกผูกไว้กับCtrl- u)

คุณสามารถผูกกับการกดแป้นพิมพ์ที่มีอยู่ ฉันชอบShiftAlt- Uเพราะมันเป็นฟังก์ชั่นที่เกี่ยวข้อง การกดแป้นนั้นอาจถูกผูกไว้do-lowercase-versionซึ่งหมายความว่ามันจะทำสิ่งที่รุ่น unshifted ทำ (ในกรณีนี้upcase-word) เนื่องจากเราไม่จำเป็นต้องใช้สองปุ่มในการทำเช่นนั้นลองใช้ปุ่มนั้น

คุณสามารถลองได้ที่บรรทัดคำสั่งโดยสร้างการเชื่อมด้วยวิธีนี้:

bind '"\eU":kill-whole-line'

หรือทำให้ถาวรโดยการวางบรรทัดนี้ใน~/.inputrcไฟล์ของคุณ:

"\eU":kill-whole-line

หากต้องการยกเลิกCtrl- uหรือShiftAlt- U(หรือการดำเนินการใด ๆ ที่สามารถเลิกทำได้) ให้กดCtrl- Shift- _(ขีดล่าง) หรือCtrl- x Ctrl- u(การกดแป้นสองครั้ง) หรือคุณสามารถวางกลับ (งัด) สิ่งที่คุณฆ่าโดยการกดCtrl- yซึ่งสามารถทำซ้ำได้หากคุณต้องการสำเนาของข้อความนั้นหลายชุด

โดยวิธีการที่ถ้าคุณต้องการที่จะฆ่าข้อความจากเคอร์เซอร์ไปยังจุดสิ้นสุดของบรรทัดที่คุณสามารถกด-Ctrl kดังนั้นแทนที่จะทำผูกพันอธิบายไว้ข้างต้นคุณสามารถฆ่าสายทั้งโดยการกดCtrl- -u Ctrl kเฉพาะส่วนที่ถูกฆ่าโดยการกดแป้นครั้งที่สองเท่านั้นที่จะถูกบันทึกในบัฟเฟอร์การฆ่า แต่คุณยังสามารถเลิกทำสองครั้งเพื่อกู้คืนทั้งสอง

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