Пробел в пути linux

Содержание
  1. Shell Script как передать путь с пробелами?
  2. Как использовать пробелы в именах файлов в Linux
  3. Прочитать файл с пробелами в имени файла
  4. Создайте файл с пробелом в имени файла
  5. Работа с пространством в имени папки
  6. 🐧 Работа с именами файлов с пробелами в системах Linux
  7. Как создать файл с пробелами в имени на Linux
  8. Как ссылаться на имя файла с пробелами на Linux
  9. Удаление файлов с пробелами в имени на Linux
  10. Заключение
  11. You may also like
  12. 📜 Чтение файла построчно на Bash
  13. 📧 В чем разница между IMAP и POP3
  14. ✔️ Как управлять контейнерами LXD от имени обычного.
  15. 📜 Руководство для начинающих по созданию первого пакета.
  16. Феноменальная популярность электроники Xiaomi: основные причины
  17. 📜 Получение вчерашней даты в Bash: Практическое руководство
  18. Использование специальных гелей при мышечных болях
  19. 📦 Как расширить/увеличить файловую систему VxFS на Linux
  20. Услуги по размещению серверного оборудования в ЦОД
  21. Для чего выполняется ИТ консалтинг на предприятиях?
  22. 3 комментария
  23. Leave a Comment Cancel Reply
  24. • Свежие записи
  25. • Категории
  26. • Теги
  27. • itsecforu.ru
  28. • Страны посетителей
  29. IT is good

Shell Script как передать путь с пробелами?

Столкнулся с проблемой, не могу передать программе путь к файлу, в котором содержаться пробелы и другие символы, которые обычно экранируются слэшем.
Например скрипт:

NEWDIR="Test Dir" mkdir "$" cd "$" pwd

Тут всё отлично, создаётся каталог с пробелом, и выполняется переход в него.
А теперь другой пример, который не работает, есть файлы допустим «my music.flac» и «my music.cue»
Мне нужно передать их скрипту и обработать несколькими программами, пишу примитивный скрипт, который покажет что я ему передал, и попытается передать это первой программе для обработки:

echo "$ - $" shntool split -f "$" -o "$"

Выполняю:
«$ test.sh ./my\ music.cue ./my\ music.flac»
Получаю:
./my music.cue — ./my music.flac
shntool [split]: error: invalid file format: [./my]
В итоге, программа получает только «my» до пробела..
Гуглил кучу манов по bash-у.. ничего путного не нашёл.

призвана запустить файл bla-bla-bla как исполняемый . Если вы хотите просто передать этот файл как параметр к скрипту или программе «./» не нужно . Т.е. в данном случае должно быть как-то так :

~$ test.sh my\ music.cue my\ music.flac 
~$ test.sh 'my music.cue' 'my music.flac' 

Ты напутал. После -o указывается ФОРМАТ получаемого файла. Вот так всё работает:

#!/bin/sh shnsplit -f "$1" "$2" -o flac 

Ну или, если хочешь формат тоже указывать, то

./test.sh my\ music.cue my\ music.flac flac

«./test.sh «my music.cue» «my music.ape» wav

Дальше сам разберёшься, думаю.

призвана запустить файл bla-bla-bla как исполняемый .

Чушь собачья. Эта форма — относительный путь к файлу.

> Эта форма — относительный путь к файлу.

ну да , а если этот файл передаётся как параметр эта форма не нужна , максимум можно указать абсолютный путь , а вот «./файл-как-параметр» это и есть чушь собачья ..

Ты дурачок? Нужна или не нужна это третий вопрос. Главное — это абсолютно легитимная форма записи пути к файлу.

Просто началась неделя знатоков на лоре. Следующий коммент будет из серии «проще на сях накатать»

Psych218
Нет, я не напутал, я просто использовал shntool вместо shnsplit, там ключи ненмого по другому устанавливаются..
На удивление с shnsplit всё работает, видать действительно ошибка в shntool ..

Читайте также:  Виртуальная точка доступа linux

Всем спасибо, сделал скрипт который и хотел.

