Làm thế nào để nhập / bắt đầu một dòng mới trong thiết bị đầu cuối bash?


11

Tôi nhận thấy một số bash mẫu cho các vòng lặp được trải ra trên nhiều dòng trong các ví dụ

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

(ví dụ ở đây http://www.cyberciti.biz/faq/bash-for-loop/ ) Làm cách nào để nhập một dòng mới trong thiết bị đầu cuối bash (tôi sử dụng putty)? Khi tôi nhấn enter ở cuối dòng, hệ thống sẽ thực thi nó.


1
Ngoài ra, bashbạn có thể sử dụng tổ hợp bàn phím Ctrl + x + eđể mở nội dung của dấu nhắc lệnh trong trình chỉnh sửa, chẳng hạn như vim nơi bạn có thể làm việc với nó dễ dàng hơn, khi bạn hoàn tất, bạn có thể thoát trình chỉnh sửa và lệnh sẽ chạy.
slm

Câu trả lời:


27

Khi bạn nhấn Entervào cuối:

for VARIABLE in file1 file2 file3

Shell không thể thực thi bất cứ điều gì vì forvòng lặp đó chưa kết thúc. Vì vậy, thay vào đó, nó sẽ in một dấu nhắc khác, $PS2dấu nhắc (nói chung >), cho đến khi bạn nhập đóng done.

Tuy nhiên, sau khi >được hiển thị, bạn không thể quay lại để chỉnh sửa dòng đầu tiên.

Ngoài ra, thay vì gõ Enter, bạn có thể gõ Ctrl-VCtrl-J. Bằng cách đó, ký tự dòng mới (aka ^J) được nhập mà không có bộ đệm hiện tại được chấp nhận và sau đó bạn có thể quay lại chỉnh sửa dòng đầu tiên sau này.

Trong zsh, bạn có thể nhấn Alt-Enterhoặc EscEnterđể chèn một ký tự dòng mới mà không chấp nhận bộ đệm hiện tại. Để có hành vi tương tự bash, bạn có thể thêm vào ~/.inputrc:

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

( \026^Vnhân vật).


Ctrl-Jđể bắt đầu, và Ctrl-Dđể kết thúc, kết thúc làm việc tốt cho tôi.
DuckMaestro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.