Nowa linia podczas edycji plików tekstowych w terminalu Ubuntu?

0

Wiem, że aby symbolizować nową linię, zrobiłbym echo -e "linia 1 \ nline 2"> text.txt. Uważam, że wielokrotne używanie \ n może być denerwujące i chciałbym wiedzieć, czy istnieje sposób, aby faktycznie przejść w dół linii w terminalu bez wykonywania poleceń. Na przykład gdybym edytował pytona w terminalu, który mógłbym napisać

def main():
    print "hello world"

I naciśnięcie klawisza „enter”, aby przejść do nowej linii, nie wykonałoby def main (): po prostu poszło do nowej linii. Czy jest coś podobnego do tego w normalnym terminalu?

WillumMaguire
źródło

Odpowiedzi:

0

Jeśli chcesz tylko powtórzyć tekst jak w przykładzie, możesz po prostu użyć klawisza Enter zamiast \ntego:

echo "line 1
line 2" > text.txt

Aby to zadziałało, musisz otoczyć tekst ""tak, jak pokazano lub ''.

Jeśli chcesz wprowadzić sekwencję poleceń bez ich wykonywania, dopóki nie skończysz, możesz rozpocząć sekwencję od a, {a zakończyć ją }, w następujący sposób:

{
echo line 1
echo line 2
date
}

Możesz także przekierować wyjście całej sekwencji, wykonując zamknięcie }przekierowaniem, as

{
echo line 1
echo line 2
date
} > text.txt
garyjohn
źródło
Chcę być w stanie zrobić to, co zrobiłeś w pierwszym przykładzie, ale za każdym razem, gdy
klikam
1
@WillumMaguire: Jeśli wpiszesz echo "line 1tylko jedno „i naciśniesz Enter, spodziewam się, że zobaczysz dodatkowy monit > . Jeśli nie, to pojawi się komunikat o błędzie o nieokreślonym ciągu. Co dokładnie wpisujesz, które jest wykonywane po naciśnięciu Enter?
garyjohn
Właśnie próbowałem tego: echo "linia 1 Próbowałem także przy użyciu E0F, ale nie wydaje mi się, aby działał poprawnie
WillumMaguire
@WillumMaguire: Przykro mi, ale nie jestem w stanie wyjaśnić zachowań, które widzisz. Próbowałem kilku różnych powłok, ale zawsze widziałem jeden z dwóch wyników, o których wspomniałem powyżej. Przejrzałem także stronę podręcznika bash (1), ale nie widziałem żadnych opcji, które spowodowałyby takie zachowanie.
garyjohn
0

Oprócz niedopasowanego cudzysłowu możesz użyć heredocs :

$ python <<EOF
> def main():
>       print "Hello"
> 
> main()
> EOF
Hello
$

Zauważ, że EOFjest to po prostu powszechny i ​​wygodny wyznacznik, wystarczy dowolny token.

Kevin
źródło