2 votos

Comando abrir no le gusta no escapó personajes, incluso entre comillas?

Es a mí o a la open comando sólo acepta caracteres de escape en los parámetros ?

Intentó open "~/Library/Messages/Attachments/87/07/079C263B-0586-48C6-B721-3C6AABAC76DF/Messages Image(1020754653).jpeg"

que devuelve The file /Users/Kyro/Library/Messages/~/Library/Messages/Attachments/87/07/079C263B-0586-48C6-B721-3C6AABAC76DF/Messages Image(1020754653).jpeg does not exist.

Cuando en realidad, open /Users/Kyro/Library/Messages/Attachments/87/07/079C263B-0586-48C6-B721-3C6AABAC76DF/Messages\ Image\(1020754653\).jpeg funciona bastante bien.

Edit : la Ejecución de los Mavericks de aquí.

3voto

Nate Puntos 220

No open, es el hecho de que ~ sólo funciona cuando no está en comillas. ~ no es en realidad parte de una ruta de archivo estándar, es un shell metacarácter de la shell sustituye en contextos donde se ve como el comienzo de un camino (y cita a suprimir este). Aquí están algunos ejemplos:

$ echo ~
/Users/gordon
$ echo "~"
~
$ ls ~/Library
Accounts        Fonts Disabled      Printers
[...]
$ ls "~/Library"
ls: ~/Library: No such file or directory

Nota el último comando anterior: desde ~ está dentro de comillas dobles, no llega a ser reemplazado por el camino a mi casa carpeta y, a continuación, ls sólo se trata como un nombre de archivo (que no existen). Lo mismo está sucediendo en su open comando.

Ya que el archivo que en realidad estás tratando de abrir tiene otros metacaracteres del intérprete de órdenes en su nombre, lo que debe hacer es parcialmente citar la ruta de acceso: salir de la ~ fuera de las comillas, pero asegúrese de que el nombre de archivo de la parte que está dentro de las comillas. Algo como esto:

open ~/"Library/Messages/Attachments/87/07/079C263B-0586-48C6-B721-3C6AABAC76DF/Messages Image(1020754653).jpeg"

2voto

Satanicpuppy Puntos 4902

Bueno, yo no leyó correctamente la salida de error.

open es un infierno de un *.

Añade el directorio de trabajo por delante de los comandos cuando el uso de comillas.

/Users/Kyro/Library/Messages/~/Library/Messages/ no tiene ningún sentido.

1voto

Malik hassan Puntos 16

Como apéndice a @Gordon Davidson respuesta:

Desde la Página Man de Bash:

EXPANSIÓN

La expansión se realiza en la línea de comandos después de que se ha dividido en las palabras. Hay siete tipos de expansión realizado: llave de la expansión, la expansión de tilde, parámetro y variable de expansión, comando la sustitución, expansión aritmética, la palabra de la división, y la ruta de acceso la expansión.

Tilde Expansión

Si una palabra comienza con un sin comillas carácter de tilde (`~'), todos de la los caracteres anteriores a la primera sin comillas barra (o todos los caracteres, si no hay no cotizados barra) son considerados un símbolo de prefijo. Si ninguno de los personajes de la tilde-prefijo que se citan, los personajes en la tilde-prefijo tras la tilde se tratan como un posible nombre de inicio de sesión. Si este nombre de inicio de sesión es la cadena nula, la tilde se reemplazado con el valor del parámetro de shell de INICIO. Si la CASA es no se especifica el directorio home del usuario que ejecuta el shell es sustituido en su lugar. De lo contrario, la tilde-prefijo es reemplazado con el directorio de inicio asociado con el especificado de nombre de inicio de sesión.

Si la tilde-prefijo es una ~+', the value of the shell variable PWD replaces the tilde-prefix. If the tilde-prefix is a~-', el valor de la variable de shell OLDPWD, si se establece, es sustituido. Si el los caracteres siguientes de la tilde en el símbolo del prefijo se compondrá de un número N, opcionalmente precedido por un +' or a-', la tilde-prefijo es reemplazado por el correspondiente elemento del directorio de la pila, como sería mostrada por el dirs builtin invoca con el tilde-prefijo como un argumento. Si los caracteres siguientes tilde la tilde-prefijo que constan de un número sin un líder +' or -', `+' es de suponer.

Si el nombre de inicio de sesión no es válida, o la tilde de expansión de la falla, la palabra es invariable.

Cada asignación de variable se comprueba sin comillas tilde-prefijos inmediatamente después de que : o la primera =. En estos casos, tilde la expansión también se realiza. En consecuencia, uno puede utilizar el archivo en los nombres de las tildes en las asignaciones a la RUTA, MAILPATH, y CDPATH, y el shell asigna el valor expandido.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X