¿Por qué mi sustitución sed con & no se puede ejecutar?

Estoy tratando de ejecutar el siguiente command en el contenedor Docker de Linux, pero recibo el siguiente error:

root@instance-0024c639:/etc/java-8-openjdk# sed -is/^assistive_technologies=/#&/ accessibility.properties [1] 1095 sed: -e expression #1, char 28: unterminated `s' command bash: /: Is a directory [1]+ Exit 1 sed -is/^assistive_technologies=/# 

El contenido del file para el que lo estoy ejecutando:

 root@instance-0024c639:/etc/java-8-openjdk# cat accessibility.properties # # The following line specifies the assistive technology classes # that should be loaded into the Java VM when the AWT is initailized. # Specify multiple classes by separating them with commas. # Note: the line below cannot end the file (there must be at # a minimum a blank line following it). # assistive_technologies=org.GNOME.Accessibility.AtkWrapper 

Lo estoy haciendo como se sugiere en: https://solveme.wordpress.com/2017/07/24/java-awt-awterror-assistive-technive-not-found-org-gnome-accessibility-atkwrapper-when-running- jasper-reports /

¿Alguien puede ayudarme con eso?

¡Simplemente cite el command & no tiene un significado especial para Bash!

 sed -i 's/^assistive_technologies=/#&/' accessibility.properties # ^ ^ 

¿Qué está pasando exactamente aquí?

Como se lee en el man bash :

Si el operador de control finaliza un command, el shell ejecuta el command en segundo plano en una subcadena.

Por lo tanto, cuando dices:

 sed -is/^assistive_technologies=/#&/ accessibility.properties 

Bash realmente está viendo dos commands:

 sed -is/^assistive_technologies=/# / accessibility.properties 

El primero se envía al background por & , de modo que aparece el post:

 [1] 1095 

Luego lo evalúa y determina que está incompleto, por lo que desencadena el error:

 sed: -e expression #1, char 28: unterminated `s' command 

Finalmente muestra cómo ha finalizado el trabajo en segundo plano:

 [1]+ Exit 1 sed -is/^assistive_technologies=/# 

Mientras tanto, intenta ejecutar el command:

 / accessibility.properties 

Pero falla miserablemente y por lo tanto devuelve el error:

 bash: /: Is a directory 

Tienes que usar comillas:

 sed -i 's/^assistive_technologies=/#&/' accessibility.properties