Перейти к содержимому

Как поставить пробел в командной строке

  • автор:

Пробел в консоли.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Похожие темы

  • Форум SAMBA (2004)
  • Форум 2 sheriff . где нужно пропиать image = kernel_name root = /dev/your_root_partition (2001)
  • Форум kernel panic (2004)
  • Форум sshfs: работа с диском от обычных смертных (2011)
  • Форум OpenBox на Arch’e не хочет использовать ~/.config/openbox/ (2010)
  • Форум Как смонтировать диск для пользователя (2015)
  • Форум Samba (2007)
  • Форум Структура папок и управление файлами (2004)
  • Форум Два простых вопроса (2005)
  • Форум как прописать вход в домен чтоб автоматически при загрузке линуха он входил в домен подо мной? (2012)

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.045 секунд. Запросов: 23.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Как поставить пробел в командной строке

Из программы обращаюсь к командной строке, и в общении возможны пробелы в пути файлов, чем заменить эти пробелы чтобы командная строка их приняла? Пробовал %20, не прокатило.

Crystallon
Посмотреть профиль
Найти ещё сообщения от Crystallon

Trust no one.
Регистрация: 07.04.2009
Сообщений: 6,526

Пути в двойные кавычки.

cd "D:/Documents and settings"

SQUARY PROJECT — НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK — УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Alex Cones
Посмотреть профиль
Найти ещё сообщения от Alex Cones

Пробелы в командной строке Bash

Если аргумент какой-либо команды содержит пробелы (или знаки табуляции) то Bash интерпретирует их как множественные аргументы. Вот, например, команда echo:

$ echo Аргумент содержит пробелы Аргумент содержит пробелы

Но ошибкой будет считать, что команда такая «умная», что в точности воспроизводит введенный текст. Это не так:

$ echo Аргумент содержит пробелы Аргумент содержит пробелы

На самом деле команда интерпретирует любое количество пробелов (и знаков табуляции) как один пробел; а пробел как разделитель между аргументами. Так как по умолчанию команда echo печатает стандартный вывод в одну строку, то и результат будет одинаковым с любым количеством пробелов.

Другие команды по умолчанию печатают свой вывод обработки каждого аргумента с новой строки, например команда printf:

$ printf '%s\n' Аргумент содержит пробелы Аргумент содержит пробелы

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

Как же заставить команду включить пробелы (и знаки табуляции) в свой стандартный вывод? Тут возможны два пути:

1. Маскировка при помощи обратного слэша (\). По-английски называется Escaping, а управляющие символы, начинающиеся с обратного слэша, Escapе-символами (само слово «escapе» переводится как исчезать, скрываться). Вот пример маскировки пробела:

$ echo Аргумент\ \ \ \ содержит\ \ \ \ пробелы Аргумент содержит пробелы $ printf '%s\n' Аргумент\ \ \ содержит\ \ \ пробелы Аргумент содержит пробелы

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

2. Закавычивание. Если заключить аргумент в кавычки, двойные или одинарные, то он всегда будет интерпретирован в качестве единого выражения. Например:

$ echo 'Кавычки спасают пробелы' Кавычки спасают пробелы

Такой же механизм работает и с командами, принимающими имена файлов в качестве аргумента. Имена файлов ведь тоже могут содержать пробелы; для примера создадим файл по имени text file и попытаемся просмотреть его при помощи команды cat:

$ cat text file cat: text: Нет такого файла или каталога cat: file: Нет такого файла или каталога
$ cat text\ file You read text file
$ cat 'text file' You read text file

А интересно, справится ли с этой задачей автозавершение?

$ cat te (TAB) -----> $ cat text\ file

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

Пока мы рассматривали только пробелы внутри аргумента команды. Лишние же пробелы перед командой, между командой и опциями, между опцией и аргументом, как правило, игноририруются. Если только иное поведение специально не оговорено в синтаксисе команды.

$ cat -b text\ file 1 2 You read text file

И, наконец, пробел, поставленный вместо аргумента многих команд, заставляет их принимать стандартный ввод. Например:

$ cat -b (Enter) Тут и сказке (Enter) конец. (Enter)(CTRL+d) 1 Тут и сказке 2 конец.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *