Nouvelle ligne lors de l'édition de fichiers texte dans le terminal ubuntu?

0

Je sais que pour symboliser une nouvelle ligne, je ferais écho -e "ligne 1 \ nline 2"> text.txt. Je trouve que l’utilisation répétée de \ n peut être ennuyante, et je voudrais savoir s’il est possible de descendre une ligne du terminal sans exécuter de commandes. Comme si je devais éditer le python dans le terminal, je pourrais écrire

def main():
    print "hello world"

Et appuyer sur "enter" pour passer à une nouvelle ligne n'aurait pas exécuté def main ():, il est simplement passé à une nouvelle ligne. Y at-il quelque chose de semblable à cela dans le terminal normal?

WillumMaguire
la source

Réponses:

0

Si vous voulez juste faire écho au texte comme dans votre exemple, vous pouvez simplement utiliser la touche Entrée à la place de \nceci:

echo "line 1
line 2" > text.txt

Pour que cela fonctionne, vous devez entourer votre texte avec ""comme indiqué ou avec ''.

Si vous souhaitez entrer une séquence de commandes sans les exécuter jusqu'à ce que vous ayez terminé, vous pouvez commencer la séquence par un {et terminer par un }, comme ceci:

{
echo line 1
echo line 2
date
}

Vous pouvez également rediriger la sortie de toute la séquence en suivant la fermeture }avec votre redirection, comme

{
echo line 1
echo line 2
date
} > text.txt
Garyjohn
la source
Je veux être capable de faire ce que vous avez fait dans le premier exemple, mais chaque fois que je tape sur enter, il exécute la commande
WillumMaguire
1
@WillumMaguire: Si vous avez tapé echo "line 1avec un seul "et appuyez sur Entrée, j'attendrais que vous voyiez l'invite secondaire > . Sinon, un message d'erreur concernant une chaîne non terminée. Qu'est-ce que vous tapez exactement est exécuté lorsque vous appuyez sur Entrée?
garyjohn
J'ai juste essayé ceci: echo "line 1 J'ai aussi essayé d'utiliser E0F, mais je n'arrive pas à le faire fonctionner correctement
WillumMaguire
@ WilliamMaguire: Je suis désolé, mais je suis incapable d'expliquer le comportement que vous observez. J'ai essayé quelques coquilles différentes, mais j'ai toujours vu l'un des deux résultats mentionnés ci-dessus. J'ai également parcouru la page de manuel bash (1) mais je n'ai pas vu d'options qui pourraient causer ce problème.
garyjohn
0

En plus du guillemet inégalé, vous pouvez utiliser heredocs :

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

Notez que EOFc'est simplement un délinéateur commun et pratique, n'importe quel jeton fera l'affaire.

Kevin
la source