Що означає ~ у шляху до файлу?


43

Що ~означає абсолютний шлях до файлу?

Я бачу це у висновку таких речей, як сценарії побудови, але шлях не існує.


25
Яка операційна система?
ChrisF

Чи не Windows за замовчуванням рулон з кістки?
Pacerier

Відповіді:


35

Зазвичай це означає домашній каталог користувача, наприклад, ~mike/це буде mikeдомашній каталог користувача, ~/це буде ваш власний домашній каталог. Тим НЕ менше, залишається неясним , чи мені ~/і ~mike/слід вважати абсолютним або відносним; це, мабуть, залежить від даного визначення (якщо хтось може придумати авторське посилання, будь ласка, опублікуйте коментар).

Зауважте, що я говорю про системи на базі Unix.

Дивіться http://en.wikipedia.org/wiki/Home_directory#Unix


3
Вони є абсолютними, оскільки є синонімами абсолютних шляхів: у UNIX абсолютний шлях можна зробити з вмісту /etc/loginфайлу. Розширення традиційно виконується оболонкою, але будь-яка мова, яка має претензії бути "сценарієм", зробить це також.
Чарльз Стюарт

2
+1: Я про це не знав ~username/.
Wuffers

2
Цікаво, що Windows PowerShell також приймає ~як синонім домашньої дирекції користувача.
Joey

1
Джеффрі Сновер заявив, що PowerShell спочатку базувався на VIM / EMACs
Anonymous Type

1
@Charles Stewart, можливо, щонайменше ~ / відносний, оскільки це залежить від контексту користувачів. Також деякі посилання визначають абсолютний шлях як такий, що заданий з кореня файлової системи, який, очевидно, не є. Якщо у вас є посилання на заяву, будь ласка, поділіться!
Адріан Муат

21

Насправді обидві відповіді Адріана Муата та студхака правдиві.
В операційних системах з обмеженою умовою іменування (старіша версія Windows / DOS тощо) це означає довге ім'я.

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

У деяких операційних системах (а саме Unix) це означає home-dir (і може розглядатися як абсолютний, але не канонічний шлях).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* де 'usr' - домашній реж.


2
У контексті сценаріїв побудови це, мабуть, Unix-орієнтована версія.
Чарльз Стюарт

2
Шляхи Unix зазвичай використовують косою косою стрілкою вперед, а не з косою рисою.
Torben Gundtofte-Bruun

@torbengb, правда ... opps
Еран

1
Невелика поправка на відмінну відповідь Ксенорози. Назви файлів типу "progra ~ 1" не призначені для старих ОС. Моя система Windows 7 все ще їх використовує. (Зробіть dir / x для перегляду.) Це застаріла функція, яка підтримує старе програмне забезпечення, яке не знає про довгі імена файлів у сучасних системах. Старе програмне забезпечення вважає, що всі імена файлів відповідають конвенції 8.3 . Якщо ім'я файлу не працює з цією умовою, файлова система автоматично створює друге, 8.3 сумісне ім’я.
Ісаак Рабінович

12

У багатьох файлових системах ім'я файлу буде містити тильду (~) у кожному компоненті імені, який занадто довгий, щоб відповідати 8.3 правилам іменування.

Джерело: Іменування файлів, шляхів та просторів імен - короткі та довгі імена - MSDN

(Частина сторінки вниз ...)


Хм, не зовсім працює для імен, які містять крапки. (наприклад, 192.168.1.1або somefile.namewithdot)
Pacerier

5

А якщо ви займаєтесь програмуванням ASP.NET, це означає верхній рівень веб-сайту; замість навігації за допомогою ../../images/some_image.jpg (і неправильний рівень гніздування!) ви можете просто сказати ~ / images / some_image.jpg


2
/images/some_image.jpgмає перенести вас до кореня будь-якого веб-сайту. Яку додаткову функціональність забезпечує тильда в ASP.NET?
Сонні

7
~ перенесе вас до кореня веб-додатків, який не є таким, як корінь веб-сайту, якщо ви використовуєте віртуальний каталог. Наприклад, якщо ваш веб-сайт встановлений на сервері myserver у віртуальному каталозі myapp, ~ / images / myimage.jpg буде вирішено в myserver / myapp / images / myimage.jpg . Див. Msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS

1

Ось пара підказок, які можуть допомогти вам зрозуміти це краще:

$ readlink -f ~

$ echo $HOME

Примітка: $це умова, що визначає командний рядок користувача, не є частиною команд.


'readlink' не розпізнається як внутрішня чи зовнішня команда.
Pacerier

@vtest це тому, що приклад у цьому коментарі - для систем на базі Unix, а не для Windows.
dudewad

-1

Докладніше про Windows:

  1. Якщо приховане ім'я файлу починається з '~', то Windows Explorer обробляє його як прихований системний файл. Більше інформації в Чому приховані файли з провідним тильдом трактуються як супер приховані?

  2. Якщо коротке ім'я файлу / каталогу містить '~' (наприклад, "c: \ ololoo ~ 1"), то відповідне довге ім'я цього файлу / каталогу може перевищувати максимальну довжину (MAX_PATH = 260). Розробники повинні вирішити це за допомогою префіксу "\\? \" (Навіть у новіших Windows 10, оскільки користувач може відключити "> 260" підтримку довгих шляхів за допомогою LongPathsEnabledпараметра реєстру або з груповою політикою "Увімкнути довгі шляхи NTFS"). Приклад цього вирішення за допомогою C # можна знайти в джерелах бібліотеки ZetaLongPaths .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.