วิธีการอินพุต / เริ่มบรรทัดใหม่ในเทอร์มินัล bash


11

ฉันสังเกตเห็นตัวอย่าง bash สำหรับลูปถูกกระจายไปในหลายบรรทัดในตัวอย่าง

for VARIABLE in file1 file2 file3
do
    command1 on $VARIABLE
    command2
    commandN
done

(เช่นที่นี่ http://www.cyberciti.biz/faq/bash-for-loop/ ) ฉันจะป้อนบรรทัดใหม่ใน bash terminal ได้อย่างไร (ฉันใช้ putty) เมื่อฉันกด Enter ที่ส่วนท้ายของบรรทัดระบบจะเรียกใช้งานมัน


1
นอกจากนี้bashคุณยังสามารถใช้ชุดแป้นพิมพ์Ctrl + x + eเพื่อเปิดเนื้อหาของพรอมต์คำสั่งในโปรแกรมแก้ไขเช่นเสียงเรียกเข้าที่คุณสามารถทำงานได้ง่ายขึ้นเมื่อคุณทำเสร็จแล้วคุณสามารถออกจากตัวแก้ไขและคำสั่งจะทำงาน
slm

คำตอบที่เกี่ยวข้อง: unix.stackexchange.com/questions/232912/…
Kusalananda

คำตอบ:


28

เมื่อคุณกดEnterที่ส่วนท้ายของ:

for VARIABLE in file1 file2 file3

เชลล์ไม่สามารถดำเนินการใด ๆ ได้เนื่องจากการforวนซ้ำนั้นยังไม่เสร็จสิ้น ดังนั้นแทนที่จะมันจะพิมพ์พรอมต์ที่แตกต่างกัน$PS2พรอมต์ (โดยทั่วไป>) doneจนกว่าคุณจะป้อนปิด

อย่างไรก็ตามหลังจาก>แสดงขึ้นคุณจะไม่สามารถย้อนกลับไปแก้ไขบรรทัดแรกได้

อีกทางเลือกหนึ่งแทนการพิมพ์คุณสามารถพิมพ์Enter Ctrl-VCtrl-Jด้วยวิธีนี้อักขระขึ้นบรรทัดใหม่ (aka ^J) ถูกป้อนโดยไม่มีบัฟเฟอร์ปัจจุบันได้รับการยอมรับและจากนั้นคุณสามารถกลับไปแก้ไขบรรทัดแรกได้ในภายหลัง

ในzshคุณสามารถกดAlt-EnterหรือEscEnterเพื่อแทรกอักขระบรรทัดใหม่โดยไม่ยอมรับบัฟเฟอร์ปัจจุบัน ในการรับพฤติกรรมเดียวกันbashคุณสามารถเพิ่มสิ่งต่อไปนี้ใน~/.inputrc:

"\e\C-m": "\026\n"

( \026เป็น^Vตัวละคร)


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