¿Por qué a veces cuando me pega un comando en mi Bash fichero es ejecutado incluso si no lo presione ENTRAR?
-
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?
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 utilizaESC 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 variablesFCEDIT
oEDITOR
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;>