#!/bin/bash #echo "cue flac output [image]" #Конвертить cp1251 -> utf8 CONVERT=true PWD=`pwd` CUE="$/$" FLAC="$/$" OUTPUT="$/$" PICTURE="$/$" if [ -z "$" ]; then echo "error" else if [ $CONVERT == "true" ]; then iconv -fcp1251 -tutf8 "$" > /tmp/utf8.cue CUE="/tmp/utf8.cue" fi cd "$" shnsplit -t %n_%t -f "$" -o flac "$" if [ -n "$" ]; then metaflac --import-picture-from "$" ./*.flac fi cuetag "$" ./*.flac if [ $CONVERT == "true" ]; then rm /tmp/utf8.cue fi cd "$" fi 

После исполнения комманды:
./flac_split.sh 04\ Вавилон\ \(сингл\)\ \(2004\)/Кипелов\ -\ Вавилон.cue 04\ Вавилон\ \(сингл\)\ \(2004\)/Кипелов\ -\ Вавилон.flac test 04\ Вавилон\ \(сингл\)\ \(2004\)/Обложка\ альбома.JPG
— Отработал как надо, разбил песни, вставил тэги и картинки. Ошибка была явно в программе shntool, а я убил не один час на обходные пути, путём подставления слэшей через sed =)) Эхх..

ls -l `which shnsplit` lrwxrwxrwx 1 root root 7 нояб. 7 2010 /usr/bin/shnsplit -> shntool

Источник

Как использовать пробелы в именах файлов в Linux

Favorite

Добавить в избранное

Главное меню » Linux » Как использовать пробелы в именах файлов в Linux

Как использовать пробелы в именах файлов в Linux

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

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

Дело не в том, что вы не можете использовать пробелы в именах файлов в терминале Linux. Просто это создает дополнительную боль, и поэтому вам следует по возможности избегать ее.

Почему? Позвольте мне показать это на примерах. Вы знаете общий синтаксис команд Linux:

command [options] argument1 argument2

Здесь аргументы разделены пробелами. Если вы попытаетесь использовать имена файлов с пробелами напрямую, это будет рассматриваться как отдельные аргументы, а не как один аргумент.

На приведенном выше снимке экрана, когда я пытаюсь использовать cat agatha booksкоманду, она не понимает, что agatha booksэто единственный аргумент. Он рассматривает agathaи booksкак разные имена файлов.

Как же тогда поступать с пробелами в имени файла? Есть два пути:

Заключите все имя файла в кавычки:

Выходите из каждого пробела, используя клавишу обратной косой черты:

Завершение табуляции также часто работает с пробелами. Ваш терминал может отображать имя файла с пробелом, экранированным обратной косой чертой, если вы нажмете клавишу табуляции для имени файла.

Прочитать файл с пробелами в имени файла

Чтобы использовать имя файла с пробелами, вы можете заключить его в кавычки, например:

cat "file name with spaces"

Вы также можете избежать каждого пробела с помощью обратной косой черты, но это больше работы и больше запутывает, чем предыдущий метод:

cat file\ name\ with\ spaces

Обычно вы ставите \перед каждым пробелом в имени файла.

Вы также можете использовать одинарные кавычки вместо двойных кавычек.

cat 'file name with spaces'

Одиночные кавычки игнорируют любые специальные символы. Двойные кавычки игнорируют все, кроме $, обратных кавычек и обратных косых черт./

Создайте файл с пробелом в имени файла

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

Читайте также:  Открыть приложение через терминал linux

Как и в предыдущем разделе, вы можете создавать новые файлы с пробелами в имени файла, используя кавычки:

touch "file name with spaces"
touch file\ name\ with\ spaces

Работа с пространством в имени папки

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

Теперь, если вы хотите переключиться в этот каталог, у вас будет путь с пробелами.

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

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

Предположим, вам нужно скопировать файл my fileиз этого new dir. Вот что вы можете сделать:

Теперь это начинает немного сбивать с толку, правда? Есть обратная и прямая косая черта. Это может напугать нового пользователя или даже опытного, если таких косых черт будет слишком много.

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

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

touch a_very_long_file_name_with_too_many_words

