Шпаргалки / Объяснение

Шпаргалка: передавать пути с пробелами и дефисами

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

Начальный6 минОбщие принципы LinuxGNU Coreutils · documented stable optionsBash · pipeline semantics

Когда открыть эту шпаргалку

Пробел в имени не является разделителем файловой системы. Разделение на аргументы выполняет оболочка до запуска утилиты. Вторая независимая проблема возникает у имени, начинающегося с дефиса: программа может принять его за опцию.

Выбор команды

Применяйте защиту на нужном уровне: кавычки управляют разбором Bash, а -- поддерживается конкретной утилитой.

Что выяснитьКоманда или выражениеКак читать результат
Пробелы в буквальном имениls -ld -- './shift notes'Один путь; кавычки не входят в его значение.
Значение переменнойls -ld -- "$target"Двойные кавычки сохраняют аргумент без word splitting и globbing.
Имя с дефисомls -ld -- './-draft'Префикс ./ дополнительно отделяет путь от формы опции.
Показать экранированное значениеprintf '%q\n' "$target"Bash-форма для диагностики; не универсальный формат обмена.
Несколько готовых аргументовprintf '<%s>\n' "$@"Каждая позиция остаётся отдельным аргументом.

Короткая последовательность

Переменная хранит учебное имя каталога. Команда printf показывает строку и её диагностическое представление; создавать каталог для этого не требуется.

Локальная Linux-система
target="./shift notes"
printf 'Имя: <%s>\nBash: %q\n' "$target" "$target"

Проверка вывода

Если вместо одного имени программа получает несколько слов, изучите именно исходную командную строку. Кавычки вокруг переменной должны присутствовать в месте её использования; сохранённые внутри значения символы кавычек не становятся синтаксисом оболочки.

Границы применения

Не все программы понимают --. Для find, например, безопасный начальный путь удобнее задавать через ./ или абсолютное имя. Не превращайте диагностическую строку в команду через eval: исходные значения должны оставаться данными.

Технические источники

Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.

  • Руководство bash(1)
  • Руководство ls(1)
  • Руководство find(1)

Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.

Примеры для собственной Linux-системы с Bash и указанными утилитами. Наличие пакетов и набор опций проверьте в установленной версии; браузерный терминал поддерживает только своё подмножество.

От материала к практике

Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.

Поиск по Linux

Поиск локальный. ↑ ↓ — перейти к результату, Enter — открыть.

Навигация