¿Qué significa ~ en una ruta de archivo?

43

¿Qué significa el ~en una ruta de archivo absoluta?

Veo esto en la salida de cosas como construir scripts, pero la ruta no existe.

blade34r
fuente
25
Cual sistema operativo
ChrisF
¿No es Windows el lanzamiento de dados predeterminado ?
Pacerier

Respuestas:

35

Normalmente significa que el directorio de inicio del usuario, por ejemplo, ~mike/sería el directorio de inicio del usuario mike, ~/sería su propio directorio de inicio. Sin embargo, no está claro para mí si ~/y ~mike/debe considerarse absoluto o relativo; parece depender de la definición dada (si alguien puede encontrar una referencia autoritaria, publique un comentario).

Tenga en cuenta que estoy hablando de sistemas basados ​​en Unix aquí.

Ver http://en.wikipedia.org/wiki/Home_directory#Unix

Adrian Mouat
fuente
3
Son absolutos, porque son sinónimos de rutas absolutas: en UNIX, la ruta absoluta se puede inferir del contenido del /etc/loginarchivo. La expansión se realiza tradicionalmente por el shell, pero cualquier lenguaje que tenga pretensiones de "scripting" también lo hará.
Charles Stewart el
2
+1: No sabía sobre la ~username/cosa.
Wuffers
2
Curiosamente, Windows PowerShell también acepta ~como sinónimo del directorio de inicio del usuario.
Joey
1
Jeffery Snover ha dicho que PowerShell se basó originalmente en VIM / EMAC
tipo anónimo el
1
@Charles Stewart podría decirse que al menos ~ / es relativo, ya que depende del contexto de los usuarios. Además, algunas referencias definen una ruta absoluta como la dada desde la raíz del sistema de archivos, que obviamente no lo son. Si tiene una referencia para su estado de cuenta, ¡comparta!
Adrian Mouat
21

En realidad, ambas respuestas de Adrian Mouat y studiohack son ciertas.
En sistemas operativos con una convención de nomenclatura limitada (versión anterior de Windows / DOS, etc.) significa un nombre largo.

e.g. "c:\program files\" is equivalent to "c:\progra~1\"

En algunos sistemas operativos (a saber, Unix) significa home-dir (y podría verse como una ruta absoluta pero no canónica).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* donde 'usr' es el directorio de inicio.

Eran
fuente
2
En el contexto de los scripts de compilación, probablemente sea la versión centrada en Unix.
Charles Stewart el
2
Las rutas de Unix generalmente usan barras diagonales delanteras en lugar de barras diagonales inversas.
Torben Gundtofte-Bruun
@torbengb, cierto ... opps
Eran
1
Una pequeña corrección a la excelente respuesta de Xenorose. Los nombres de archivo como "progra ~ 1" no son para sistemas operativos más antiguos. Mi sistema Windows 7 todavía los usa. (Dir / x para ver). Esta es una característica heredada que admite software antiguo que no conoce los nombres largos de archivos en los sistemas modernos. El software antiguo cree que todos los nombres de archivo siguen la convención 8.3 . Cuando un nombre de archivo no funciona con esta convención, el sistema de archivos crea automáticamente un segundo nombre compatible con 8.3.
Isaac Rabinovitch
5

Y si realiza la programación ASP.NET, significa el nivel superior del sitio web; en lugar de navegar usando ../../images/some_image.jpg (¡y equivocando su nivel de anidación!) simplemente puede decir ~ / images / some_image.jpg

mediodía
fuente
2
/images/some_image.jpgdebería llevarlo a la raíz de cualquier sitio web. ¿Qué funcionalidad adicional proporciona la tilde en ASP.NET?
Sonny
77
~ lo lleva a la raíz de la aplicación web que no es la misma que la raíz del sitio web si está usando un directorio virtual. Por ejemplo, si su sitio web está instalado en myserver en el directorio virtual myapp, ~ / images / myimage.jpg se resolverá en myserver / myapp / images / myimage.jpg . Consulte msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS
1

Aquí hay un par de sugerencias que pueden ayudarlo a resolverlo mejor:

$ readlink -f ~

$ echo $HOME

Nota: $es una convención para especificar la línea de comandos del usuario, no forma parte de los comandos.

vtest
fuente
'readlink' no se reconoce como un comando interno o externo.
Pacerier
@vtest es porque el ejemplo en este comentario es para sistemas basados ​​en Unix, no Windows.
dudewad
-1

Más sobre Windows:

  1. Si el nombre del archivo oculto comienza con '~', el Explorador de Windows lo procesa como un archivo oculto del sistema. Más información en ¿Por qué los archivos ocultos con una tilde principal se tratan como super ocultos?

  2. Si el nombre corto de archivo / directorio contiene '~' (como "c: \ ololoo ~ 1") es posible que el nombre largo correspondiente de este archivo / directorio exceda la longitud máxima (MAX_PATH = 260). Los desarrolladores deben trabajar en esto con el prefijo "\\? \" (Incluso en Windows 10 más reciente, ya que el usuario puede deshabilitar la compatibilidad con rutas largas de>> 260 "con el LongPathsEnabledparámetro de registro o con la política de grupo" Habilitar rutas largas NTFS "). Se puede encontrar un ejemplo de esta solución alternativa usando C # en las fuentes de la biblioteca ZetaLongPaths .

oshatrk
fuente