¿Cómo creo un enlace simbólico a un directorio con un espacio en él?


24

Intenté crear un enlace simbólico con el siguiente comando:

ln -s "~/Foo Bar/" Foo

... pero no funcionó (es decir, cuando entro en el buscador e intento hacer doble clic en él, dice que apunta a una ruta no válida y me pide que elimine el alias o lo corrija). Tuve que cambiar el nombre de la carpeta FooBary luego ejecutar el siguiente comando:

ln -s ~/FooBar/ Foo

¿Cómo puedo crear el enlace sin tener que eliminar el espacio del nombre de la carpeta?

Estoy buscando una manera de hacer esto en Terminal y no en la interfaz de usuario de Finder.


1
Si bien Gordon Davisson tiene razón, debe tener en cuenta que los alias y los enlaces simbólicos (enlaces simbólicos) son diferentes. ln -shace enlaces simbólicos. El buscador hace alias. Son casi idénticos en el uso práctico y común, pero es importante reconocer que son diferentes . Los enlaces simbólicos apuntan a una ruta de directorio, mientras que los alias apuntan a un archivo. Si tiene ambos apuntando al mismo archivo y mueve el archivo a una carpeta diferente, luego crea un nuevo archivo en la carpeta anterior, el alias apuntará al original movido y el enlace simbólico apuntará al nuevo archivo.
— CajunLuke

1
@Cajun: gracias por la aclaración. Es confuso que el buscador muestre la propiedad "Tipo" de un enlace simbólico como "Alias".
— Senseful

44
La finalización de tabulación también es algo maravilloso, si hiciera esto: ln -s ~/Foo<tab>(donde <tab> denota la tecla ⇥ (tabulación) real en su teclado), si solo hay una carpeta que comienza con "Foo", ~entonces automáticamente ampliar el camino hacia ~/Foo\ Bar/.
— Jason Salaz

Respuestas:


41

Las comillas evitan que ~se expandan a su carpeta de inicio, por lo que debe citar solo la parte con el espacio en ella:

ln -s ~/"Foo Bar/" Foo

Nota: no importa exactamente cuánto se cita, siempre que el espacio esté en la porción citada y el ~ / no lo sea. ~/Foo" "Bar/, ~/"Foo Bar"/, ~/Fo"o B"ar/Etc, son todos equivalentes. Además, las comillas simples y dobles tienen el mismo efecto en los espacios (aunque difieren en otros caracteres), por lo que ~/'Foo Bar/', ~/Foo' 'Bar/etc., también funcionarían.

También podría usar un escape para evitar que el espacio sea tratado como un separador:

ln -s ~/Foo\ Bar/ Foo

55
¿Puedes citar seriamente SOLO el espacio? ¡Eso es genial!
— Jason Salaz

O "$HOME/Foo Bar/".
— wchargin

@wchargin Eso funcionará. Tenga en cuenta que ~, a diferencia , $HOME debe estar entre comillas dobles para evitar confusiones si su directorio principal contiene espacios u otros caracteres extraños. "$HOME/Foo Bar/"(como usted sugiere), "$HOME"/Foo" "Bar/, "$HOME"/Foo\ Bar/, etc va a funcionar.
— Gordon Davisson

0

Lo probé yo mismo. No tengo ningún problema con un espacio en él:

    $ ln -s "/Users/joe/test/foo bar"/ linkToFoo_Bar

ls shows: $ linkToFoo_Bar -> /Users/joe/test/foo bar/ y funciona en terminal y buscador sin ningún problema.


10
Usaste un camino completo, no el ~ayudante.
— Jason Salaz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.