Jak wprowadzić / uruchomić nową linię w terminalu bash?


11

Zauważam, że niektóre przykładowe bash dla pętli są rozłożone w wielu liniach w przykładach

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

(np. tutaj http://www.cyberciti.biz/faq/bash-for-loop/ ) Jak wprowadzić nowy wiersz w terminalu bash (używam szpachli)? Kiedy naciskam Enter na końcu linii, system wykonuje to.


1
Również bashmożna użyć kombinację klawiszy Ctrl + x + e, aby otworzyć zawartość wiersza polecenia w edytorze takich jak vim, gdzie można pracować na nim łatwiej, kiedy skończysz można wyjść z edytora, a komenda będzie uruchamiane.
slm

Odpowiedzi:


28

Po naciśnięciu Enterna końcu:

for VARIABLE in file1 file2 file3

Powłoka nie może nic wykonać, ponieważ ta forpętla nie jest zakończona. Zamiast tego wypisze inny monit, $PS2monit (ogólnie >), aż do momentu zamknięcia done.

Jednak po >wyświetleniu komunikatu nie można wrócić do edycji pierwszego wiersza.

Alternatywnie, zamiast pisać Enter, możesz pisać Ctrl-VCtrl-J. W ten sposób znak nowej linii (aka ^J) jest wprowadzany bez akceptacji bieżącego bufora , a następnie możesz wrócić do edycji pierwszego wiersza później.

W zsh, można nacisnąć przycisk Alt-Enterlub EscEnter, aby wstawić znak nowej linii bez zapisywania bieżącego bufora. Aby uzyskać takie samo zachowanie bash, możesz dodać do ~/.inputrc:

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

( \026będąc ^Vpostacią).


Ctrl-Jzacząć i Ctrl-Dskończyć, skończyło się dla mnie dobrze.
DuckMaestro
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.