O que o ~ significa em um caminho de arquivo?


43

O que ~significa um caminho de arquivo absoluto?

Eu vejo isso na saída de coisas como scripts de construção, mas o caminho não existe.


25
Qual sistema operacional?
ChrisF

O Windows não é o rolo de dados padrão ?
Pacerier 15/10

Respostas:


35

Normalmente, isso significa que o diretório pessoal do usuário, por exemplo, ~mike/seria o diretório pessoal do usuário mike, ~/seria o seu próprio diretório pessoal. No entanto, não está claro para mim se ~/e ~mike/deve ser considerado absoluto ou relativo; parece depender da definição dada (se alguém puder apresentar uma referência autorizada, por favor poste um comentário).

Note que eu estou falando sobre sistemas baseados em Unix aqui.

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


3
Eles são absolutos, porque são sinônimos de caminhos absolutos: no UNIX, o caminho absoluto pode ser inferido a partir do conteúdo do /etc/loginarquivo. A expansão é tradicionalmente feita pelo shell, mas qualquer linguagem que tenha pretensões de "script" fará isso também.
Charles Stewart

2
+1: eu não sabia sobre a ~username/coisa.
Wuffers 16/11/2010

2
Curiosamente, o Windows PowerShell também aceita ~como sinônimo o diretório inicial do usuário.
Joey

1
Jeffery Snover disse que o PowerShell era originalmente baseado em VIM / EMACs
Tipo Anônimo

1
@ Charles Stewart, sem dúvida, pelo menos ~ / é relativo, pois depende do contexto do usuário. Além disso, algumas referências definem um caminho absoluto como um dado da raiz do sistema de arquivos, o que obviamente não é. Se você tiver uma referência para sua declaração, compartilhe!
Adrian Mouat

21

Na verdade, as duas respostas de Adrian Mouat e studiohack são verdadeiras.
Em sistemas operacionais com convenção de nomenclatura limitada (versão mais antiga do Windows / DOS etc '), significa um nome longo.

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

Em alguns sistemas operacionais (ou seja, Unix), significa home-dir (e pode ser visto como um caminho absoluto, mas não canônico).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* onde 'usr' é o diretório inicial.


2
No contexto dos scripts de construção, é provavelmente a versão centrada no Unix.
Charles Stewart

2
Os caminhos Unix geralmente usam barras invertidas em vez de barras invertidas.
Torben Gundtofte-Bruun

@torbengb, true ... opps
Eran

1
Uma pequena correção à excelente resposta de Xenorose. Nomes de arquivos como "programa ~ 1" não são para sistemas operacionais mais antigos. Meu sistema Windows 7 ainda os usa. (Dir / x para ver.) Esse é um recurso herdado que suporta software antigo que não conhece os nomes extensos de arquivos nos sistemas modernos. O software antigo acha que todos os nomes de arquivos seguem a convenção 8.3 . Quando um nome de arquivo não funciona com esta convenção, o sistema de arquivos cria automaticamente um segundo nome 8.3 compatível.
Isaac Rabinovitch


5

E se você faz a programação do ASP.NET, significa o nível superior do site; em vez de navegar usando ../../images/some_image.jpg (e com o nível de aninhamento errado!), você pode simplesmente dizer ~ / images / some_image.jpg


2
/images/some_image.jpgdeve levá-lo à raiz de qualquer site. Que funcionalidade adicional o til fornece no ASP.NET?
Sonny

7
~ leva você à raiz do aplicativo da web, que não é a mesma da raiz do site, se você estiver usando um diretório virtual. Por exemplo, se o seu site estiver instalado no myserver no diretório virtual myapp, ~ / images / myimage.jpg será resolvido para myserver / myapp / images / myimage.jpg . Consulte msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS

1

Aqui estão algumas dicas que podem ajudá-lo a descobrir melhor:

$ readlink -f ~

$ echo $HOME

Nota: $é uma convenção para especificar o prompt da linha de comandos do usuário, não faz parte dos comandos.


'readlink' não é reconhecido como um comando interno ou externo.
Pacerier 15/10/2015

@vtest é porque o exemplo neste comentário é para sistemas baseados em unix, não no Windows.
dudewad

-1

Mais sobre o Windows:

  1. Se o nome do arquivo oculto começar com '~', o Windows Explorer o processará como arquivo oculto do sistema. Mais informações em Por que os arquivos ocultos com um til principal são tratados como super-ocultos?

  2. Se o nome curto do arquivo / diretório contiver '~' (como "c: \ ololoo ~ 1"), é possível que o nome longo correspondente desse arquivo / diretório exceda o comprimento máximo (MAX_PATH = 260). Os desenvolvedores devem resolver isso com o prefixo "\\? \" (Mesmo no Windows 10 mais recente, pois o usuário pode desabilitar o suporte a caminhos longos "> 260" com o LongPathsEnabledparâmetro do registro ou com a diretiva de grupo "Ativar caminhos longos NTFS"). Exemplo para esta solução alternativa usando C # pode ser encontrado nas fontes da biblioteca ZetaLongPaths .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.