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.

blade34r
źródło
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

Adrian Mouat
źródło
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.

Eran
źródło
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

południe
źródło
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ń.

vtest
źródło
„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 .

oshatrk
źródło