- ⚕ Как прочитать имя файла с пробелами в Linux
- 1) Создание имени файла с пробелами
- 2) Прочитать файл с пробелами в имени файла
- 3) Создание имени каталога с пробелами
- 4) Переход в каталог с пробелами в имени
- 5) Копирование каталога с пробелами в имени этого каталога
- Как использовать пробелы в именах файлов в Linux
- Прочитать файл с пробелами в имени файла
- Создайте файл с пробелом в имени файла
- Работа с пространством в имени папки
- Как указать имя файла с пробелами в Linux
- Как получить доступ к файлам/каталогам в терминале с пробелами в имени:
- Как создать файл и каталог с пробелом в имени:
- Как прочитать файл с пробелом в имени:
- Как получить доступ к каталогу, в названии которого есть пробел:
- Как получить доступ к двум или более файлам/каталогам с пробелами в их именах:
- Заключение:
- Пробелы в командной строке Bash
- Как запустить файл с пробелом в имени??
⚕ Как прочитать имя файла с пробелами в Linux
В Linux не очень часто обрабатывают имя файла с пробелами, но иногда файлы, скопированные или смонтированные из Windows, могут заканчиваться пробелами.
Хотя не рекомендуется иметь имена файлов с пробелами, давайте обсудим, как управлять именем файла с пробелами в системе Linux.
Мы расскажем, как создать, прочитать и скопировать файл с пробелами в имени файла.
1) Создание имени файла с пробелами
Чтобы создать файлы с пробелами в именах, выполните команду, как показано далее:
Например, чтобы создать файл с именем «itisgood docs», используйте следующий синтаксис
Если вы хотите просмотреть такой файл с пробелом в имени файла, используйте тот же принцип включения имен файлов в кавычки.
2) Прочитать файл с пробелами в имени файла
Вы можете использовать команду «cat» или открыть документ, используя текстовый редактор, например, vim, nano или gedit.
Кроме того, вы можете использовать синтаксис ниже:
Давайте добавим текст в файл ‘itisgood docs’
Для просмотра файла выполните команду ниже:
3) Создание имени каталога с пробелами
Для создания имен каталогов с пробелом между ними используйте синтаксис ниже
Обратите внимание на пробел после обратной косой черты
Например, чтобы создать каталог с именем «itisgood files», запустите
4) Переход в каталог с пробелами в имени
Чтобы перейти к каталогу с пробелами в имени, используйте следующий синтаксис
Чтобы перейти в каталог «itisgood files», выполните команду ниже
5) Копирование каталога с пробелами в имени этого каталога
Чтобы скопировать каталог с пробелами в его имени в другое место, используйте синтаксис ниже
Например, чтобы скопировать “itisgood files” в /home/james, выполните:
Надеюсь, что эта статья хорошо объяснила, как управлять файлами и каталогами с пробелами в имени.
Спасибо, что нашли время, чтобы прочитать эту статью и, пожалуйста, оставьте свои комментарии. ?
Источник
Как использовать пробелы в именах файлов в Linux
Главное меню » Linux » Как использовать пробелы в именах файлов в Linux
Вы заметите, что файлы в Linux обычно не содержат имен. Ваш учитель или коллега использует подчеркивание вместо пробелов в именах файлов и каталогов.
Дело не в том, что вы не можете использовать пробелы в именах файлов в терминале Linux. Просто это создает дополнительную боль, и поэтому вам следует по возможности избегать ее.
Почему? Позвольте мне показать это на примерах. Вы знаете общий синтаксис команд Linux:
Здесь аргументы разделены пробелами. Если вы попытаетесь использовать имена файлов с пробелами напрямую, это будет рассматриваться как отдельные аргументы, а не как один аргумент.
На приведенном выше снимке экрана, когда я пытаюсь использовать cat agatha booksкоманду, она не понимает, что agatha booksэто единственный аргумент. Он рассматривает agathaи booksкак разные имена файлов.
Как же тогда поступать с пробелами в имени файла? Есть два пути:
Заключите все имя файла в кавычки:
Выходите из каждого пробела, используя клавишу обратной косой черты:
Прочитать файл с пробелами в имени файла
Чтобы использовать имя файла с пробелами, вы можете заключить его в кавычки, например:
Вы также можете избежать каждого пробела с помощью обратной косой черты, но это больше работы и больше запутывает, чем предыдущий метод:
Обычно вы ставите \перед каждым пробелом в имени файла.
Вы также можете использовать одинарные кавычки вместо двойных кавычек.
Создайте файл с пробелом в имени файла
Теперь вам нужно ввести пробел в терминале, чтобы создать здесь имя файла. Снова используйте обратную косую черту или кавычки.
Как и в предыдущем разделе, вы можете создавать новые файлы с пробелами в имени файла, используя кавычки:
Или обратная косая черта:
Работа с пространством в имени папки
Вы можете создать каталог с пробелом в его имени так же, как создаете файл.
Теперь, если вы хотите переключиться в этот каталог, у вас будет путь с пробелами.
Но для вас это больше не должно быть проблемой. Чтобы перейти в каталог с пробелом, снова используйте кавычки или обратную косую черту.
Обычно, когда вам приходится иметь дело с пробелами в именах, вы используете кавычки или обратную косую черту.
Предположим, вам нужно скопировать файл my fileиз этого new dir. Вот что вы можете сделать:
Теперь это начинает немного сбивать с толку, правда? Есть обратная и прямая косая черта. Это может напугать нового пользователя или даже опытного, если таких косых черт будет слишком много.
Это становится еще более беспорядочным, когда в имени файла есть обратная косая черта. Тогда вы увидите двойные фартуки.
Это причина, по которой вам следует избегать использования пробелов или других специальных символов в именах файлов. Чтобы разделить слова в имени файла, используйте подчеркивание.
Это упрощает чтение имен файлов, и вам не придется прилагать дополнительных усилий для устранения этих пробелов в именах файлов.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как указать имя файла с пробелами в Linux
Главное меню » Linux » Как указать имя файла с пробелами в Linux
Различные причины удерживают нового пользователя Linux подальше от командной строки, одна из которых обрабатывает файлы в терминале. Файлы и каталоги в Linux могут иметь разные имена, а в некоторых именах могут быть «пробелы». Так в чем же дело? Проблема в том, что терминал по- разному читает «пробел»; например, если ваш каталог имеет имя «new folder», терминал примет два разных каталога, то есть «new» и «folder». Доступ к таким файлам в терминале может стать очень неприятным. К счастью, существуют различные методы работы с файлами/папками, в именах которых есть пробелы.
В этой статье основное внимание уделяется тому, как ссылаться на имя файла с пробелами в Linux с помощью различных подходов. Итак, начнем:
Как получить доступ к файлам/каталогам в терминале с пробелами в имени:
В этом разделе мы сначала создадим файл с пробелом в его имени; Затем мы узнаем, с какими ошибками мы сталкиваемся при обращении к нему, а затем как правильно получить к нему доступ в терминале:
Как создать файл и каталог с пробелом в имени:
Создать файл в Linux с пробелом в имени очень просто, откройте терминал и выполните команду, указанную ниже:
Файл может быть создан с использованием апострофов или кавычек. Процедура создания каталога очень похожа:
Вы можете проверить это с помощью команды «ls» в терминале.
Как прочитать файл с пробелом в имени:
Прежде чем мы узнаем, как правильно читать файл с пробелом в имени, давайте определим ошибку, которую он может дать. Поэтому, когда вы попытаетесь прочитать созданный выше файл (my file), вы получите сообщение об ошибке:
Теперь посмотрим, что происходит, когда вы пытаетесь что-то записать в файл:
Как видно, приведенная выше команда вместо записи «my file» создает новый файл с именем «my» и сохраняет в него текст. Итак, как получить доступ к такому файлу? Что ж, есть два подхода:
- Использование escape-символа, например “\ ”
- Использование апострофов или кавычек
Итак, прежде всего, давайте вставим текст в созданный выше файл, используя ;“\ ”:
Чтобы прочитать это, используйте:
Теперь, чтобы прочитать это, используйте:
Как получить доступ к каталогу, в названии которого есть пробел:
При работе в терминале доступ к другому каталогу является одной из распространенных задач. Поэтому, когда вы пытаетесь получить доступ к каталогу с пробелом в его имени, он выдаст ошибку:
Это становится сложной задачей, особенно при доступе к пути, в имени которого есть папка с пробелом. Итак, самый простой способ – использовать апострофы, кавычки или escape-символ (\).
Вы также можете использовать обратную косую черту «\»:
Как получить доступ к двум или более файлам/каталогам с пробелами в их именах:
Чтобы получить доступ к нескольким файлам/каталогам, вы можете использовать апострофы отдельно для каждого имени файла / каталога или применять апострофы ко всему пути. Давайте разберемся с этим на примере:
В этой команде, мы копируем файл «my file» из каталога «my dir» в папку «files». В первой команде мы использовали апострофы отдельно, а во второй команде я использовал их для всего пути, оба будут выполнять одну и ту же работу, но последнее было бы намного легче запомнить.
Заключение:
Доступ к файлу/каталогу в терминале с пробелом в его имени звучит как простая работа, пока вы не получите ошибку, особенно при изменении каталога или копировании файлов по пути. Есть два основных способа работы с такими файлами или каталогами; в одном используются escape-символы, т. е. обратная косая черта (\ ) , а во втором – апострофы или кавычки. Использование обратной косой черты может сбивать с толку; проще и лучше использовать кавычки или апострофы. Нажатие «вкладки» – еще один быстрый способ автозаполнения пути во время работы в терминале.
Источник
Пробелы в командной строке Bash
Если аргумент какой-либо команды содержит пробелы (или знаки табуляции) то Bash интерпретирует их как множественные аргументы. Вот, например, команда echo:
Но ошибкой будет считать, что команда такая «умная», что в точности воспроизводит введенный текст. Это не так:
На самом деле команда интерпретирует любое количество пробелов (и знаков табуляции) как один пробел; а пробел как разделитель между аргументами. Так как по умолчанию команда echo печатает стандартный вывод в одну строку, то и результат будет одинаковым с любым количеством пробелов.
Другие команды по умолчанию печатают свой вывод обработки каждого аргумента с новой строки, например команда printf:
Тут уж сразу видно, что команда обрабатывала не фразу, а каждое слово как отдельный аргумент.
Как же заставить команду включить пробелы (и знаки табуляции) в свой стандартный вывод? Тут возможны два пути:
1. Маскировка при помощи обратного слэша (\). По-английски называется Escaping, а управляющие символы, начинающиеся с обратного слэша, Escapе-символами (само слово «escapе» переводится как исчезать, скрываться). Вот пример маскировки пробела:
Механизм такой маскировки прост: при помощи специального символа, обратного слэша, мы лишили пробела его значения как разделителя между аргументами, и теперь он интерпретируется Bash только как часть текста.
2. Закавычивание. Если заключить аргумент в кавычки, двойные или одинарные, то он всегда будет интерпретирован в качестве единого выражения. Например:
Такой же механизм работает и с командами, принимающими имена файлов в качестве аргумента. Имена файлов ведь тоже могут содержать пробелы; для примера создадим файл по имени text file и попытаемся просмотреть его при помощи команды cat:
А интересно, справится ли с этой задачей автозавершение?
Автозавершение выбрало вариант маскировки. Это не удивительно, ведь маскировать приходится не только пробелы, но и управляющие символы, с которыми кавычки не справятся.
Пока мы рассматривали только пробелы внутри аргумента команды. Лишние же пробелы перед командой, между командой и опциями, между опцией и аргументом, как правило, игноририруются. Если только иное поведение специально не оговорено в синтаксисе команды.
И, наконец, пробел, поставленный вместо аргумента многих команд, заставляет их принимать стандартный ввод. Например:
Источник
Как запустить файл с пробелом в имени??
Запускаю файл, имеющий путь «/home/kalina/Рабочий стол/. » с помощью команды subprocess.Popen
Ничего не работает, так как есть пробел названии директории. Что можно сделать.
а если экранировать «/home/kalina/Рабочий\ стол/.»?
Путь до файла определяется программно при выборе пользователем файла. Этот файл может лежать где угодно, и директорий с такими именами (с пробелом) в адресе до файла может быть сколь угодно.и поэтому я не могу вставлять пробел. И вот как быть??
Не нужно ничего для popen экранировать, наркоманов можешь не слушать. Из терминал скрипт по этому пути запускается?
Разумеется, нужно, аргумент к popen() передаётся шеллу.
ТС, юзай двойные кавычки вокруг пути запускаемого файла (и предварительно заменяй двойные кавычки внутри самого пути на \» ).
Нет, не запускается. Пишет ошибку, вот —
fileName::stripInvalid() called for invalid fileName /home/kalina/Рабочийстол/Тестовый_пример
Он зараза, объединяет Рабочийстол и все. В любом случае объединяет, так как нсть пробел
Покажи-ка этот участок кода.
И с двойными кавычками все равно объединяет слова
А, у вас в питоне велосипедный popen. Сорян, я думал, это обёртка над popen(3).
Вот я даже просто написал dir = «/home/kalina/Рабочий стол/Тестовый_пример»
и все равно объединяет
Он должен перейти в каталог fdi, а вместо этого объединяет Рабочийстол и пишет, что такого файла нет((( естественно его нет. какого фига объединять, я ведь явно указал полный путь.
А зачем ты запускаешь шелл, и тем более два раза? Убедись что в SOLVER_BASH прописан shebang и пробуй:
Если ты хочешь правильно обрабатывать сложные случаи (как, например, пробелы и кавычки в аргументах), не делай shell=True. В этом случае делается так: в первый аргумент subprocess.Popen засовывается массив строк, первая — путь к исполняемому файлу, а каждая следующая — его аргументы. В твоем случае это выглядело бы как-то так:
Я не уверен насчет cwd и пути с пробелом, но это не должно быть проблемой, т. к. передается отдельной строкой. Вероятно, ошибка где-то у тебя в коде.
Источник