Co oznacza ~ w ścieżce pliku?


43

Co ~oznacza bezwzględna ścieżka pliku?

Widzę to w wynikach takich rzeczy jak skrypty budowania, ale ścieżka nie istnieje.


25
Który system operacyjny?
ChrisF,

Czy Windows nie jest domyślnym rzutem kostką?
Pacerier

Odpowiedzi:


35

Zwykle oznacza to, że katalog osobisty użytkownika, np. ~mike/Byłby mikekatalogiem ~/osobistym użytkownika , byłby twoim własnym katalogiem domowym. Nie jest jednak dla mnie jasne, czy ~/i ~mike/należy je uważać za absolutne czy względne; wydaje się, że zależy to od podanej definicji (jeśli ktoś może wymyślić autorytatywne odniesienie, prosimy o komentarz).

Zauważ, że mówię tutaj o systemach opartych na Uniksie.

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


3
Są absolutne, ponieważ są synonimami ścieżek bezwzględnych: w systemie UNIX ścieżkę bezwzględną można wywnioskować z zawartości /etc/loginpliku. Rozbudowa jest tradycyjnie wykonywana przez powłokę, ale zrobi to również każdy język, który ma pretensje do „skryptowania”.
Charles Stewart

2
+1: Nie wiedziałem o tym ~username/.
Wuffers

2
Co ciekawe, Windows PowerShell akceptuje również ~jako synonim domu directoy użytkownika.
Joey,

1
Jeffery Snover powiedział, że PowerShell był pierwotnie oparty na VIM / EMAC
Anonymous Type

1
@Charles Stewart prawdopodobnie przynajmniej ~ / jest względny, ponieważ zależy od kontekstu użytkownika. Również niektóre odniesienia definiują ścieżkę bezwzględną jako podaną z katalogu głównego systemu plików, co oczywiście nie jest. Jeśli masz odniesienie do swojego oświadczenia, udostępnij je!
Adrian Mouat,

21

W rzeczywistości obie odpowiedzi Adriana Mouata i studiohack są prawdziwe.
W systemach operacyjnych z ograniczoną konwencją nazewnictwa (starsza wersja Windows / DOS itp.) Oznacza to długą nazwę.

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

W niektórych systemach operacyjnych (mianowicie Unix) oznacza to katalog domowy (i może być postrzegany jako ścieżka absolutna, ale nie kanoniczna).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* gdzie „usr” to katalog domowy.


2
W kontekście skryptów kompilacji jest to prawdopodobnie wersja uniksowa.
Charles Stewart

2
Ścieżki uniksowe zwykle używają ukośników do przodu, a nie odwrotnych ukośników.
Torben Gundtofte-Bruun

@torbengb, true ... opps
Eran

1
Mała poprawka do doskonałej odpowiedzi Xenorose. Nazwy plików, takie jak „progra ~ 1”, nie są przeznaczone dla starszych systemów operacyjnych. Mój system Windows 7 nadal ich używa. (Aby sprawdzić katalog / d.). Jest to starsza funkcja, która obsługuje stare oprogramowanie, które nie wie o długich nazwach plików we współczesnych systemach. Stare oprogramowanie uważa, że ​​wszystkie nazwy plików są zgodne z konwencją 8.3 . Gdy nazwa pliku nie działa z tą konwencją, system plików automatycznie tworzy drugą, zgodną z wersją 8.3 nazwę.
Isaac Rabinovitch


5

A jeśli programujesz w ASP.NET, oznacza to najwyższy poziom witryny; zamiast nawigować za pomocą ../../images/some_image.jpg (i myląc poziom zagnieżdżenia!) możesz po prostu powiedzieć ~ / images / some_image.jpg


2
/images/some_image.jpgpowinien zabrać Cię do katalogu głównego dowolnej strony internetowej. Jakie dodatkowe funkcje zapewnia tylda w ASP.NET?
Sonny,

7
~ przeniesie Cię do katalogu głównego aplikacji internetowej, który nie jest tym samym co katalog główny witryny, jeśli korzystasz z katalogu wirtualnego. Na przykład, jeśli twoja witryna jest zainstalowana na myserver w wirtualnym katalogu myapp, ~ / images / myimage.jpg rozwiąże się do myserver / myapp / images / myimage.jpg . Zobacz msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS

1

Oto kilka wskazówek, które pomogą Ci to lepiej zrozumieć:

$ readlink -f ~

$ echo $HOME

Uwaga: $jest konwencją określającą wiersz polecenia użytkownika, nie jest częścią poleceń.


„readlink” nie jest rozpoznawany jako polecenie wewnętrzne ani zewnętrzne.
Pacerier

@vtest to dlatego, że przykład w tym komentarzu dotyczy systemów uniksowych, a nie Windows.
dudewad

-1

Więcej informacji o systemie Windows:

  1. Jeśli nazwa ukrytego pliku zaczyna się od „~”, Eksplorator Windows przetwarza go jako ukryty plik systemowy. Więcej informacji w Dlaczego ukryte pliki z wiodącą tyldą są traktowane jako super-ukryte?

  2. Jeśli krótka nazwa pliku / katalogu zawiera „~” (np. „C: \ ololoo ~ 1”), odpowiednia długa nazwa tego pliku / katalogu może przekroczyć maksymalną długość (MAX_PATH = 260). Deweloperzy powinni obejść ten problem z prefiksem „\\? \” (Nawet w nowszych systemach Windows 10, ponieważ użytkownik może wyłączyć obsługę LongPathsEnableddługich ścieżek „ > 260” za pomocą parametru rejestru lub zasad grupy „Włącz długie ścieżki NTFS”). Przykład tego obejścia za pomocą C # można znaleźć w źródłach biblioteki ZetaLongPaths .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.