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

Dec 14, 2024
Linux,

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

Скромное имя файла
Почему места в именах файлов Linux - это боль
Как процитировать и сбежать
Как решить проблему пространства у его источника
Расширение вкладки облегчает работу с пространствами
Как использовать имена файлов с пробелами в сценариях Bash
Расположенный, но не сложен

Скромное имя файла

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

То же самое относится и к файлам, которые вы создаете или устанавливаете. Все ваши документы, изображения и музыка нуждаются в именах файлов. Без имен файлов ни один из ваших цифровых активов не мог бы существовать. Поскольку имена файлов так важны, Linux изо всех сил старается навязать как можно мало правил об их композиции.

На Linux имя файла может содержать любого символа, кроме передней сутки » / И нулевой персонаж, 0x00 Анкет Нулевый символ используется для обозначения конца строки, поэтому он не может присутствовать в самой строке, или Linux усекает имя файла в положении нулевого символа. « / В качестве сепаратора используется прямая черта в качестве сепаратора в пути каталогов.

Имена файлов чувствительны к случаям, и может длиться до 255 байтов , включая нулевый персонаж. Пути каталогов могут длиться до 4096 байтов, включая нулевый характер. Обратите внимание, что это их длина в байты , что может не приравниваться непосредственно к персонажи Анкет Например, 16-битные символы Unicode принимают два байта каждый.

Энтузиасты ретро-выписки и те, у кого длинные воспоминания, будут знать, что в первые дни персональных компьютеров, Операционная система диска Microsoft , DOS, был нечувствителен к случаям и имел предел имени файла восьми символов, плюс три-символ расширение Анкет

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

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

Почему места в именах файлов Linux - это боль

Оболочки, такие как Bash, будут интерпретировать разделенную пространственную строку слов как отдельные аргументы команды, а не один аргумент. Вот пример, используя трогать к Создать новый файл называется «My New File.txt.»

Как мы можем видеть, лауреат Показывает нам, что есть три файла, один из которых называется «My», другой называется «новый» и еще один называется «file.txt».

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

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

Как процитировать и сбежать

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

На этот раз мы получаем единственный файл, который мы ожидаем.

Мы можем получить тот же результат, если используем символ Backslash » \ «Чтобы избежать пространств. «Избегая» мест, которые они не рассматривают как особых персонажей, то есть разделители аргументов, они считаются простыми старыми пространствами.

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

Эта команда копирует один текстовый файл из каталога, называемого «Dir One» в каталог, называемый «Dir Two», и сохраняет копию в качестве файла BAK. И это довольно простой пример.

Как решить проблему пространства у его источника

Если это ваши собственные файлы, вы можете принять решение о политике никогда не использовать пространства и создавать (или объемный переименование ) имена файлов, как это.

По общему признанию, это надежное решение, но оно все еще уродливо. Есть лучшие варианты, такие как использование тире » - "Или подчеркивает" _ «Разделить свои слова.

Оба они обойдут проблему, и они читаются. Если вы не хотите добавлять дополнительные символы в свои имена файлов, вы можете использовать Верблюда Чтобы сделать ваши имена файлов читаемыми, как это:

Расширение вкладки облегчает работу с пространствами

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

Вы можете использовать расширение вкладки, чтобы помочь вам точно «заполнить» имена файлов для нас. Допустим, мы хотим удалить Файл BAK, который мы создали в «Dir Two», используя rm Анкет

Мы начинаем с набора «RM Dir», потому что мы используем rm Команда и мы знаем, что имя каталога начинается с «Dir».

Нажатие клавиши «вкладка» вызывает отсканирование для совпадений в текущем каталоге.

Есть два каталога, которые начинаются с «Dir», и в обоих случаях следующий персонаж - это пространство. Итак, Bash добавляет символ BackSlash » \ И пространство. Затем Бэш ждет, пока мы дадим следующего персонажа. Ему нужен следующий персонаж, чтобы различить два возможных совпадения в этом каталоге.

Мы введем «T», для «двух», а затем снова нажмете «Tab».

Bash завершает имя каталога для нас и ждет, пока мы введем начало имени файла.

У нас есть только один файл в этом каталоге, поэтому набрать первую букву имени файла «M», достаточно, чтобы Баш знал, какой файл мы хотим использовать. Ввод «M» и нажатие «вкладки» завершает имя файла для нас, а «Enter» выполняет всю команду.

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

СВЯЗАННЫЙ: Используйте завершение вкладки, чтобы быстрее ввести команды в любой операционной системе

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

Неудивительно, что сценарии Имейте точно такие же проблемы с пробелами в именах файлов, как и командная строка. Если вы передаете имя файла в качестве переменной, убедитесь, что вы цитируете имя переменной.

Этот небольшой скрипт проверяет текущий каталог для файлов, которые соответствуют шаблону файла «*.txt», и хранит их в переменной, вызванной file_list Анкет А для петля используется для выполнения простого действия на каждом.

Скопируйте этот текст в редактор и сохраните его в файл с именем «files.sh». Затем используйте а chmod командование сделать это исполняющим численность.

У нас есть несколько файлов в этом каталоге. У одного есть простое имя файла, а другие используют подчеркивание « _ ”ИЛИ РАС - Вместо пространств. Это то, что мы видим, когда запускаем сценарий.

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

Каждое слово в каждом имене файла обрабатывается так, как будто это было самостоятельно имя файла, и поэтому сценарий не работает. Но все, что нам нужно сделать, чтобы сделать пробелы в сценарии в именах файлов, это цитировать $ file переменная внутри для петля.

Обратите внимание, что знак доллара « $ «Находится внутри кавычек. Мы внесли это изменение и сохранили его в файле скрипта «files.sh». На этот раз имена файлов обрабатываются правильно.

СВЯЗАННЫЙ: Как обработать линию файла по линии в скрипте Linux Bash

Расположенный, но не сложен

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


Linux, - Самые популярные статьи

Как заблокировать свой Mac с помощью терминала

Linux, Feb 16, 2025

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


Как выбирать между Ubuntu, Kubuntu, Xubuntu и Lubuntu

Linux, Mar 19, 2025

Tomeqs / ShuttTerstock.com. Есть более одного Ubuntu. Вы можете скачать Ubuntu, Kubuntu, xubuntu или lubuntu: Но в чем �..


Как использовать расширение скобки в раковине BASH Linux

Linux, May 12, 2025

Fatmawati Achmad Zaenuri / Shutterstock Расширение Brace - это полезная техника для генерации списков строк..


Что нового в Debian 11 "Bullseye"

Linux, Jul 22, 2025

Дебиал , предшественник многих других дистрибутивов Linux сделал выпуск 11, доступный на этапе тест�..


Как обновить Ubuntu Linux

Linux, Aug 27, 2025

Tomeqs / ShuttTerstock.com. Нужна новейшая и величайшая в программном обеспечении Ubuntu? Вам не нужн..


Что нового в GNOME 41?

Linux, Sep 16, 2025

Среда на рабочем столе Linux. ГНОМ 41 было выпущено 22 сентября 2021 года. Приближается горячим на кабл..


Что нового в Fedora 35

Linux, Nov 2, 2024

Федора 35, Красная Шапка Свободный Распределение Linux. (DISTRO), был выпущен 2 ноября 2021 года. От о�..


Как найти PID процесса Linux с Pidof или PGREP

Linux, Nov 15, 2024

Работа с процессом Linux часто означает знание его идентификатора процесса или PID. Это уникальное число, дан..


Категории