¿Por qué a veces cuando me pega un comando en mi Bash fichero es ejecutado incluso si no lo presione ENTRAR?

StackOverflow https://stackoverflow.com/questions/857029

  •  21-08-2019
  •  | 
  •  

Pregunta

El comando Get ejecutado sin la necesidad de presionar Enter. Esto puede ser peligroso a veces ...

¿Por qué es esto y cómo puedo evitarlo?

¿Fue útil?

Solución

Debido a pegar carácter de nueva línea con él. Es a veces puede ser útil, por ejemplo, puede copiar / pegar muchos comandos (scripts largo de varias líneas) a la vez.

Bueno, nunca me ha ocurrido a mí para evitar este comportamiento en particular. Es normal y esperado. WYPIWYG -. Lo que pegue es lo que se obtiene

Otros consejos

Usted está pegando uno o más caracteres de nueva línea. Aparte de simplemente no copiar y pegar los caracteres de nueva línea, hay algunas cosas que puede hacer para evitar este:

  • Para una sola línea de comandos, escriba "#" en primer lugar, por lo que el comando será comentada. A continuación, puede volver a subir y editarlo.

  • Utilice editar y ejecutar-mando función de (aparentemente poco conocido) bash. Para invocar que usted puede golpear CTRL-x CTRL-e si utiliza emacs combinaciones de teclas (por defecto) o si utiliza ESC v vi combinaciones de teclas. Esto invocará un editor de texto que contiene la línea de comandos actual. A continuación, puede pegar en el editor, y editar el comando. Una vez que haya guardado y se ejecutará el comando (s) guardada por el editor (si desea cancelar o bien comentar todas las líneas o borrar completamente la memoria intermedia). Puede configurar qué editor se utiliza con cualquiera de las variables FCEDIT o EDITOR medio ambiente.

Una forma rápida para evitar la ejecución consiste en escribir el carácter de comentario #, a continuación, pegar el comando.

A menudo hago eso porque la grasa dedos al copiar y agarrar caracteres extraños.

Al pegar después de que el carácter de comentario, a continuación, el comando está en la memoria intermedia de historia y se puede editar, descomentarla, y ejecutarlo.

--- Responder al comentario

Tienes razón, esto sólo funciona para una sola línea de comandos. Si usted tiene una multilínea uno en el portapapeles, se puede canalizar los datos del portapapeles a través de sed.

fiesta estúpido truco # 4 millones y uno:

prompt:$ xclip -o -selection clipboard | sed --regexp-extended 's/^(.*)$/# \1;/'

a su vez, lo siguiente:

for i in *.JPG;

do echo mv $i ${i/.JPG/.jpg};

done;

en esto:

# for i in *.JPG;

# do echo mv $i ${i/.JPG/.jpg};

# done;

Lo que realmente no vale la pena el esfuerzo, pero un poco divertido;>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top