Linux & Shell

Парсер командной строкиУвидеть границы аргументов

Проверяйте токены, порядок каталогов или имена переменных без выполнения команды.

парсер командной строки

Исходный текст

Разобранные элементы

Ввод остаётся в этом браузере. Команды никогда не выполняются.

Параметры ввода

Диалект: общие правила кавычек POSIX sh и Bash. Токены — лексические слова, а не argv при выполнении. Подстановки и операторы shell отклоняются.

До 65 536 единиц UTF-16 и 512 элементов. Список раскрывается по 50 записей.

Результат устарел. Повторите разбор перед экспортом.

Парсер командной строки помогает понять, почему имя файла с пробелами распалось на несколько аргументов или исчез пустой аргумент. Сравните исходный фрагмент со значением после удаления кавычек, прежде чем менять код, который формирует вызов.

Для PATH предусмотрен отдельный список в исходном порядке, а для окружения — перечень имён. Присваивание в shell, само значение PATH и строки NAME=VALUE имеют разный формат. Переключение режима сохраняет введённый текст и не преобразует его автоматически.

Зачем нужен парсер командной строки?

Сначала проверьте границы, затем меняйте исходный текст.

Пустой аргумент остаётся аргументом

Парсер командной строки сохраняет пустые токены из кавычек и соединяет соседние фрагменты. Рядом со значением видны исходный текст и позиция. Незакрытая кавычка вызывает ошибку, а не скрытое исправление команды.

Связанные фрагменты превращаются в отдельные токены, включая пустую рамку.

Удаление повторов без сортировки

В PATH сохраняются написание и порядок элементов. Повтор ссылается на первое вхождение, а пустые позиции остаются видимыми. Удаление и перемещение сначала показываются в предпросмотре; после применения можно один раз восстановить ввод и результат.

Повторная папка удаляется, остальные папки и пустая позиция сохраняют порядок.

Что проверить перед экспортом

01

Выберите формат ввода

Режим команды использует общий для POSIX sh и Bash поднабор правил кавычек. PATH принимает само значение переменной, а список имён — по одной строке NAME=VALUE. Смена режима не подменяет ваш текст примером.

  • Разделитель «точка с запятой» не включает поддержку команд Windows.
02

Посмотрите позиции и пустые элементы

Значения показаны строками JSON, поэтому различимы пробелы, пустые строки и переводы строки. Повторный путь указывает на первое вхождение; одинаковые имена переменных не перезаписываются.

  • Нумерация строк и столбцов начинается с единицы; смещения считают единицы UTF-16.
03

Подтвердите каждую правку

Удаление повторов, перемещение, пример и очистка сначала открывают предпросмотр. Автоматический разбор ждёт 350 мс. Если его выключить, используйте кнопку или Ctrl/Cmd+Enter.

  • После изменения ввода или настройки оба способа экспорта отключаются до нового результата.

Токены, каталоги поиска и имена окружения

Сравнение исходного текста и значения

Одинарные кавычки сохраняют содержимое, двойные удерживают пробелы и следуют ограниченным правилам POSIX для обратной косой черты. Соседние фрагменты объединяются. Значение -1 не объявляется опцией без знания программы.

Порядок элементов PATH

Явно выберите двоеточие или точку с запятой. Список показывает позиции, повторы и пустые элементы. Удаляются только более поздние непустые строки, совпадающие точно. Перемещение меняет две позиции и требует подтверждения.

Только имена переменных

Поддерживаются имена ASCII, необязательный префикс export, пустые строки и комментарии на целую строку. Повторные имена сохраняют позиции. Значения после знака равенства не интерпретируются и не включаются в результат или экспорт JSON.

Полный отчёт при постраничном просмотре

Панель раскрывает по 50 записей, но экспорт всегда содержит весь результат с позициями и ссылками на повторы. При ошибке частично разобранный текст нельзя скопировать как будто он был успешно проверен целиком.

Границы проверки

Токены не равны итоговому argv
Слова вида NAME=value остаются в лексическом списке. Схема опций программы, псевдонимы, встроенные команды и грамматика зарезервированных слов не проверяются. Успешный разбор не гарантирует, что программа примет вызов или найдёт файл.
Нет выполнения и подстановок
Операторы и символы раскрытия без защиты отклоняются. Неэкранированные доллар и обратная кавычка запрещены также внутри двойных кавычек. Переменные, glob, подстановка команд и ANSI-C-кавычки не вычисляются; правильные кавычки или экранирование могут сделать символ буквальным.
Одна логическая команда
Конвейеры, перенаправления, списки команд и незащищённые переводы строки между командами не поддерживаются. Обратная косая черта с LF продолжает строку; LF в конце разрешён. CR в режиме команды вызывает ошибку, а не незаметное преобразование.
Пути не нормализуются
Пробелы не обрезаются, регистр и косые черты не меняются, файловая система не проверяется. /bin и /bin/ различаются. Пустой элемент PATH с двоеточиями обозначает текущий каталог и сохраняется. Кавычки и ссылки на переменные в сыром PATH остаются буквальными.
Перечень имён не проверяет dotenv
Значение переменной считается непрозрачным текстом, даже если кавычки не закрыты. Строка продолжения без NAME= отклоняется. Редактирование значений, раскрытие ссылок и изменение системного окружения требуют другого инструмента.
Ограничения страницы
Допускается 65 536 единиц UTF-16 и 512 элементов. Это ограничения инструмента, а не операционной системы. Команды Windows CRT, cmd и PowerShell, загрузка файлов, поиск исполняемых программ и ссылки с введёнными данными не поддерживаются.

Вопросы: парсер командной строки

Что разделяет аргументы командной строки?

В этом поднаборе незащищённые пробелы и табуляции разделяют слова. Кавычки сохраняют внутренние пробелы, а соседние фрагменты без разделителя соединяются. Здесь показаны лексические токены; итоговый argv может зависеть от дальнейших действий оболочки.

Почему Bash будто добавляет лишние одинарные кавычки?

Отладочный вывод может показывать представление аргумента с кавычками, хотя сами кавычки не входят в его значение. Сравнивайте значение с исходным фрагментом, а не только с визуальной строкой трассировки. Эта страница не запускает Bash и не воспроизводит его отладочный вывод.

Почему argparse не принимает путь с пробелами?

Если путь был разделён ещё оболочкой, программа получит несколько аргументов и может отвергнуть лишние. Проверьте, остался ли путь одним токеном. Затем проверьте схему самого argparse: этот инструмент не знает, какие опции и позиционные аргументы ожидает программа.

Для чего нужна обратная кавычка в shell?

Она может обозначать подстановку вывода команды. Здесь такая подстановка никогда не выполняется, а активная обратная кавычка отклоняется. В одинарных кавычках или при соответствующем экранировании её можно исследовать как обычный символ.

Почему экранирование кавычек в терминале не даёт ожидаемого результата?

Правила зависят от того, находится ли обратная косая черта внутри одинарных, двойных кавычек или вне них. Дополнительный язык, например Perl, может добавить свой уровень разбора. Страница проверяет лишь указанный слой POSIX и не разбирает вложенную программу.

Нужно разобрать ещё один адрес или префикс?

Вернуться к текущему тексту

Откройте парсер командной строки, сравните фрагменты и позиции и экспортируйте отчёт, пока он соответствует текущему вводу.

Команды не выполняются, системное окружение не изменяется.