Necesito para pegar un multi-línea de código bash en la terminal, pero siempre que hago, cada línea se ejecuta como un comando independiente tan pronto como se pone pegado.

InformationsquelleAutor Nathan | 2011-07-15

10 Comentarios

  1. 77

    Tratar de poner \ al final de cada línea antes de copiar.

    • Nota: los espacios en blanco va a romper!
  2. 32

    Estoy realmente sorprendido esta respuesta no se ofrece aquí, yo estaba en la búsqueda de una solución a esta pregunta y creo que este es el método más fácil y más flexible/perdona…

    Si quieres pegar varias líneas de un sitio web de prueba/editor/etc, en bash, independientemente de si es por línea de comandos o una función o script entero…simplemente empezar con un ( y terminar con un ) y Entrar, como en el siguiente ejemplo:

    Si yo tuviera la siguiente blob

    function hello {
        echo Hello!
    }
    hello

    Puede pegar y comprobar en un terminal usando bash por:

    1) a Partir de (

    2) Pegar el texto, y presionando la tecla Enter (para hacer bonito)…o no

    3) Terminando con un ) y presionando la tecla Enter

    Ejemplo:

    imac:~ home$ ( function hello {
    >     echo Hello!
    > }
    > hello
    > )
    Hello!
    imac:~ home$ 

    El texto pegado automáticamente se continuó con un anteponiendo > para cada línea. He probado con varias líneas con comandos por línea, funciones y scripts enteros. Espero que esto ayude a otros usuarios a ahorrar un poco de tiempo!

    • método más fácil de la OMI
    • me adentra pegado sin ( ) y también trabajó
    • para las cosas simples que funcionará como usted la describe, pero la solución que me han ofrecido trabajo para situaciones más complejas (saltos de línea, múltiples funciones, toda scripts, etc.)
    • Esto ejecuta el pegado de comandos en un subshell, de modo que a menudo no hace lo que quiere. Usted puede utilizar llaves en lugar de paréntesis para forzar a ejecutar en el shell actual; pero, en realidad, simplemente no lo hacen bien. El shell puede hacer frente.
  3. 26

    Si pulsa C-x C-e comando que le abra su editor por defecto que se define .bashrc, después de que usted puede utilizar todas las características de gran alcance de su editor. Al guardar y salir, las líneas de esperar tu entrar.

    Si quieres definir su editor, sólo tiene que escribir para Ex. EDITOR=emacs -nw o EDITOR=vi dentro de ~/.bashrc

    • La técnica es útil, pero se nota que el editor debe ejecutar de forma sincrónica (como emacs y vi hacer), y en el ahorro y la salida de los comandos se ejecutan al instante.
    • Este es un buen técnico, que hace el trabajo muy bien
  4. 14

    Además de la barra diagonal inversa, si la línea termina con | o && o ||, se continuará en la línea siguiente.

    • sí tienes razón.
  5. 7

    Agregar paréntesis alrededor de las líneas. Ejemplo:

    $ (
    sudo apt-get update
    dokku apps
    dokku ps:stop APP # repeat to shut down each running app
    sudo apt-get install -qq -y dokku herokuish sshcommand plugn
    dokku ps:rebuildall # rebuilds all applications
    )
  6. 2

    Para evitar una larga línea de comandos en un archivo de texto, puedo mantener mi copia-pase fragmentos como este:

    echo a;\
    echo b;\
    echo c
  7. -1

    Intentar

    out=$(cat)

    A continuación, pegue las líneas y pulse Ctrl-D (insertar carácter EOF). Todas las entradas hasta Ctrl-D será redirigido a gato stdout.

    • Parece que no funciona?
    • intente esto: $ out=$(cat) && eval "$out". presione enter después de la última línea, a continuación, CTRL+D como se sugirió anteriormente.

Dejar respuesta

Please enter your comment!
Please enter your name here