echo tekstu z nową linią w bash

35

Chciałbym dołączyć tekst do pliku. Więc napisałem bash

echo text >> file.conf

Jednak nie pozostawia nowej linii. Więc mogę to zrobić tylko raz. Jak dodać nową linię?

John Albietz
źródło
5
Co masz na myśli? Extra nowej linii? echodomyślnie dodaje nową linię.
Wstrzymano do odwołania.
4
echodomyślnie pozostawia nowy wiersz - czy potrzebujesz go, aby zostawić dwa? Ponadto, jeśli uruchamiasz to w systemie Linux i otwierasz plik w systemie Windows lub Mac, upewnij się, że twój edytor obsługuje * nix newlines, lub pojawi się wszystko w jednym wierszu, nawet jeśli jest w wielu wierszach.
Darth Android

Odpowiedzi:

79

opcja 1:

% echo -e "text\n" >> file.conf

Opcja 2:

% ( echo text ; echo "" ) >> file.conf

opcja 3:

% echo text >> file.conf
% echo ""  >> file.conf
akira
źródło
7
Możesz usunąć pusty argument ( echo ""=> echo). Ponadto opcja 4:, echo $'text\n'która jest użyteczna dla każdego polecenia, ponieważ $''jest interpretowane przez bash.
7

Myślę, że właściwą odpowiedzią powinno być, że twoje polecenie

echo text >> plik.conf

dodaje dodatkową linię, ale po nowym tekście, nie wcześniej.

Myślę, że chcesz dodać dodatkową linię przed tym tekstem, prawdopodobnie dlatego, że początkowy plik nie kończy się na nowej linii. W takim przypadku możesz użyć

echo -e "\ ntext" >> plik.conf

zamiast tego, ponieważ -eopcja umożliwia użycie nowego \nznaku linii .

N.Gutierrez
źródło
3

Żeby dodać do odpowiedzi Akiry

Opcja 4:

użyj ctrl-v ctrl-mkombinacji klawiszy dwa razy, aby wstawić dwa znaki sterujące nowego wiersza w terminalu. Ctrl-v pozwala wstawiać znaki kontrolne do terminala. Jeśli chcesz, możesz użyć klawisza Enter lub Return zamiast ctrol-m. Wstawia to samo.

To wygląda jak echo text^M^M >> file.conf

James T.
źródło
2
Jeśli potrzebujesz linii zamiast zwrotów karetki (linux / unix), spróbuj echo "text^J^J" >> file.confwpisać ^ J może faktycznie wstawić dosłowną nową linię, po prostu upewnij się, że wstawiłeś cudzysłowy i będzie dobrze.
Darth Android