จะกลับไปยังบรรทัดก่อนหน้าของสคริปต์ในเทอร์มินัลได้อย่างไร


8

ฉันพยายามเขียนสคริปต์ แต่ฉันติดอยู่ที่นี่ ดูรหัสโปรด!

aug@august:~/play$ for i in {1..100..4}
> do
> echo "august"
> touch august $i+$2
> mkdir dir

มีวิธีใดที่จะไปบรรทัดก่อนหน้า? touch august $i+$2ผมหมายถึงมีการพิมพ์ผิดที่ฉันได้ใน Ipressed ENTERสำคัญดังนั้นฉันไปสำหรับสายใหม่ ฉันจะกลับไปยังบรรทัดก่อนหน้าได้อย่างไร


คุณควรเขียนสคริปต์ในไฟล์จากนั้นรันจากเทอร์มินัล คุณยังสามารถใช้คีย์ UP สำหรับคำสั่งก่อนหน้า แต่ไม่มีวิธีในการย้อนกลับคำสั่ง
shantanu

คำตอบ:


1

bashเครื่องมือแก้ไขบรรทัดคำสั่งของไม่รองรับสิ่งนี้ไม่ว่าจะเป็นอันวาร์แนะนำหรือเก็บทุกอย่างไว้ในบรรทัดเดียวคั่นด้วยเครื่องหมายอัฒภาคหรือวางไว้ในไฟล์สคริปต์

ในบันทึกด้านข้างzshมีคุณสมบัติที่ช่วยในเรื่องนี้ ตัวzshแก้ไขบรรทัด ( zle) เป็นตัวแก้ไขที่โดดเด่นมากขึ้นและรองรับการย้ายภายในคำสั่งหลายบรรทัด เมื่อคำสั่งยาวเกินไปที่จะจัดการzleมันก็มีคุณสมบัติในตัวedit-command-lineซึ่งจะเปิดบรรทัดคำสั่งในโปรแกรมแก้ไขรายการโปรดของคุณ มันมักจะไม่ถูกผูกมัดลองด้วย:

bindkey "^[e" edit-command-line

Alt-e ตอนนี้ควรเปิดใช้งานบันทึกและออกเพื่อกลับไปที่บรรทัดคำสั่ง


1

หลังจากที่คุณกดEnterและได้รับข้อความแสดงข้อผิดพลาดคุณสามารถย้อนกลับไปในประวัติศาสตร์:

เพียงกดปุ่มในแป้นพิมพ์ของคุณเพื่อแก้ไขการพิมพ์ผิด หากคุณกดปุ่มเครื่องจะแสดงบรรทัดนี้ให้คุณ:

for i in {1..100..4}; do echo "august"; touch august $i+$2; mkdir;

แก้ไขสิ่งที่พิมพ์ผิดรอบ ๆtouch august $i+$2และเพิ่ม a doneท้ายคำสั่ง

จากนั้นกดEnterปุ่ม วิธีนี้จะช่วยแก้ปัญหาของคุณได้


1

ตามที่อธิบายไว้ที่นี่ใน bash คุณมีคำสั่งสำหรับการจัดการประวัติตามที่ระบุไว้ในคู่มือ edit-and-execute-commandหนึ่งในนั้นคือ

นี่จะเป็นการเปิดตัวแก้ไขพร้อมกับคำสั่งของคุณที่พิมพ์ไว้ในไฟล์ชั่วคราวและคุณสามารถแก้ไขบรรทัดก่อนหน้าได้อย่างง่ายดาย คุณสามารถทำได้ในโหมด emacs โดยC-xC-eและโหมด vi โดยการกดvในโหมดปกติ

edit-and-execute-command (C-xC-e)

เรียกใช้เอดิเตอร์บนบรรทัดรับคำสั่งปัจจุบันและเรียกใช้ผลลัพธ์เป็นคำสั่งเชลล์ Bash พยายามเรียกใช้ $ VISUAL, $ EDITOR และ emacs เป็นตัวแก้ไขตามลำดับ


ว้าว. หลายปีที่ลินุกซ์และฉันเพิ่งรู้สิ่งนี้
azzamsa

0

นี่คือสิ่งที่ได้ผลสำหรับฉัน

CTRL+ จากปัจจุบันC จากนั้นกดปุ่มcommand ตอนนี้คุณสามารถแก้ไขแล้วแต่จำนวนใดสายที่คุณต้องการโดยย้ายไปรอบ ๆ ด้วยarrow buttons- หรือ

โชคดี...

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