Это упрощает чтение имен файлов, и вам не придется прилагать дополнительных усилий для устранения этих пробелов в именах файлов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

🐧 Работа с именами файлов с пробелами в системах Linux

Это нормально, что мы создаем файлы и каталоги (или можно сказать папки) на наших машинах, чтобы, когда нам нужно, мы могли легко их найти.

Иногда мы сохраняем их с именами, содержащими пробелы, например, мы сохраняем файл с именем “my file”, в этом случае терминал Linux выдаст ошибку.

Можно ли сохранять файлы без пробелов в Linux?

Можно, но доступ к ним в терминале будет осуществляться по-другому.

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

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

Чтобы понять, как ссылаться на имя файла с пробелами в Linux, рассмотрим пример.

Затем создадим файл с именем “my file” с помощью команды touch:

Теперь посмотрите, создался файл или нет, используя команду “ls”.

Мы увидим, что вместо одного файла было создано два, один с именем “my”, а второй с именем “file”.

Для использования пробелов в имени мы используем либо кавычки (‘ ‘), либо экранирующую последовательность (\).

Теперь мы снова создадим еще один файл, используя (‘ ‘) и еще один, используя (\).

touch 'my file' touch test\ file 

Теперь снова используйте команду “ls” для просмотра файлов.

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

Создадим каталог с пробелом с помощью команды mkdir.

Мы посмотрим, был ли создан каталог или нет, используя команду “ls “.

В результате было создано два каталога вместо одного.

Мы можем исправить это так же, как и в методе создания файла, используя (‘ ‘) или (\).

Снова создайте каталог, используя (‘ ‘) или (\).

Читайте также:  Linux ошибка удаления файла

Как ссылаться на имя файла с пробелами на Linux

Итак, мы видим, что каталог был создан в соответствии с нашими требованиями.

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

Например, мы хотим просмотреть содержимое тестового файла с помощью команды cat.

Файл пуст, поэтому система не выводит никаких результатов, но команда выполняется успешно.

Мы также можем открывать файлы, используя апострофы (‘ ‘) или кавычки (” “) как:

cat "test file" \ [ИЛИ] cat 'test file' 

Удаление файлов с пробелами в имени на Linux

Аналогично, вы можете удалить файл и каталог с пробелом в имени, используя апострофы ( ‘ ‘ ), кавычки (” “) или последовательность символов ( \ ).

Аналогичным образом можно удалить каталог с пробелами в имени.

Заключение

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

Терминал Linux по-разному обрабатывает файлы и папки, в именах которых есть пробелы.

Поэтому в этой статье мы решили эту проблему.

Если мы хотим назвать файл или каталог с пробелами, мы можем сделать это с помощью апострофов ( ‘ ‘ ), кавычек (” “) или экранирующей последовательности ( \ ).

itisgood
🐧 Удаление пакетов, установленных в определенную дату/время в системах Linux
📱 Виртуальная АТС для малого бизнеса: возможности и преимущества

You may also like

📜 Чтение файла построчно на Bash

📧 В чем разница между IMAP и POP3

✔️ Как управлять контейнерами LXD от имени обычного.

📜 Руководство для начинающих по созданию первого пакета.

Феноменальная популярность электроники Xiaomi: основные причины

📜 Получение вчерашней даты в Bash: Практическое руководство

Использование специальных гелей при мышечных болях

📦 Как расширить/увеличить файловую систему VxFS на Linux

Услуги по размещению серверного оборудования в ЦОД

Для чего выполняется ИТ консалтинг на предприятиях?

3 комментария

Как делать поиск текста в файлах, названия которых содержат пробел?
Файлов много, ставлю звездочку, выдает ошибку
caution: filename not matched: Причем, если вынести один такой файл в отдельную папку и там искать через звездочку, то grep в этом файле работает,
а если искать через звездочку в папке с 500 файлов, то их всех выбрасывает списком в терминале вот с этой ошибкой.

Leave a Comment Cancel Reply

• Свежие записи

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…

В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…

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

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

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

Источник

Оцените статью
Adblock
detector