- Shell Script как передать путь с пробелами?
- Как использовать пробелы в именах файлов в Linux
- Прочитать файл с пробелами в имени файла
- Создайте файл с пробелом в имени файла
- Работа с пространством в имени папки
- 🐧 Работа с именами файлов с пробелами в системах Linux
- Как создать файл с пробелами в имени на Linux
- Как ссылаться на имя файла с пробелами на Linux
- Удаление файлов с пробелами в имени на Linux
- Заключение
- You may also like
- 📜 Чтение файла построчно на Bash
- 📧 В чем разница между IMAP и POP3
- ✔️ Как управлять контейнерами LXD от имени обычного.
- 📜 Руководство для начинающих по созданию первого пакета.
- Феноменальная популярность электроники Xiaomi: основные причины
- 📜 Получение вчерашней даты в Bash: Практическое руководство
- Использование специальных гелей при мышечных болях
- 📦 Как расширить/увеличить файловую систему VxFS на Linux
- Услуги по размещению серверного оборудования в ЦОД
- Для чего выполняется ИТ консалтинг на предприятиях?
- 3 комментария
- Leave a Comment Cancel Reply
- • Свежие записи
- • Категории
- • Теги
- • itsecforu.ru
- • Страны посетителей
- 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 ..
Всем спасибо, сделал скрипт который и хотел.
#!/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
Добавить в избранное
Главное меню » 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'
Одиночные кавычки игнорируют любые специальные символы. Двойные кавычки игнорируют все, кроме $, обратных кавычек и обратных косых черт./
Создайте файл с пробелом в имени файла
Теперь вам нужно ввести пробел в терминале, чтобы создать здесь имя файла. Снова используйте обратную косую черту или кавычки.
Как и в предыдущем разделе, вы можете создавать новые файлы с пробелами в имени файла, используя кавычки:
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
Итак, мы видим, что каталог был создан в соответствии с нашими требованиями.
Теперь, если мы хотим просмотреть содержимое файла, мы просто используем 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 серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…
Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…
Вы можете оказаться в ситуации, когда вам нужно использовать скрипт шелла для чтения файлов построчно. В этом руководстве я расскажу о нескольких способах…
Вторичное жильё выгоднее для молодых семей, желающих приобрести свою первую квартиру. Сталкиваясь с ипотечным кредитованием, можно избежать много лишней суеты и проблем, если…