Назовите правильную запись имени текстового файла sigma sys
Обновлено: 21.11.2024
UVES_popler
Постконвейерное сокращение эшелле ESO/VLT UVES Автор: Майкл Т. Мерфи
Краткое описание:
Нестандартные требования:
библиотеки PGPLOT и CPGPLOT.
Библиотека CFITSIO.
Авторское право:
Авторское право Майкла Т. Мерфи, 2003–2015 г.
Эта программа является бесплатным программным обеспечением; вы можете распространять его и/или изменять в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Free Software Foundation; либо версия 2 Лицензии, либо (на ваш выбор) любая более поздняя версия.
Эта программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. Дополнительные сведения см. в Стандартной общественной лицензии GNU.
- Файлы, на которые указывает file_list.txt: извлеченные двумерные спектры с плоским полем, с поправкой на смещение.
- Откройте актор извлечения спектра: например, щелкните правой кнопкой мыши → Открыть актор.
- Настройте актера uves_obs_scired (двойной щелчок) и установите параметр "debug=true" (все строчные буквы).
- Запустите рабочий процесс сокращения UVES как обычно. Соответствующие файлы «fxb_» и «errfxb_» находятся в каталоге reflex_book_keeping/uves/uves_obs_scired1//. Последний должен быть переименован с префиксом «err_». Соответствующий файл LINE_TABLE указан в файле sof.dat в том же каталоге; его следует переименовать, чтобы он имел префикс "wpol_".
- d — Каталоги
- h — Скрытые файлы
- s — Системные файлы
- l — Точки повторной обработки
- r — файлы только для чтения
- a — Файлы готовы к архивированию
- i — Файлы, не проиндексированные по содержимому
- n — в алфавитном порядке по имени
- e – в алфавитном порядке.
- g – сначала сгруппировать каталоги
- s – по размеру, начиная с самого маленького.
- d — по дате/времени, начиная с самых старых
- Используйте префикс -, чтобы изменить порядок сортировки
- c — Создание
- a — Последнее обращение
- w – Последнее сообщение
- Мы даем правилу правильное «название» и «описание».
- Мы оставляем статус «экспериментальный», чтобы сообщить всем, что это новое и непроверенное правило.
- Мы добавляем правильную ссылку на источник, из которого получено это правило.
- Меняем автора правила
- Мы устанавливаем для этого правила один из следующих уровней: "низкий", "средний", "высокий" или "критический".
- Мы корректируем дату (последнего изменения) и используем формат %Y/%m%d (strftime)
- Мы проверяем правильность источника журнала, что важно для сопоставления полей, используемых «sigmac».
- es-qs (язык эластичных поисковых запросов)
- кибана
- xpack-наблюдатель
- точка журнала
- всплеск
- грэп
- fieldlist (используется только для отображения всех полей, требующих сопоставления в файле конфигурации)
- < (меньше чем)
- > (больше)
- : (двоеточие)
- " (двойные кавычки)
- / (косая черта)
- \ (обратная косая черта)
- | (вертикальная полоса или труба) <ли>? (вопросительный знак)
- * (звездочка)
- Чтобы получить форму длинного имени файла в формате 8.3, используйте функцию GetShortPathName.
- Чтобы получить версию короткого имени с длинным именем файла, используйте функцию GetLongPathName.
- Чтобы получить полный путь к файлу, используйте функцию GetFullPathName.
- Имя UNC любого формата, которое всегда начинается с двух символов обратной косой черты ("\\"). Дополнительные сведения см. в следующем разделе.
- Обозначение диска с обратной косой чертой, например "C:\" или "d:\".
- Одна обратная косая черта, например, "\directory" или "\file.txt". Его также называют абсолютным путем.
- «C:tmp.txt» относится к файлу с именем «tmp.txt» в текущем каталоге на диске C.
- "C:tempdir\tmp.txt" относится к файлу в подкаталоге текущего каталога на диске C.
- "..\tmp.txt" указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
- "..\..\tmp.txt" указывает файл, который находится на два каталога выше текущего каталога.
- "..\tempdir\tmp.txt" указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который является равноправным каталогом для текущего каталога.
- 20 миллионов участников
- 135 миллионов публикаций
- Более 700 тыс. исследовательских проектов
- Вкл.
- Редактор Tedit
- Отчет о проекте
-
= 0 : Комб. метод, масштабирование по порядку (0), подгонка по порядку (1) = TBD : Дисперсия в км/с или ангстремах (для линейного дисп.) : Источник файла: UVES=0, IRAF=1, MAKEE=2, IRAFLSS= 3, смешанный = -1 = 0,00000: красное смещение излучения QSO (если требуется для продолжения подбора) = 0: линейная (1) или логарифмически-линейная (0) дисперсия = 0: уменьшение и объединение калибровочных спектров ThAr
-
= 3 : Количество наиболее положительных пикселей, удаленных из окна отсечения = 35 : Количество пикселей в порядковом окне сигма-отсечения = 5,00 : Уровень сигма-отсечения для порядков [среднеквадратичное значение в окне] = 3,00 : Уровень сигма-отсечения для соседних пикселей = 3,00 : обрезать только тогда, когда среднее значение составляет много сигм выше нуля.
-
= 3,00 : Уровень сигма-обрезания для комбинации спектров = 4,00 : Коэффициент подавления больших ошибок для комбинации = 0 : (0) Автомасштаб; (1) Hi-SNR порядка 1-й спецификации без масштабирования = 3,00: уровень сигма-отсечения для межпорядкового масштабного коэффициента = 0,20: предел относительной ошибки для межпорядкового масштабного коэффициента
-
= 2 : Тип подбора (1=полиномиальный, 2=Чебышев, 3=Лежандр) = 4 : Порядок подобранного континуума (1=постоянный) = 0,10 : Нижний процентиль, который необходимо удалить для исходного подбора [%/100] = 1,40: Нижний рейд. уровень для непрерывной подгонки порядка [сигма] = 3,00 : Верхний размер. уровень для подбора континуума ордеров [сигма] = 500 : шкала взвешивания в пикселях для концов ордеров
-
= 4 : Порядок подобранного континуума ниже Лайман-альфа = 6 : Порядок подобранного континуума выше Лайман-альфа = 2 : Тип подбора ниже Лайман-альфа (1=пол, 2=Че, 3=ножка) = 2 : Тип подходит выше Lyman-alpha (1=pol, 2=Che, 3=Leg) = 0,30 : нижний процентиль, который необходимо удалить для первоначального соответствия Lya [%/100] = 0,10 : нижний процентиль, который необходимо удалить для первоначального красного соответствия [%/100] = 1.20 : Нижний рег. уровень для подгонки континуума Лаймана-альфа [сигма] = 3,00 : Верхнее отклонение. уровень для подгонки континуума Лаймана-альфа [сигма] = 1,40 : Нижний rej. уровень для продолжения подгонка к красной стороне Ля [сигма] = 3.00 : Верхняя рег. уровень для продолжения подгонка к красной стороне Lya [sigma] = 20000.00 : Шкала скорости для континуума, подходящего ниже Lya [км/с] = 2500.00 : Шкала скорости для подгонки континуума выше Lya [км/с] = 5000.00 : Скорость под Lya, где красная непрерывность. посадка начинается [км/с]
-
= 0 : Записать файл данных с нормализованным спектром = 0 : Принудительно сохранить UPL и FITS (1) при выходе из программы
-
= 0 : использовать интерактивный режим воспроизведения действий.
1. Загрузка и установка:
Лучший и пока единственный способ получить код — загрузить его с GitHub. Вы можете взять zip-файл с этого сайта или, что еще лучше, вы можете установить программу «github», а затем загрузить код на свой компьютер, т.е.
После получения кода (и распаковки zip-файла, если это то, что вы скачали), перейдите в каталог исходного кода:
приглашение> компакт-диск UVES_popler/
Вам нужно будет отредактировать Makefile, чтобы отразить архитектуру вашей системы, где находятся ваши библиотеки PGPLOT, CPGPLOT и CFITSIO и куда вы хотите поместить окончательный исполняемый файл. Для последнего измените ключевое слово TARGET в заголовке Makefile. Затем вы должны просто набрать
подсказка> поставить зависимость
и, надеюсь, все будет хорошо скомпилировано. Дайте мне знать, если у вас возникнут проблемы с компиляцией кода. После этого вы можете сделать
подсказка> очистить
чтобы удалить файлы *.o и временные файлы *~.
2. Протестированные системные архитектуры:
UVES_popler предназначен для работы в системах UNIX и Linux. До сих пор он был протестирован на самых разных платформах Linux и UNIX, включая версии Mac OS на базе Linux. UVES_popler должен работать на любой установке UNIX/Linux, так как библиотеки, которые он использует, довольно стандартны. Сообщите мне, если у вас возникнут проблемы с его работой на определенной платформе.
3. Информация об обновлении:
UVES_popler — это новая программа, написанная любителем C-кода. Я постараюсь обновить доступную версию (а также эту страницу), когда внесу изменения. Пожалуйста, дайте мне знать, если вы обнаружите ошибки или хотите, чтобы UVES_popler делал что-то по-другому или что-то новое.
Чтобы быть в курсе новых версий и изменений UVES_popler, лучше всего просто подписаться на GitHub.
<р>4. Основная операция:
Чтобы выполнить программу в первый раз:
приглашение> UVES_popler file_list.txt
-
Входной список файлов FITS: АБСОЛЮТНЫЕ ПУТИ!: Правильный ввод входного списка файлов FITS имеет решающее значение для работы UVES_popler. Этот файл должен быть только текстовым и содержать только одно имя файла в строке. Важно то, что каждый файл FITS должен быть указан с его полным абсолютным путем. Например, следующий список файлов НЕдействителен:
Q1209p107 / fxb_Q1209p107_sci_390_02_b.fits
Q1209p107 / fxb_Q1209p107_sci_564_01_l.fits
Q1209p107 / fxb_Q1209p107_sci_564_01_u.fits
Q1209p107 / fxb_Q1209p107_sci_564_02_l.fits
Q1209p107 / fxb_Q1209p107_sci_564_02_u.fits
потому что каждая строка не начинается с "/". Также неплохо иметь файлы FITS (на которые указывает file_list.txt) где-нибудь, кроме текущего рабочего каталога (PWD).
Файлы Flux должны быть помечены префиксом "fxb_". Связанные файлы ошибок должны иметь префикс «err_», а файлы калибровки длины волны должны иметь префикс «wpol_». Файлы "err_" и "wpol_" должны находиться в том же каталоге, что и связанные с ними файлы "fxb_".
Если вы использовали конвейер MIDAS UVES (теперь он сильно устарел), префиксы "flx_" и "err_" автоматически добавляются к файлам потоков и ошибок. Информация о калибровке длины волны хранится в виде коэффициентов полинома калибровки длины волны в табличной форме в файлах с именем lCWLchipBINXxBINY_2.tbl. Здесь CWL — это центральная длина волны экспозиции, чип — это «_» для настроек синего и «L» или «U» для более синего и красного цветов красных чипов UVES, BINX и BINY — это спектральные и пространственные коэффициенты биннинга ПЗС. Например, l390_2x2_2.tbl, l580L1x1_2.tbl и l580U1x1_2.tbl. Эти файлы должны быть преобразованы в формат FITS внутри конвейера и иметь то же имя, что и файлы «fxb_», но с заменой «fxb_» на «wpol_». Если вы использовали UVES_headsort для сортировки необработанных спектров UVES и написания сценариев сокращения MIDAS, то приведенные выше соглашения об именах автоматически создаются с помощью сценариев сокращения.
Если вы использовали современный конвейер CPL UVES напрямую с подпрограммами ESOREX, вам нужно будет добавить флаг "--debug" в команду "uves_obs_scired". Это создаст требуемый файл потока «fxb_» и связанный с ним файл ошибок «errfxb_». Последний должен быть переименован, чтобы иметь «err_» в качестве префикса. Если вы использовали UVES_headsort для сортировки необработанных спектров UVES и написания сценариев сокращения CPL, то приведенные выше соглашения об именах автоматически создаются с помощью сценариев сокращения.
-
Скорость ниже ля, где красный конт. посадка начинается [км/с]. Используйте красное смещение объекта, введенного в UVES_popler, чтобы вычислить прогнозируемую наблюдаемую длину волны эмиссионной линии Lya, w_Lya, а затем выберите длину волны, на которой вы хотите, чтобы континуум Lya остановился и начался красный континуум, w_red. Значение vlya = c*(1-w_red/w_Lya) — это значение для ввода в UVES_popler. Обратите внимание, что иногда между линией Lya и линиями CIV или SiIV, которые чаще используются для определения эмиссионного красного смещения квазаров, могут быть весьма существенные сдвиги.
6. Руководство пользователя:
6.2 Очистка космических лучей в начальном порядке: для каждого порядка, который считывается, вдоль него скользит (nordclip)-пиксельное окно, и среднее значение и дисперсия пикселей в окне (без учета максимального значения nordclip) пиксель потока). Тогда, если средний пиксель больше, чем (ordsig)-сигма [т.е. sqrt(дисперсия)] выше среднего, то он рассматривается как космический луч и удаляется. Кроме того, если пиксель непосредственно слева от удаленного пикселя больше, чем (ordsignbr)-сигма выше среднего, то он также удаляется. То же самое относится и к пикселю справа от первого удаленного пикселя.
Отображает список файлов и подкаталогов каталога. При использовании без параметров эта команда отображает метку тома и серийный номер диска, а затем список каталогов и файлов на диске (включая их имена, а также дату и время последнего изменения каждого из них). Для файлов эта команда отображает расширение имени и размер в байтах.Эта команда также отображает общее количество перечисленных файлов и каталогов, их совокупный размер и свободное место (в байтах), оставшееся на диске.
Команду dir также можно запустить из консоли восстановления Windows с другими параметрами. Дополнительные сведения см. в разделе Среда восстановления Windows (WinRE).
Синтаксис
Параметры
Примечания
Чтобы использовать несколько параметров filename, разделяйте каждое имя файла пробелом, запятой или точкой с запятой.
Вы можете использовать подстановочные знаки (* или ?) для представления одного или нескольких символов имени файла и для отображения подмножества файлов или подкаталогов.
Вы можете использовать подстановочный знак * для замены любой строки символов, например:
dir *.txt перечисляет все файлы в текущем каталоге с расширениями, начинающимися с .txt, например .txt, .txt1, .txt_old.
dir read *.txt перечисляет все файлы в текущем каталоге, имена которых начинаются с read и расширения которых начинаются с .txt, например .txt, .txt1 или .txt_old.
dir read *.* перечисляет все файлы в текущем каталоге, которые начинаются с read с любым расширением.
Подстановочный знак звездочки всегда использует сопоставление коротких имен файлов, поэтому вы можете получить неожиданные результаты. Например, следующий каталог содержит два файла (t.txt2 и t97.txt):
Вы можете ожидать, что при вводе dir t97\* будет возвращен файл t97.txt. Однако если ввести dir t97\*, будут возвращены оба файла, поскольку подстановочный знак звездочки сопоставляет файл t.txt2 с t97.txt, используя его карту коротких имен T97B4~1.TXT. Аналогично, если ввести del t97\*, то оба файла будут удалены.
Можно использовать вопросительный знак (?) вместо одного символа в имени. Например, набрав dir read. txt перечисляет все файлы в текущем каталоге с расширением .txt, которые начинаются с чтения и за которыми следует до трех символов. Сюда входят файлы Read.txt, Read1.txt, Read12.txt, Read123.txt и Readme1.txt, но не файлы Readme12.txt.
Если вы используете /a с более чем одним значением в атрибутах, эта команда отображает имена только тех файлов со всеми указанными атрибутами. Например, если вы используете /a с r и -h в качестве атрибутов (используя либо /a:rh, либо /ar-h ), эта команда отобразит только имена файлов только для чтения, которые не скрыты.< /p>
Если вы укажете более одного значения sortorder, эта команда сортирует имена файлов по первому критерию, затем по второму критерию и так далее. Например, если вы используете /o с параметрами e и -s для порядка сортировки (используя либо /o:es, либо /oe-s ), эта команда сортирует имена каталогов и файлов по расширению. , начиная с наибольшего, а затем отображает окончательный результат. Алфавитная сортировка по расширению приводит к тому, что сначала отображаются имена файлов без расширений, затем имена каталогов, а затем имена файлов с расширениями.
Если вы используете символ перенаправления ( > ) для отправки вывода этой команды в файл или если вы используете канал ( | ) для отправки вывода этой команды другой команде, вы должны использовать /a:-d и /b только список имен файлов. Вы можете использовать имя файла с параметрами /b и /s, чтобы указать, что эта команда предназначена для поиска в текущем каталоге и его подкаталогах всех имен файлов, которые соответствуют имя файла. Эта команда выводит только букву диска, имя каталога, имя файла и расширение имени файла (по одному пути в строке) для каждого найденного имени файла. Прежде чем использовать конвейер для отправки вывода этой команды другой команде, необходимо установить переменную среды TEMP в файле Autoexec.nt.
Примеры
Чтобы отобразить все каталоги один за другим, в алфавитном порядке, в широком формате и с паузой после каждого экрана, убедитесь, что текущий каталог является корневым, а затем введите:
В выходных данных перечислены корневой каталог, подкаталоги и файлы в корневом каталоге, включая расширения. Эта команда также выводит список имен подкаталогов и имен файлов в каждом подкаталоге дерева.
Чтобы изменить предыдущий пример так, чтобы в каталоге отображались имена и расширения файлов, но опускались имена каталогов, введите:
Чтобы распечатать список каталогов, введите:
Когда вы указываете prn, список каталогов отправляется на принтер, подключенный к порту LPT1. Если ваш принтер подключен к другому порту, вы должны заменить prn именем правильного порта.
Вы также можете перенаправить вывод команды dir в файл, заменив prn именем файла. Вы также можете ввести путь. Например, чтобы направить вывод каталога в файл dir.doc в каталоге Records, введите:
Если каталог dir.doc не существует, каталог dir создает его, если только каталог Records не существует. В этом случае появится следующее сообщение:
Чтобы отобразить список всех имен файлов с расширением .txt во всех каталогах на диске C, введите:
Команда dir отображает в широком формате алфавитный список совпадающих имен файлов в каждом каталоге и приостанавливается при каждом заполнении экрана до тех пор, пока вы не нажмете любую клавишу для продолжения.
Sigma – это открытый стандарт для правил, позволяющих описывать поиск по данным журнала в универсальной форме. Эти правила можно преобразовать и применить ко многим системам управления журналами или SIEM и даже использовать с grep в командной строке.
В этой статье я хотел бы дать вам краткое практическое введение в процесс создания правил. Я порекомендую некоторые инструменты и набросаю руководство, которое поможет вам писать правила Sigma максимально быстро и надежно.
1. Получить репозиторий
Сначала загрузите или клонируйте наш репозиторий Sigma с Github.
Он содержит базу правил в папке «./rules» и компилятор правил Sigma «./tools/sigmac». Мы будем использовать существующие правила в качестве примеров и создадим новое правило на основе аналогичного существующего. Затем мы проверим это правило с помощью «sigmac».
Репозиторий Sigma на Github
2. Копировать и редактировать файлы YAML
Мой любимый редактор для YAML — VSCode. Он бесплатный и работает на всех основных платформах. (в качестве альтернативы вы можете использовать Atom с пакетами «language-yaml» и «linter-js-yaml»)
Код Visual Studio
Я использовал следующие расширения, но не знаю, нужны ли они. VSCode значительно улучшился за последние 12 месяцев, и, возможно, теперь он поддерживает подсветку YAML и проверку синтаксиса по умолчанию.
Расширения YAML для VSCode
Открываем папку репозитория Sigma кнопкой «Открыть…» и видим все существующие правила.
3. Создайте правило сигмы
Я выбрал пример, в котором мы создадим правило сигмы, на основе одного из выводов @JPCERT в их замечательном «Листе результатов анализа инструментов».
Мы открываем результаты для «Quarks PWDump», дампера паролей, часто используемого китайскими группами угроз. Он создает временные файлы, которые мы хотим обнаружить в наших данных журнала SysInternals Sysmon. Для сбора необходимых событий мы используем Sysmon с конфигурационным файлом Sysmon @SwiftOnSecurity, пересылкой событий Windows или NXlog.
Результаты анализа PWDump кварков
Итак, мы находим правило Sigma в репозитории, которое мы можем использовать в качестве шаблона для нашего нового правила. Мы используем функцию «поиск», чтобы найти правило, которое ищет события «Создание файла» (EventID 11) в данных журнала Sysmon.
Пример правила сигмы
Мы находим правило, имеющее особый формат. Это так называемая «коллекция правил», которая позволяет нам определить глобальный раздел в файле YAML, помеченный «action: global», который будет применяться ко всем другим разделам в этом файле в процессе генерации поискового запроса. Таким образом, вы можете определить и создать несколько поисковых запросов из одного файла YAML.
В случае с нашим примером QuarksPwDump нам не нужна коллекция правил, поэтому мы сокращаем правило до стандартного правила, которое содержит выражение обнаружения, просматривающее события Sysmon с идентификатором события 11, и сохраняем его как «sysmon_quarkspw_filedump.yml» в новый файл в папке «./rules/windows/sysmon/».
Простое правило Sysmon Sigma
После этого мы изменяем несколько полей этого правила:
Заголовок нового правила Sigma
Прежде чем создать новый раздел «обнаружение», мы подробно просматриваем аналитический отчет.
Подробности: временные файлы QuarksPwDump
Мы добавляем строку с подстановочными знаками, которая совпадает с полем TargetFileName в событиях Sysmon типа 11. Вот как выглядит новое правило:
Сигма-правило QuarksPwDump
4. Проверить правила
Мы тестируем наше недавно созданное правило с помощью «sigmac», для которого требуется python3. Он находится в папке «./tools». Он имеет несколько целей, для которых мы можем создавать поиски/конфигурации из наших правил.
Поддерживаемые в настоящее время цели (10.02.2018):
Запуск «python3 sigmac -h» показывает справку:
$ python3 sigmac -h
использование: sigmac [-h] [--recurse] [--filter FILTER]
[--target ]
[--target-list] [--config CONFIG] [--output OUTPUT]
[--backend-option BACKEND_OPTION] [--defer-abort]
[--ignore-not-implemented] [--verbose] [ --debug]
[входы [входы . ]]
Преобразование правил Sigma в подписи SIEM.
позиционные аргументы:
вводит входные файлы Sigma
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти
--recurse, -r Рекурсия в подкаталоги (еще не реализовано)
--filter FILTER, - f ФИЛЬТР
Определите фильтры, разделенные запятыми, которые должны соответствовать (И-
связаны) с правилом для обработки. Допустимые фильтры:
level=x, level=x, status=y, logsource=z. x
является одним из: низкий, средний, высокий, критический. y является одним из:
экспериментальный, тестовый, стабильный. z — это слово,
появляющееся в произвольном атрибуте источника журнала. Спецификации нескольких журналов
источников связаны по И.
--target , -t
Выходной целевой формат
--target-list, -l Список доступных выходных целевых форматов
--config CONFIG, -c CONFIG
Конфигурация с именем поля и отображением индекса для
целевой среды (еще не реализовано)
--output OUTPUT, -o OUTPUT
Вывод файла или префикс имени файла, если
сгенерировано несколько файлов ( еще не реализовано)
--backend-option BACKEND_OPTION, -O BACKEND_OPTION
Параметры и переключатели, которые передаются серверной части
--defer-abort, -d Не прерывать синтаксический анализ или ошибки преобразования, приступайте
к следующему правилу. Код выхода из последней ошибки
возвращается
--ignore-not-implemented, -I
возвращает только коды ошибок для ошибок синтаксического анализа и игнорирует
ошибки для правил с не реализованными features
--verbose, -v Быть подробным
--debug, -D Отладочный вывод
Мы тестируем наше новое правило с помощью «sigmac» и целевого «splunk».
$ python3 sigmac -t splunk ../rules/windows/sysmon/sysmon_quarkspw_filedump.yml
( EventID = "11" TargetFileName = "*\AppData\Local \T emp\SAM-*.dmp*" )
Теперь правило готово для запроса на вытягивание. Подпишитесь на меня или свяжитесь со мной в Твиттере: @cyb3rops
Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Разработчики Windows, работающие с Windows API для ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.
Доступ к данным можно получить с дисков, устройств и общих сетевых ресурсов с помощью API файлового ввода-вывода. Файлы и каталоги, наряду с пространствами имен, являются частью концепции пути, который представляет собой строковое представление того, где можно получить данные, независимо от того, получены ли они с диска, устройства или сетевого подключения для конкретной операции.
Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также следуют соглашениям и правилам именования файлов, как и обычные файлы или каталоги. Дополнительные сведения см. в разделах «Жесткие ссылки и соединения» и «Точки повторной обработки и операции с файлами».
Дополнительную информацию см. в следующих подразделах:
Чтобы узнать, как настроить Windows 10 для поддержки длинных путей к файлам, см. статью Ограничение максимальной длины пути.
Имена файлов и каталогов
Все файловые системы следуют одним и тем же общим соглашениям об именах для отдельных файлов: базовое имя файла и необязательное расширение, разделенные точкой. Однако каждая файловая система, такая как NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь определенные и отличающиеся правила формирования отдельных компонентов пути к каталогу или файлу. Обратите внимание, что каталог — это просто файл со специальным атрибутом, определяющим его как каталог, но в остальном он должен соответствовать тем же правилам именования, что и обычный файл. Поскольку термин каталог просто относится к особому типу файла в том, что касается файловой системы, в некоторых справочных материалах используется общий термин файл для охвата обеих концепций каталогов. и файлы данных как таковые. По этой причине, если не указано иное, любые правила или примеры именования или использования файла также должны применяться к каталогу. Термин путь относится к одному или нескольким каталогам, обратной косой черте и, возможно, имени тома. Дополнительные сведения см. в разделе «Пути».
Ограничения по количеству символов также могут различаться в зависимости от файловой системы и используемого формата префикса имени пути. Это еще более усложняется поддержкой механизмов обратной совместимости. Например, более старая файловая система MS-DOS FAT поддерживает не более 8 символов для основного имени файла и 3 символа для расширения, всего 12 символов, включая разделитель точек. Это обычно известно как имя файла 8.3.Файловые системы Windows FAT и NTFS не ограничены именами файлов версии 8.3, поскольку они имеют поддержку длинных имен файлов, но они по-прежнему поддерживают версию 8.3 длинных имен файлов.
Соглашения об именах
Следующие основные правила позволяют приложениям создавать и обрабатывать допустимые имена для файлов и каталогов независимо от файловой системы:
Используйте точку, чтобы отделить базовое имя файла от расширения в имени каталога или файла.
Используйте обратную косую черту (\) для разделения компонентов пути. Обратная косая черта отделяет имя файла от пути к нему и одно имя каталога от другого имени каталога в пути. Вы не можете использовать обратную косую черту в имени фактического файла или каталога, потому что это зарезервированный символ, который разделяет имена на компоненты.
При необходимости используйте обратную косую черту в имени тома, например, "C:\" в "C:\path\file" или "\\server\share" в "\\server\share\path". \file" для имен универсального соглашения об именах (UNC). Дополнительные сведения об именах UNC см. в разделе «Ограничение максимальной длины пути».
Не предполагайте чувствительность к регистру. Например, считайте имена OSCAR, Oscar и oscar одинаковыми, хотя некоторые файловые системы (например, POSIX-совместимая файловая система) могут считать их разными. Обратите внимание, что NTFS поддерживает семантику POSIX для учета регистра, но это не поведение по умолчанию. Дополнительные сведения см. в разделе CreateFile.
Обозначения томов (буквы дисков) также нечувствительны к регистру. Например, "D:\" и "d:\" относятся к одному и тому же тому.
Используйте любой символ текущей кодовой страницы для имени, включая символы Unicode и символы расширенного набора символов (128–255), за исключением следующих:
Следующие зарезервированные символы:
Целое значение, равное нулю, иногда называемое символом NUL ASCII.
Символы, целочисленные представления которых находятся в диапазоне от 1 до 31, за исключением альтернативных потоков данных, где эти символы разрешены. Дополнительные сведения о файловых потоках см. в разделе Файловые потоки.
Любой другой символ, который не разрешен целевой файловой системой.
Используйте точку в качестве компонента каталога в пути для представления текущего каталога, например ".\temp.txt". Дополнительные сведения см. в разделе Пути.
Используйте две последовательные точки (..) в качестве компонента каталога в пути для представления родительского каталога текущего каталога, например "..\temp.txt". Дополнительные сведения см. в разделе Пути.
Не используйте следующие зарезервированные имена для имени файла:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. Также избегайте этих имен, за которыми сразу следует расширение; например, NUL.txt не рекомендуется. Дополнительные сведения см. в разделе Пространства имен.
Не заканчивайте имя файла или каталога пробелом или точкой. Хотя базовая файловая система может поддерживать такие имена, оболочка Windows и пользовательский интерфейс этого не делают. Однако допустимо указывать точку в качестве первого символа имени. Например, ".temp".
Короткие и длинные имена
Длинным именем файла считается любое имя файла, выходящее за рамки короткого стиля именования MS-DOS (также называемого 8.3). Когда вы создаете длинное имя файла, Windows также может создать короткую форму имени 8.3, называемую псевдонимом 8.3 или коротким именем, и также сохранить ее на диске. Этот псевдоним 8.3 можно отключить по соображениям производительности либо для всей системы, либо для указанного тома, в зависимости от конкретной файловой системы.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: псевдонимы 8.3 нельзя отключить для указанных томов до Windows 7 и Windows Server 2008 R2.
Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое слишком длинно для соответствия правилам именования 8.3.
Не все файловые системы следуют соглашению о замене тильды, и системы можно настроить таким образом, чтобы отключить создание псевдонима 8.3, даже если они обычно его поддерживают. Поэтому не думайте, что псевдоним 8.3 уже существует на диске.
Чтобы запросить имена файлов формата 8.3, длинные имена файлов или полный путь к файлу из системы, рассмотрите следующие варианты:
В более новых файловых системах, таких как NTFS, exFAT, UDFS и FAT32, Windows сохраняет длинные имена файлов на диске в кодировке Юникод, что означает, что исходное длинное имя файла всегда сохраняется. Это верно, даже если длинное имя файла содержит расширенные символы, независимо от кодовой страницы, которая активна во время операции чтения или записи с диска.
Файлы с длинными именами файлов можно копировать между разделами файловой системы NTFS и разделами файловой системы Windows FAT без потери информации об именах файлов. Это может быть не так для более старых файловых систем MS-DOS FAT и некоторых типов файловых систем CDFS (CD-ROM), в зависимости от фактического имени файла. В этом случае по возможности заменяется короткое имя файла.
Пути
Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратной косой чертой), причем каждый компонент обычно представляет собой имя каталога или файла. имя, но с некоторыми заметными исключениями, обсуждаемыми ниже. Часто для интерпретации пути системой очень важно, как выглядит начало или префикс пути. Этот префикс определяет пространство имен, которое использует путь, и, кроме того, какие специальные символы используются в какой позиции пути, включая последний символ.
Если компонент пути является именем файла, он должен быть последним компонентом.
Каждый компонент пути также будет ограничен максимальной длиной, указанной для конкретной файловой системы. В целом, эти правила делятся на две категории: короткие и длинные. Обратите внимание, что имена каталогов хранятся в файловой системе как файлы особого типа, но правила именования файлов также применяются к именам каталогов. Подводя итог, можно сказать, что путь — это просто строковое представление иерархии между всеми каталогами, существующими для определенного файла или имени каталога.
Полный и относительный пути
Для функций Windows API, управляющих файлами, имена файлов часто могут указываться относительно текущего каталога, а для некоторых API требуется полный путь. Имя файла относится к текущему каталогу, если оно не начинается с одного из следующих символов:
Если имя файла начинается только с обозначения диска, но не с обратной косой черты после двоеточия, оно интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть или не быть корневым каталогом в зависимости от того, что он был установлен во время самой последней операции «изменить каталог» на этом диске. Ниже приведены примеры этого формата:
Путь также считается относительным, если он содержит "двойные точки"; то есть два периода вместе в одном компоненте пути. Этот специальный спецификатор используется для обозначения каталога над текущим каталогом, также известного как «родительский каталог». Ниже приведены примеры этого формата:
Относительные пути могут сочетать оба типа примеров, например "C.\tmp.txt". Это полезно, потому что, хотя система отслеживает текущий диск вместе с текущим каталогом этого диска, она также отслеживает текущие каталоги в каждой из разных букв диска (если в вашей системе их несколько), независимо от какое обозначение диска установлено в качестве текущего диска.
Ограничение максимальной длины пути
В выпусках Windows до Windows 10 версии 1607 максимальная длина пути — MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows для снятия ограничения требуется изменение раздела реестра или использование инструмента групповой политики. Полную информацию см. в разделе Ограничение максимальной длины пути.
Пространства имен
Существует две основные категории соглашений о пространствах имен, используемых в Windows API, обычно называемых пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано как пространство имен самого низкого уровня, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и, соответственно, пространства имен Win32.POSIX — еще один пример подсистемы Windows, созданной на основе пространства имен NT. Ранние версии Windows также определяли несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как коммуникационные (последовательные и параллельные) порты и консоль дисплея по умолчанию, как часть того, что сейчас называется пространством имен устройств NT, и все еще поддерживаются в текущих версиях. Windows для обратной совместимости.
Пространства имен файлов Win32
В этом и следующем разделах кратко изложены префиксы и соглашения пространства имен Win32 с описанием их использования. Обратите внимание, что эти примеры предназначены для использования с функциями Windows API, и не все они обязательно работают с приложениями оболочки Windows, такими как проводник Windows. По этой причине существует более широкий диапазон возможных путей, чем обычно доступно из приложений оболочки Windows, и приложения Windows, которые используют это преимущество, могут быть разработаны с использованием этих соглашений о пространстве имен.
При файловом вводе-выводе префикс "\\?\" к строке пути указывает API-интерфейсам Windows отключить всю строку синтаксического анализа и отправить строку, следующую за ней, прямо в файловую систему. Например, если файловая система поддерживает большие пути и имена файлов, вы можете превысить ограничения MAX_PATH, которые в противном случае применяются API-интерфейсами Windows. Дополнительные сведения об обычном ограничении максимального пути см. в предыдущем разделе Ограничение максимальной длины пути.
Поскольку он отключает автоматическое расширение строки пути, префикс "\\?\" также позволяет использовать ".." и "." в именах путей, что может быть полезно, если вы пытаетесь выполнить операции с файлом с этими в противном случае зарезервированными спецификаторами относительного пути как части полного пути.
Многие, но не все API файлового ввода-вывода поддерживают "\\?\"; вы должны посмотреть справочную тему для каждого API, чтобы быть уверенным.
Обратите внимание, что следует использовать API Unicode, чтобы убедиться, что префикс "\\?\" позволяет превысить MAX_PATH
Пространства имен устройств Win32
Префикс "\\.\" будет обращаться к пространству имен устройств Win32, а не к пространству имен файлов Win32. Так осуществляется доступ к физическим дискам и томам напрямую, минуя файловую систему, если API поддерживает такой тип доступа. Таким образом вы можете получить доступ ко многим устройствам, кроме дисков (например, с помощью функций CreateFile и DefineDosDevice).
Например, если вы хотите открыть последовательный порт 1 системы, вы можете использовать "COM1" в вызове функции CreateFile. Это работает, потому что COM1–COM9 являются частью зарезервированных имен в пространстве имен NT, хотя использование префикса «\\.\» также будет работать с этими именами устройств. Для сравнения, если у вас установлена плата последовательного расширения на 100 портов и вы хотите открыть COM56, вы не сможете открыть ее с помощью «COM56», поскольку для COM56 нет предопределенного пространства имен NT. Вам нужно будет открыть его с помощью "\\.\COM56", потому что "\\.\" переходит непосредственно к пространству имен устройства, не пытаясь найти предопределенный псевдоним.
Другим примером использования пространства имен устройств Win32 является использование функции CreateFile с "\\.\PhysicalDiskX" (где X – допустимое целочисленное значение) или " \\.\CdRomX". Это позволяет вам обращаться к этим устройствам напрямую, минуя файловую систему. Это работает, потому что эти имена устройств создаются системой по мере перечисления этих устройств, а некоторые драйверы также создают другие псевдонимы в системе. Например, драйвер устройства, реализующий имя "C:\", имеет собственное пространство имен, которое также является файловой системой.
API, использующие функцию CreateFile, обычно работают с префиксом "\\.\", поскольку функция CreateFile используется для открытия как файлов, так и устройств, в зависимости от используемых вами параметров.
Если вы работаете с функциями Windows API, вы должны использовать префикс "\\.\" для доступа только к устройствам, а не к файлам.
Большинство API не поддерживают "\\.\"; только те, которые предназначены для работы с пространством имен устройства, распознают его. Всегда проверяйте справочную тему для каждого API, чтобы быть уверенным.
Пространства имен NT
Есть также API, которые позволяют использовать соглашение о пространстве имен NT, но диспетчер объектов Windows в большинстве случаев делает это ненужным. Для иллюстрации полезно просматривать пространства имен Windows в обозревателе системных объектов с помощью инструмента Windows Sysinternals WinObj. Когда вы запускаете этот инструмент, вы видите пространство имен NT, начинающееся с корня, или "\". Подпапка под названием "Global??" где находится пространство имен Win32. Объекты именованных устройств находятся в пространстве имен NT в подкаталоге «Device». Здесь вы также можете найти Serial0 и Serial1, объекты устройства, представляющие первые два COM-порта, если они есть в вашей системе. Объект устройства, представляющий том, может иметь вид HarddiskVolume1, хотя числовой индекс может отличаться. Имя «DR0» в подкаталоге «Harddisk0» является примером объекта устройства, представляющего диск, и т. д.
Чтобы сделать эти объекты устройств доступными для приложений Windows, драйверы устройств создают символическую ссылку (символическую ссылку) в пространстве имен Win32 "Global??" на соответствующие объекты устройств. Например, COM0 и COM1 в разделе "Глобальные??" подкаталог — это просто символическая ссылка на Serial0 и Serial1, «C:» — это символическая ссылка на HarddiskVolume1, «Physicaldrive0» — это символическая ссылка на DR0 и так далее. Без символической ссылки указанное устройство «Xxx» не будет доступно ни одному приложению Windows, использующему соглашения о пространстве имен Win32, как описано ранее. Однако дескриптор этого устройства может быть открыт с помощью любых API, поддерживающих абсолютный путь пространства имен NT в формате "\Device\Xxx".
С добавлением многопользовательской поддержки через службы терминалов и виртуальные машины возникла необходимость в виртуализации общесистемного корневого устройства в пространстве имен Win32. Это было достигнуто путем добавления символической ссылки с именем «GLOBALROOT» в пространство имен Win32, которое вы можете увидеть в «Global??» подкаталог инструмента браузера WinObj, который обсуждался ранее, и может получить доступ через путь «\\?\GLOBALROOT». Этот префикс гарантирует, что путь, следующий за ним, соответствует истинному корневому пути диспетчера системных объектов, а не пути, зависящему от сеанса.
В данной статье описывается информационная система SIGMA, реализованная на компьютере в нашем университетском вычислительном центре. Система создает для каждого пользователя пространство MEMO для его личной записной книжки и пространство SIGMA для обмена данными с другими пользователями. Система предполагает в качестве структуры данных только строки символов, поэтому основным методом доступа является линейный поиск. Мы разработали метод линейного поиска общего назначения, называемый однонаправленным последовательным поиском, который широко использует машины сопоставления с образцом. Связь между пользователями и системой автоматически записывается в файлы журнала, которые функционируют как командные процедуры.
Откройте для себя мировые исследования
В текстах на японском языке используется много символов, в отличие от текстов на европейских языках, кана японского алфавита и кандзи китайских букв. По этой причине японские символы в большинстве компьютерных систем представлены 2-байтовым кодом. Во многих случаях обычные 1-байтовые символы используются вместе с 2-байтовыми символами. В этой статье мы обсуждаем алгоритмы сопоставления с образцом для японских текстов, в которых смешаны однобайтовые и двухбайтовые символы. Нам уже удалось реализовать эффективные во время выполнения машины сопоставления с образцом для текстов, состоящих из 1-байтовых символов, путем разделения кодов символов. Мы показываем, что метод разделения кодов символов также применим к машинам сопоставления с образцом для японских текстов.
В этой статье описываются некоторые проблемы индуктивного вывода формальных языков из положительных данных: полиномиальный вывод времени и его применение к практическим задачам, вывод объединений и вывод из отрицательных данных.
Реализации машин сопоставления с образцом Aho-Corasick, которые работают с несколькими ключевыми словами одновременно, изучаются с точки зрения времени выполнения и сложности пространства. Введены новые реализации с помощью кодов разделительных знаков и таблиц переходов, и показана их эффективность. Указывается на компромисс между временем и пространством в таких реализациях. Экспериментальные результаты во время выполнения наших реализаций показаны и сравнены с результатами некоторых других известных методов сопоставления с образцом. Также обсуждаются приложения наших реализаций для сортировки и поиска ключевых слов.
В этой статье описывается простой и эффективный алгоритм поиска всех вхождений любого из конечного числа ключевых слов в текстовой строке. Алгоритм состоит из создания машины сопоставления с образцом с конечным числом состояний из ключевых слов и последующего использования машины сопоставления с образцом для обработки текстовой строки за один проход. Построение машины сопоставления с образцом занимает время, пропорциональное сумме длин ключевых слов. Количество переходов состояний, совершаемых машиной сопоставления с образцом при обработке текстовой строки, не зависит от количества ключевых слов. Алгоритм использовался для повышения скорости программы библиотечного библиографического поиска в 5–10 раз.
Шаблон — это последовательность символов-констант и символов-переменных.Язык $L(p)$ шаблона $p$ представляет собой множество всех строк, полученных путем подстановки любой непустой константной строки для каждого переменного символа в $p$. В этой статье мы рассматриваем вывод из положительных данных для объединений двух языков шаблонов, то есть идентификацию $ L(p) \smile L(q) $, когда задано перечисление элементов в объединении.
Описываются системы одностороннего последовательного поиска, основанные на машинах сопоставления с образцом. Возможности систем оцениваются с точки зрения теории формального языка. Кратко обсуждается их применимость к обработке медицинской информации.
Организация и использование файлов частных исследователей в научно-исследовательских работах, научных информационных системах в
АРИКАВА С., КАНО С., КИТАГАВА Т. и ТАКЕЙЯ С. Организация и использование файлов частных исследователей в научно-исследовательских работах, Научные информационные системы в Японии (под ред. Х. Иносе), Северная Голландия, 43–50, (1981).
ШИНОХАРА, Т. О редакторе TEDIT, Отчет о проекте «Представления знаний и их приложения к информационному поиску», (изд. С. Арикава), (1981), 247–258, (японский).
Рекомендуемые публикации
Интеграция сложных структур данных в Prolog
Технология электронного пера для ноутбука
Принцип работы электронной ручки и программного драйвера обсуждается в связи с ноутбуком, поддерживающим китайские иероглифы. Считается, что перо представляет собой лучший интерфейс человека и машины, который представляет традицию китайской культуры как неотъемлемую часть языка.
Исследование алгоритмов извлечения и сопоставления характеристик отпечатков пальцев
Распознавание отпечатков пальцев играет важную роль в идентификации признаков организма. Автоматическая система идентификации отпечатков пальцев (AFIS) представляет собой технологию, основанную на компьютере или микропроцессоре, обладающую преимуществами удобства и высокой эффективности. Извлечение и сопоставление деталей отпечатков пальцев является необходимым шагом в системе автоматического распознавания отпечатков пальцев. Набор алгоритмов для мелочей. [Показать полный текст] В этой статье предлагается извлечение и сопоставление мелких деталей изображения отпечатка пальца на основе анализа присущих отпечатку пальцев мелких деталей.
Простой показатель качества печати на пишущей машинке
В статье представлен авторский метод оценки формы, адаптированный к оценке качества символов, напечатанных на пишущей машинке. Показанный метод основан на статистическом анализе карты максимальных квадратов (MSM), подробно описанной в статье. Этот метод был разработан для оценки качества компьютерного поиска информации из архивных бумажных документов машинного набора.
Читайте также: