tiene que escapar del acento grave, sino también escapar de la barra invertida:
$ touch 1\`
$ /bin/sh -c "ls 1\\\`"
1`
La razón tienes que escapar "dos veces" porque estás ingresando este comando en un entorno (como un script de shell) tha t interpreta la secuencia de comillas dobles una vez. Luego es interpretado nuevamente por la subshell.
También podría evitar las comillas dobles, y evitar así la primera interpretación:
$ /bin/sh -c 'ls 1\`'
1`
Otra forma es la de almacenar el nombre del archivo en una variable, y utilizar este valor:
$ export F='1`'
$ printenv F
1`
$ /bin/sh -c 'ls $F' # note that /bin/sh interprets $F, not my current shell
1`
Y, por último, lo que ha intentado funcionará en algunos proyectiles (estoy usando bash, como en los ejemplos anteriores), aparentemente no con su shell:
$ /bin/sh -c "ls 1'\`'"
1`
$ csh # enter csh, the next line is executed in that environment
% /bin/sh -c "ls 1'\`'"
Unmatched `.
Le sugiero que evite dichos nombres de archivos en el first place.
¿Tiene un solo retroceso? Es '1 \' 'un nombre de archivo? –
Sí, en realidad puedo crear un archivo llamado "1'" emitiendo el comando "touch 1'", pero el shell simplemente no puede analizarlo dentro de comillas dobles –