Когда несколько '///' использовались бы между подкаталогами?

Я рыл через /var/log/plymouth-debug.log и определенный эта строка:

[main.c:716] get_cache_file_for_mode:returning cache file '/var/lib/plymouth//boot-duration'

Я думал, что это была опечатка, таким образом, ввел следующее, и конечно же Вы можете иметь как многие /// между подкаталогами и именем файла, как Вы хотите. Например:

rick@dell:~$ ls -la /var/lib/plymouth/boot-duration
-rw-r--r-- 1 root root 2041 Nov  3 21:39 /var/lib/plymouth/boot-duration
────────────────────────────────────────────────────────────────
rick@dell:~$ ls -la /var/lib/plymouth/////boot-duration
-rw-r--r-- 1 root root 2041 Nov  3 21:39 /var/lib/plymouth/////boot-duration
────────────────────────────────────────────────────────────────
rick@dell:~$ ls -la /var/lib//plymouth///boot-duration
-rw-r--r-- 1 root root 2041 Nov  3 21:39 /var/lib//plymouth///boot-duration

При каких обстоятельствах был бы Вы хотеть использовать два или больше // вместо сингла / разделитель?

0
задан 4 November 2016 в 07:05

1 ответ

Этому отвечает очень приятно Gilles в Unix & Linux: Как Linux обрабатывает несколько последовательных разделителей пути (/, размещают////имя пользователя///файл)?

Несколько наклонных черт позволяются и эквивалентны единственной наклонной черте. От Единственной спецификации Unix (версия 3) основывайте определения §3.266 путь: “Несколько последовательных наклонных черт считаются тем же как одной наклонной чертой”.

Существует одно исключение: если путь запускается точно с двух наклонных черт, его можно рассматривать по-другому (касательно: основные определения §4.11 разрешение пути). Сам Linux не делает этого, хотя некоторые приложения могли бы, и другая система выхода Unix делает (например, Cygwin).

Запаздывание / в конце пути вынуждает путь обратиться к каталогу. В (POSIX 1003.1-2001 (Единственный Unix v3) основывают определения §4.11 разрешение пути, запаздывание / эквивалентно запаздыванию /.. POSIX 1003.1-2008 (Единственный Unix v4) основные определения §4.12 удаляет требование для создания этого эквивалентным /., для преодоления несуществующих каталогов (например. mkdir foo/ требуется, чтобы работать, тогда как mkdir foo/. не был бы — видеть объяснение для изменения).

Для программ, которые действуют на запись каталога, если foo символьная ссылка на каталог, затем передавая foo/ путь состоит в том, чтобы заставить программу действовать на каталог вместо символьной ссылки.

¹ Примечание, что это запрашивает разрешение пути только, т.е. при доступе к файлам. Манипуляции именем файла могут работать по-другому. Например, basename и dirname проигнорируйте запаздывание наклонных черт.

В этом случае я принимаю /// просто программирует излишне предосторожность (некоторое использование dev / к путям объединения, когда у них уже есть запаздывание или продвижение наклонных черт соответственно).

2
ответ дан 28 September 2019 в 06:19

Другие вопросы по тегам:

Похожие вопросы: