J'ai besoin de coller un code bash multi-lignes dans le terminal, mais chaque fois que je le fais, chaque ligne est exécutée en tant que commande séparée dès qu'elle est collée.
104
Essayez de mettre \
à la fin de chaque ligne avant de la copier.
Je suis vraiment surpris que cette réponse ne soit pas proposée ici, j'étais à la recherche d'une solution à cette question et je pense que c'est l'approche la plus simple, et la plus flexible / indulgente ...
Si vous souhaitez coller plusieurs lignes d'un site Web / éditeur de texte / etc., dans bash, qu'il s'agisse de commandes par ligne ou d'une fonction ou d'un script entier ... commencez simplement par un
(
et terminez par un)
et Entrée, comme dans l'exemple suivant:Si j'avais le blob suivant
Vous pouvez coller et vérifier dans un terminal à l'aide de bash en:
Commençant par
(
Coller votre texte et appuyer sur Entrée (pour le rendre joli) ... ou pas
Terminer par un
)
et appuyer sur EntréeExemple:
Le texte collé se poursuit automatiquement avec un préfixe
>
pour chaque ligne. J'ai testé avec plusieurs lignes avec des commandes par ligne, des fonctions et des scripts entiers. J'espère que cela aidera les autres à gagner du temps!la source
Si vous appuyez sur la
C-x C-e
commande qui ouvrira votre éditeur par défaut qui a défini.bashrc
, vous pourrez ensuite utiliser toutes les fonctionnalités puissantes de votre éditeur. Lorsque vous enregistrez et quittez, les lignes attendront votre entrée.Si vous souhaitez définir votre éditeur, écrivez simplement pour Ex.
EDITOR=emacs -nw
ou à l'EDITOR=vi
intérieur de~/.bashrc
la source
emacs
etvi
faire), et lors de l'enregistrement et de la sortie, les commandes sont exécutées instantanément .En plus de la barre oblique inverse, si une ligne se termine par
|
ou&&
ou||
, elle se poursuivra sur la ligne suivante.la source
Ajoutez des parenthèses autour des lignes. Exemple:
la source
(
, les accolades{
fonctionneraient également de la même manière dans l'exemple ci-dessusUne autre possibilité:
la source
Pour éviter une longue ligne de commandes dans un fichier texte, je garde mes extraits de code de copie comme ceci:
la source
Essayez de cette façon:
la source
iTerm gère parfaitement les commandes sur plusieurs lignes, il enregistre les commandes sur plusieurs lignes en une seule commande, puis nous pouvons utiliser
Cmd
+Shift
+;
pour naviguer dans l'historique.Consultez plus de conseils iTerm sur Travailler efficacement avec iTerm
la source
Essayer
Collez ensuite vos lignes et appuyez sur Ctrl-D (insérer le caractère EOF). Toutes les entrées jusqu'à Ctrl-D seront redirigées vers la sortie standard de cat.
la source
$ out=$(cat) && eval "$out"
. appuyez sur Entrée après la dernière ligne, puis CTRL + D comme suggéré ci-dessus.