Was bedeutet das ~ in einem Dateipfad?


43

Was bedeutet das ~in einem absoluten Dateipfad?

Ich sehe dies in der Ausgabe von Dingen wie Build-Skripten, aber der Pfad existiert nicht.


25
Welches Betriebssystem?
ChrisF

Ist Windows nicht der Standard- Würfelwurf?
Pacerier

Antworten:


35

Normalerweise bedeutet dies, dass das Home-Verzeichnis des Benutzers z. B. das Home-Verzeichnis ~mike/des Benutzers mikeund ~/Ihr eigenes Home-Verzeichnis ist. Es ist mir jedoch unklar, ob ~/und ob ~mike/dies als absolut oder relativ anzusehen ist. es scheint von der gegebenen Definition abzuhängen (wenn jemand eine Referenz vorlegen kann, schreibe bitte einen Kommentar).

Beachten Sie, dass ich hier von Unix-basierten Systemen spreche.

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


3
Sie sind absolut, weil sie Synonyme für absolute Pfade sind: Unter UNIX kann der absolute Pfad aus dem Inhalt der /etc/loginDatei abgeleitet werden. Die Erweiterung wird traditionell von der Shell durchgeführt, aber jede Sprache, die den Anspruch hat, "Scripting" zu sein, wird dies auch tun.
Charles Stewart

2
+1: Ich wusste nichts über die ~username/Sache.
Wuffers 16.11.10

2
Interessanterweise wird Windows PowerShell auch ~als Synonym für das private Verzeichnis des Benutzers akzeptiert.
Joey

1
Jeffery Snover hat gesagt, dass PowerShell ursprünglich auf VIM / EMACs basiert
Anonymous Type

1
@ Charles Stewart ist vermutlich mindestens ~ / relativ, da dies vom Kontext des Benutzers abhängt. Einige Referenzen definieren auch einen absoluten Pfad als einen Pfad, der aus dem Stammverzeichnis des Dateisystems stammt, was offensichtlich nicht der Fall ist. Wenn Sie eine Referenz für Ihre Aussage haben, teilen Sie bitte!
Adrian Mouat

21

Tatsächlich sind beide Antworten von Adrian Mouat und studiohack richtig.
In Betriebssystemen mit eingeschränkter Namenskonvention (ältere Version von Windows / DOS usw.) bedeutet dies einen langen Namen.

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

In einigen Betriebssystemen (nämlich Unix) bedeutet dies Heimatverzeichnis (und kann als absoluter, aber nicht kanonischer Pfad angesehen werden).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* wobei 'usr' das Heimatverzeichnis ist.


2
Im Kontext von Build-Skripten handelt es sich wahrscheinlich um die Unix-zentrierte Version.
Charles Stewart

2
In Unix-Pfaden werden normalerweise Schrägstriche anstelle von umgekehrten Schrägstrichen verwendet.
Torben Gundtofte-Bruun 16.11.10

@torbengb, wahr ... opps
Eran

1
Eine kleine Korrektur zu Xenoroses ansonsten hervorragender Antwort. Dateinamen wie "progra ~ 1" gelten nicht für ältere Betriebssysteme. Mein Windows 7-System verwendet sie immer noch. Dies ist eine Legacy-Funktion, die alte Software unterstützt, die die langen Dateinamen in modernen Systemen nicht kennt. Alte Software geht davon aus, dass alle Dateinamen der 8.3-Konvention entsprechen . Wenn ein Dateiname mit dieser Konvention nicht funktioniert, das Dateisystem automatisch erzeugt einen zweiten, 8.3 kompatibel Namen.
Isaac Rabinovitch


5

Und wenn Sie ASP.NET programmieren, bedeutet dies die oberste Ebene der Website. Anstatt mit ../../images/some_image.jpg zu navigieren (und Ihre Schachtelungsebene falsch zu machen!), können Sie einfach ~ / images / some_image.jpg sagen


2
/images/some_image.jpgSie sollten zum Stammverzeichnis einer Website gelangen. Welche zusätzlichen Funktionen bietet die Tilde in ASP.NET?
Sonny

7
~ führt Sie zum Stammverzeichnis der Webanwendung, das nicht mit dem Stammverzeichnis der Website identisch ist, wenn Sie ein virtuelles Verzeichnis verwenden. Wenn Ihre Website beispielsweise auf dem Server im virtuellen Verzeichnis myapp installiert ist, wird ~ / images / myimage.jpg in myserver / myapp / images / myimage.jpg aufgelöst . Siehe msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS

1

Hier sind einige Hinweise, die Ihnen helfen können, es besser herauszufinden:

$ readlink -f ~

$ echo $HOME

Hinweis: Dies $ist eine Konvention zum Angeben der Benutzerbefehlszeile. Sie ist kein Teil der Befehle.


'readlink' wird nicht als interner oder externer Befehl erkannt.
Pacerier

@vtest Das liegt daran, dass sich das Beispiel in diesem Kommentar auf Unix-basierte Systeme bezieht, nicht auf Windows.
Dudewad

-1

Weitere Informationen zu Windows:

  1. Wenn der Name der versteckten Datei mit "~" beginnt, verarbeitet Windows Explorer sie als versteckte Systemdatei. Weitere Informationen unter Warum werden versteckte Dateien mit einer führenden Tilde als super-versteckt behandelt?

  2. Wenn der kurze Datei- / Verzeichnisname '~' enthält (wie "c: \ ololoo ~ 1"), kann der entsprechende lange Name dieser Datei / dieses Verzeichnisses die maximale Länge überschreiten (MAX_PATH = 260). Entwickler sollten dies mit dem Präfix "\\? \" Umgehen (selbst unter neueren Windows 10 kann der Benutzer die Unterstützung von "> 260" -langen Pfaden mit dem LongPathsEnabledRegistrierungsparameter oder mit der Gruppenrichtlinie "NTFS- Langpfade aktivieren" deaktivieren ). Ein Beispiel für diese Problemumgehung mit C # finden Sie in den Quellen der ZetaLongPaths-Bibliothek .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.