24 votos

¿Cómo puedo crear un enlace simbólico a un directorio con un espacio?

Estaba intentando crear un enlace simbólico utilizando el siguiente comando:

ln -s "~/Foo Bar/" Foo

... pero no funcionó (es decir, cuando voy al finder y trato de hacer doble clic en él, dice que está apuntando a una ruta no válida y me pide que elimine el alias o lo arregle). Tuve que cambiar el nombre de la carpeta a FooBar y 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 forma de hacer esto en Terminal y no en la UI de Finder.

1 votos

Aunque Gordon Davisson tiene razón, debes tener en cuenta que los alias y los enlaces simbólicos (symlinks) son diferentes. ln -s crea enlaces simbólicos. El Finder crea 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 tienes ambos apuntando al mismo archivo y mueves el archivo a una carpeta diferente, entonces creas un nuevo archivo en la antigua carpeta, el alias apuntará al original movido y el enlace simbólico apuntará al nuevo archivo.

1 votos

@Cajun: gracias por la aclaración. Es confuso que finder muestre la propiedad "Kind" de un enlace simbólico como "Alias".

4 votos

Completar la pestaña también es algo maravilloso, si se hiciera esto: ln -s ~/Foo<tab> (donde <tab> denota la tecla (tabulador) real de su teclado), si sólo hay una carpeta que empiece por "Foo" en ~ ampliará automáticamente la ruta a ~/Foo\ Bar/ .

43voto

Nate Puntos 220

Las comillas impiden ~ para que no se expanda a tu carpeta de inicio, así que tienes que citar sólo la parte con el espacio:

ln -s ~/"Foo Bar/" Foo

Nota: la cantidad exacta de comillas no importa, siempre que el espacio esté en la parte citada y el ~/ no lo esté. ~/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ía.

También puede utilizar un escape para evitar que el espacio sea tratado como un separador:

ln -s ~/Foo\ Bar/ Foo

5 votos

¿Puedes citar en serio SÓLO el espacio? Es increíble.

1 votos

O "$HOME/Foo Bar/" .

0 votos

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

0voto

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

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

ls muestra: $ linkToFoo_Bar -> /Users/joe/test/foo bar/ y funciona en la terminal y en el finder sin problemas.

10 votos

Ha utilizado una ruta completa, no el ~ ayudante.

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