TL; DR
En defaults write <domain> <key> <value>
, ¿cómo proporciono un <value>
que contiene parens; es decir, "corchetes" redondos, "(" y ")"?
Bhoona completa
Estoy usando defaults
para redirigir las capturas de pantalla a un directorio específico. Puedo hacerlo bien y muchas veces en el pasado, pero tengo un problema cuando el directorio de destino tiene paréntesis en su ruta de acceso. Así que estoy haciendo algo como:
$ defaults write com.apple.screencapture location <dirname-with-parens-in-it>
y recibo un error del formulario:
<ba bla bla> Could not parse: <dirname-with-parens-in-it>. Try single-quoting it.
Pero entiendo eso a pesar de intentar todo lo siguiente (y un montón más, además). En esto, asuma que el nombre del directorio (preexistente) en cuestión es, literalmente, dirname (con) parens. Mis intentos y respuestas:
$ defaults write com.apple.screencapture location dirname\(with\)parens
<bla bla bla> Could not parse: dirname(with)parens. Try single-quoting it.
$ defaults write com.apple.screencapture location 'dirname\(with\)parens'
<bla bla bla> Could not parse: dirname(with)parens. Try single-quoting it.
Y repetí ambas, tres veces cada una, reemplazando el single \ con \\, \\\ y \\\\. Mismo error.
Sin embargo, tenga en cuenta que el error parece sugerir que el globo de shell en sí está funcionando bien, porque los 'valores predeterminados' están viendo el "(y") "sin escape correctamente. Y si el nombre del directorio / ruta no contiene parens, sino espacios en blanco, entonces un simple \ -escape funciona bien (como lo hace la cita). Finalmente, observo que para los comandos de shell, como "mkdir", cualquiera de \ -escaping parens, o citarlos, también funciona:
$ mkdir dirname\(with\)parens
$ ls -ld dirname*
drwxr-xr-x 2 jonyive demigods 68 Oct 3 10:56 dirname(with)parens
Por lo tanto, un sospechoso probable es defaults
. man defaults
no ofrece mucho, solo dice que dice que, "el valor debe ser una lista de propiedades y debe estar entre comillas simples" . E incluso eso es una mentira. En la práctica, solo debe estar entre comillas simples si contiene algo funky, e incluso allí, si el funkiness es un espacio en blanco, \ -escaping servirá. Y, por supuesto, si la curiosidad es paréntesis, entonces ni siquiera la comilla parece funcionar.
Entonces, ¿alguna idea? Gracias!
P.S. Soy consciente de y he utilizado soluciones provisionales. Por ejemplo, puedo crear un enlace simbólico no problemático al directorio real infestado de parens, y simplemente dar a defaults
el enlace simbólico como <value>
. Pero realmente me gustaría llegar al fondo de esto.