Re[7]: Подлянка с -Path/-LiteralPath в PowerShell - что дела
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.07.24 16:06
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Так обычно под этим подразумеваются стандартные управляющие символы, которые не могут совпадать с именем файла или папки.


Это нужно читать, как "я это всегда подразумевал, и самонадеянно полагал, что так везде и будет". И еще раз: то, что "*" и "?" не допускаются в именах файлов — следствие исключительно того, что этим символы выбраны в качестве шаблонных для пользовательских утилит. Средства программирования этой традиции следовать не обязаны, ибо не предназначены для рядового пользователя.

А мне вот традиционных "*" и "?" никогда не хватало, поэтому в каждом новом языке/средстве я первым делом смотрю, как там интерпретируются шаблоны, допускаются ли регулярные выражения и т.п.

S>Так может и стоило бы назвать -PathTemplate?


С этим согласен. Но разработчики PowerShell, как и в свое время bash, руководствовались весьма странной логикой. Что-то сделали очень удобно, а что-то — откровенно уродливо и громоздко. Судя по всему, и там, и там сперва пытались выдержать какой-то единый стиль, но в итоге нагромоздили столько исключений, что того стиля почти не видно.

S>Не было бы проблем, если бы шаблонные символы были стандартными и запрещены в именах файлов.


В средствах программирования для этого нет ни малейшей необходимости. Не путайте с утилитами для необразованного конечного пользователя.

S>здесь есть символы, которые в именах файлах так же разрешены.


А в регулярных выражениях есть символы, которые разрешены в текстах. Пора бы уже понять эту простую идею, коли Вы сподобились заняться программированием.

S>Имя с шаблоными символами создать не возможно


Невозможно создать имя с запрещенным символом. Запрещенный символ в общем случае не является шаблонным, и шаблонные символы (опять же в общем случае) не обязаны быть запрещенными в именах.

S>По уму


Вас не удивляет, что, откровенно протупив во вполне очевидном вопросе, Вы упрекаете кого-то в нехватке ума?

S>если они вводят сверх стандартных символов * ? еще и какие-то свои, которые могут быть частью имени файла — то назвать PathTemplate


Стоило так назвать не потому, что символы допустимы или недопустимы в имени, а потому, что строки в -Path и -LiteralPath имеют разный смысл и, как следствие, разную интерпретацию. Когда обрабатывается шаблон, обработчику нет дела до того, какие символы допустимы или недопустимы в имени файла — он просто применяет к ним установленные правила.

S>Просьба ответить по существу.


Я уже по третьему разу разжевал, а Вам все непонятно. Это означает, что в обучении Вы прошли мимо определенных основ, без которых Ваши попытки программирования вырождаются в интуитивную переделку готовых примеров.

S>Откуда я должен знать что Path — это не путь а какой-то шаблон


Из документации, на которую сами же и дали ссылку в первом сообщении. Она написана для того, чтобы ее читали, а не просматривали по диагонали. Единственное, что в этой документации не совсем правильно — примеры почему-то идут до подробного описания параметров. Но эти описания таки есть, они не спрятаны под спойлеры, и даже не вынесены на отдельные страницы. Если Вам раньше приходилось читать документацию по средствам программирования, то Вы не могли не знать, что любые синтаксические элементы, упомянутые в общем описании, непременно подробно описаны где-то далее. Иначе не бывает.

В общем, не ведите себя, как школьница, которую обманом затащили в бордель.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.