Cosa significa ~ nel percorso di un file?


43

Cosa significa il ~significato in un percorso file assoluto?

Vedo questo nell'output di cose come gli script di build ma il percorso non esiste.


25
Quale sistema operativo?
ChrisF,

Windows non è il tiro di dadi predefinito ?
Pacerier,

Risposte:


35

Normalmente significa che la home directory dell'utente, ad esempio, ~mike/sarebbe la mikehome directory dell'utente , ~/sarebbe la tua home directory. Tuttavia, non mi è chiaro se ~/e ~mike/debba essere considerato assoluto o relativo; sembra dipendere dalla definizione fornita (se qualcuno può trovare un riferimento autorevole, si prega di inviare un commento).

Si noti che sto parlando di sistemi basati su Unix qui.

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


3
Sono assoluti, perché sono sinonimi di percorsi assoluti: su UNIX, il percorso assoluto può essere dedotto dal contenuto del /etc/loginfile. L'espansione è tradizionalmente eseguita dalla shell, ma anche qualsiasi linguaggio che pretende di essere "scripting" farà altrettanto.
Charles Stewart,

2
+1: non sapevo ~username/nulla.
Wuffers,

2
È interessante notare che Windows PowerShell accetta anche ~come sinonimo della home directory dell'utente.
Joey,

1
Jeffery Snover ha affermato che PowerShell era originariamente basato su VIM / EMACs
Tipo anonimo

1
@Charles Stewart probabilmente ~ / è relativo in quanto dipende dal contesto dell'utente. Inoltre alcuni riferimenti definiscono un percorso assoluto come indicato dalla radice del filesystem, che ovviamente non lo sono. Se hai un riferimento per la tua dichiarazione, ti preghiamo di condividere!
Adrian Mouat,

21

In realtà, entrambe le risposte di Adrian Mouat e studiohack sono vere.
Nei sistemi operativi con convenzione di denominazione limitata (versione precedente di Windows / DOS ecc.) Significa un nome lungo.

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

In alcuni sistemi operativi (in particolare Unix) significa home-dir (e potrebbe essere visto come un percorso assoluto ma non canonico).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* dove "usr" è la home directory.


2
Nel contesto degli script di build, è probabilmente la versione incentrata su Unix.
Charles Stewart,

2
I percorsi Unix di solito usano barre rovesciate anziché barre rovesciate.
Torben Gundtofte-Bruun,

@torbengb, true ... opps
Eran,

1
Una piccola correzione alla risposta altrimenti eccellente di Xenorose. I nomi di file come "progra ~ 1" non sono per sistemi operativi precedenti. Il mio sistema Windows 7 li utilizza ancora. (Fare dir / x per vedere.) Questa è una funzionalità legacy che supporta il vecchio software che non conosce i nomi di file lunghi nei sistemi moderni. Il vecchio software pensa che tutti i nomi di file seguano la convenzione 8.3 . Quando un nome file non funziona con questa convenzione, il file system crea automaticamente un secondo nome compatibile con 8.3.
Isaac Rabinovitch il


5

E se si esegue la programmazione ASP.NET significa che il livello superiore del sito Web; piuttosto che navigare usando ../../images/some_image.jpg (e sbagliare il tuo livello di annidamento!) puoi semplicemente dire ~ / images / some_image.jpg


2
/images/some_image.jpgdovrebbe portarti alla radice di qualsiasi sito web. Quali funzionalità aggiuntive fornisce la tilde in ASP.NET?
Sonny,

7
~ ti porta alla radice dell'applicazione web che non è la stessa della radice del sito web se stai usando una directory virtuale. Ad esempio, se il tuo sito Web è installato su myserver nella directory virtuale myapp, ~ / images / myimage.jpg si risolverà in myserver / myapp / images / myimage.jpg . Vedere msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS

1

Ecco un paio di suggerimenti che possono aiutarti a capirlo meglio:

$ readlink -f ~

$ echo $HOME

Nota: $è una convenzione per specificare il prompt della riga di comando dell'utente, non fa parte dei comandi.


'readlink' non è riconosciuto come comando interno o esterno.
Pacerier,

@vtest è perché l'esempio in questo commento è per i sistemi basati su unix, non per Windows.
Dudewad,

-1

Ulteriori informazioni su Windows:

  1. Se il nome del file nascosto inizia con '~', Windows Explorer lo elabora come file nascosto del sistema. Maggiori informazioni in Perché i file nascosti con una tilde principale vengono trattati come super nascosti?

  2. Se il nome breve di file / directory contiene '~' (come "c: \ ololoo ~ 1") è possibile che il nome lungo corrispondente di questo file / directory superi la lunghezza massima (MAX_PATH = 260). Gli sviluppatori dovrebbero lavorare con questo con il prefisso "\\? \" (Anche su Windows 10 più recente poiché l'utente può disabilitare "> 260" supporto per LongPathsEnabledpercorsi lunghi con parametro di registro o con criteri di gruppo "Abilita percorsi lunghi NTFS"). Un esempio di questa soluzione alternativa usando C # è disponibile nelle fonti della libreria ZetaLongPaths .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.