¿Cómo escapar correctamente comando bash a través de ssh?

publicado por: Anonymous

Para ejecutar un comando en una máquina remota a través de ssh utilizo:

ssh [email protected]rvidor "/home/ubuntu/bin/ejecutarComando.sh"

o

ssh [email protected] '/home/ubuntu/bin/ejecutarComando.sh'

Véase la diferencia entre comillas simples y comillas dobles. Si el comando a a ejecutar remotamente precisa de comillas simples utilizo las dobles y viceversa.

¿Cómo hago para escapar correctamente las comillas en caso de que el comando a ejecutar remotamente tenga ambos tipos de comillas como el siguiente ejemplo?

awk '/a/ {print $4 "t" $3}' /home/ubuntu/listado.txt

solución

Para proveer la respuesta en español:

“Si de verdad quieres usar comillas simples en la capa mas externa, recuerda que puedes pegar las dos tipos de comillas. Por ejemplo:

 alias rxvt='urxvt -fg '"'"'#111111'"'"' -bg '"'"'#111111'"'"
 #                     ^^^^^       ^^^^^     ^^^^^       ^^^^
 #                     12345       12345     12345       1234

“Explanación de como '"'"' es interpretado simplemente como ':

  1. ' Termina la primera cita que usa comillas simples.
  2. " Empieza la segunda cita que usa comillas dobles.
  3. ' carácter citado.
  4. " Termina la segunda cita, usando comillas dobles.
  5. ' Empieza la tercera cita, usando comillas simples.

Si no dejas espacio blanco entre (1) y (2), o entre (4) y (5), el shell va a interpretar ese string como una palabra larga.”

El crédito se debe a esta respuesta de StackOverflow en inglés: https://stackoverflow.com/a/1250279/6252597 y @lois6b por compartirla.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *