Necesito pegar un código bash de varias líneas en la terminal, pero siempre que lo hago, cada línea se ejecuta como un comando separado tan pronto como se pega.
104
Intente poner \
al final de cada línea antes de copiarlo.
Estoy realmente sorprendido de que esta respuesta no se ofrezca aquí, estaba buscando una solución a esta pregunta y creo que este es el enfoque más fácil y más flexible / indulgente ...
Si desea pegar varias líneas de un sitio web / editor de texto / etc., en bash, independientemente de si se trata de comandos por línea o una función o un script completo ... simplemente comience con ay
(
termine con)
ay Enter, como en el siguiente ejemplo:Si tuviera la siguiente mancha
Puede pegar y verificar en una terminal usando bash de la siguiente manera:
Empezando con
(
Pegar su texto y presionar Enter (para hacerlo bonito) ... o no
Terminando con a
)
y presionando EnterEjemplo:
El texto pegado continúa automáticamente con un prefijo
>
para cada línea. He probado con múltiples líneas con comandos por línea, funciones y scripts completos. ¡Espero que esto ayude a otros a ahorrar tiempo!fuente
Si presiona el
C-x C-e
comando que abrirá su editor predeterminado que definió.bashrc
, después de eso, puede usar todas las funciones poderosas de su editor. Cuando guarde y salga, las líneas esperarán su entrada.Si desea definir su editor, simplemente escriba para Ex.
EDITOR=emacs -nw
oEDITOR=vi
dentro de~/.bashrc
fuente
emacs
yvi
hacer), y al guardar y salir los comandos se ejecutan instantáneamente .Además de barra inversa, si una línea termina con
|
o&&
o||
, se continuará en la línea siguiente.fuente
Agrega paréntesis alrededor de las líneas. Ejemplo:
fuente
(
, los frenos{
también funcionarían igual en el ejemplo anteriorOtra posibilidad:
fuente
Para evitar una larga línea de comandos en un archivo de texto, mantengo mis fragmentos de copia-pase como este:
fuente
Prueba de esta manera:
fuente
iTerm maneja el comando de múltiples líneas perfectamente, guarda el comando de múltiples líneas como un solo comando, luego podemos usar
Cmd
+Shift
+;
para navegar por el historial.Consulte más consejos sobre iTerm en Trabajar eficazmente con iTerm
fuente
Tratar
Luego pegue sus líneas y presione Ctrl-D (inserte el carácter EOF). Toda la entrada hasta Ctrl-D será redirigida a la salida estándar del gato.
fuente
$ out=$(cat) && eval "$out"
. presione enter después de la última línea y luego CTRL + D como se sugirió anteriormente.