Какие символы нельзя использовать в имени файла linux

Обновлено: 04.07.2024

Какие символы запрещены в именах каталогов Windows и Linux?

Linux — решение 1:

  • Запрещенные символы в именах файлов не будут работать в Windows, поскольку они резервируют не только символы, но и имена файлов.
  • Да, такие символы, как * " ? и другие, запрещены, но существует бесконечное количество имен, состоящих только из допустимых символов, которые запрещены.
  • Например, пробелы и точки являются допустимыми символами имени файла, но имена, состоящие только из этих символов, запрещены.
  • Windows не различает символы верхнего и нижнего регистра, поэтому вы не можете создать папку с именем A, если папка с именем a уже существует.
  • Разрешенные имена, такие как PRN, CON и многие другие, зарезервированы и запрещены.
  • В Windows также есть несколько ограничений по длине; имя файла, действительное в одной папке, может стать недействительным при перемещении в другую папку.
  • Правила именования файлов и папок есть в MSDN.
  • Как правило, для создания имен каталогов Windows используется пользовательский текст.
  • Если вы хотите, чтобы пользователи могли называть все, что они хотят, вы должны создать безопасные имена, такие как A, AB, A2 и др., сохранить созданные пользователями имена и эквиваленты их путей в файле данных приложения и выполнить сопоставление путей. в вашем приложении.
  • Если вам абсолютно необходимо разрешить имена папок, созданные пользователями, единственный способ определить, являются ли они недействительными, – перехватить исключения и предположить, что имя недействительно.
  • Даже это чревато опасностью, поскольку исключения, выдаваемые при отказе в доступе, отключенных дисках и нехватке места на диске, перекрываются с исключениями, которые могут выдаваться для недопустимых имен.

Linux — решение 2:

Линукс/Юникс:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда
<р>2. Непечатаемые символы

Линукс/Юникс:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Примечание. Хотя в файловых системах Linux/Unix разрешено создавать файлы с управляющими символами в имени файла, работа с такими файлами может стать кошмаром для пользователей.

<р>3. Зарезервированные имена файлов

Следующие имена файлов зарезервированы:

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Linux — решение 3:

  • В Linux и других системах, связанных с Unix, есть только два символа, которые не могут использоваться в имени файла или каталога: NUL '\0' и косая черта '/'.
  • Конечно, косая черта может появляться в имени пути, разделяя компоненты каталога.
  • Ходят слухи1, что у Стивена Борна (известного как «оболочка») был каталог, содержащий 254 файла, по одному на каждую букву (код символа), которая может встречаться в имени файла.
  • Он использовался для тестирования оболочки Bourne и регулярно наносил ущерб неосторожным программам, таким как программы резервного копирования.
  • Другие люди рассмотрели правила Windows.
  • Обратите внимание, что в MacOS X файловая система нечувствительна к регистру.

Linux — решение 4:

  • Вместо создания черного списка персонажей вы можете использовать белый список.
  • Учитывая все обстоятельства, диапазон символов, которые имеют смысл в контексте имени файла или каталога, довольно короток, и если у вас нет особых требований к именованию, ваши пользователи не будут возражать против вашего приложения, если они не могут использовать весь ASCII. стол.
  • Это не решает проблему зарезервированных имен в целевой файловой системе, но с помощью белого списка легче снизить риски в источнике.
  • В этом духе можно рассматривать следующий диапазон символов:
    • Буквы (a-z A-Z) — также символы Юникода, если необходимо.
    • Цифры (0–9)
    • Подчеркивание (_)
    • Дефис (-)
    • Пробел
    • Точка (.)
    • Имя должно содержать хотя бы одну букву или цифру (чтобы не было только точек/пробелов)
    • Имя должно начинаться с буквы или цифры (чтобы избежать начальных точек/пробелов)

    Это уже позволяет использовать довольно сложные и бессмысленные имена. Например, эти имена возможны с этими правилами и являются допустимыми именами файлов в Windows/Linux:

    Поиски, связанные с - linux - linux tutorial - Какие символы запрещены в именах каталогов Windows и Linux

    linux red hat debian opensuse ubuntu arch linux mandrake get link linux computer linux pc linux server linux desktop Learn linux red hat linux red hat enterprise linux linux software linux tutorial linux операционная система suse linux linux download linux os linux ubuntu vmware linux lunix linux windows linux новости linux usb команды linux unix linux версия linux что такое linux linux centos linux ftp linux недопустимые символы имени файла недопустимые символы в именах файлов unix недопустимые символы имени файла какие символы разрешены в имени файла какие символы не разрешены в имени файла символы не разрешены в именах папок сколько символов можно использовать в имени файла какие символы можно использовать в имени файла

    Лучший в мире анимированный веб-сайт для самообучения с информативными учебными пособиями, объясняющими код и варианты, лежащие в основе всего этого.

    Викитехника

    Мастерская

    Присоединяйтесь к нашему сообществу

    Другие языки

    Мы обнаружили, что вы используете AdBlock Plus или другое программное обеспечение для блокировки рекламы, которое препятствует полной загрузке страницы.

    У нас нет баннеров, Flash, анимации, неприятных звуков или всплывающих окон. Мы не используем эти надоедливые типы рекламы!

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

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

    Сначала мне нужно создать каталог в файловой системе, используя имя, которое может содержать запрещенные символы, поэтому я планирую заменить эти символы символами подчеркивания. Затем мне нужно записать этот каталог и его содержимое в zip-файл (используя Java), поэтому буду признателен за любые дополнительные советы относительно имен zip-каталогов.

    Некоторые символы, которые вы упомянули, действительно разрешены в Windows. Проверьте это: echo abc > "ab.;,=[1]"

    @DavidC.Bishop: В этом сообщении SO утверждается, что ядро ​​Linux не позволит вам работать с именем файла, содержащим косую черту. Удалось ли вам заставить это работать?

    «/ не является незаконным в Linux. Вам просто нужно экранировать его с помощью \ при вводе» — это утверждение совершенно неверно. Компоненты имени файла не могут содержать /, и его экранирование не имеет никакого эффекта.

    19 ответов 19

    Давайте не будем усложнять и сначала ответим на вопрос.

    Непечатаемые символы

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

    Примечание. Несмотря на то, что в файловых системах Linux/Unix разрешено создавать файлы с управляющими символами в имени файла, работа с такими файлами может стать кошмаром для пользователей.

    Зарезервированные имена файлов

    Следующие имена файлов зарезервированы:

    (как сами по себе, так и с произвольными расширениями файлов, например LPT1.txt ).

    Другие правила

    Имена файлов не могут заканчиваться пробелом или точкой.

    Вы не просили об этом, но на всякий случай: двоеточие : и косая черта / в зависимости от контекста не разрешены (например, Finder поддерживает косые черты, терминал поддерживает двоеточия). (Подробнее)

    Новые строки не запрещены в Linux. Хотя я бы сказал, что они должны быть. и если NUL запрещен в Linux, то он запрещен и в Windows, он служит той же цели.

    @Soaku: конечно, нет, поскольку мир не вращается вокруг Microsoft. Зачем добавлять ненужные ограничения, когда есть только два символа, которые абсолютно необходимо запретить?

    @firegurafiku «/» — это просто условность — имена каталогов в любом случае хранятся отдельно друг от друга, поэтому «/» может без проблем появляться в именах (если разрешено). Если используется в имени каталога/файла внутри пути, он должен быть экранирован, но это относится и ко многим другим символам. Работа с '\0' потребует отдельного хранения длины строки везде, что на самом деле сложнее.

    "В большинстве дистрибутивов Linux вы можете назвать файл с помощью косой черты." -- Нет, нельзя. '/' всегда рассматривается ядром, а не только оболочкой, как разделитель каталогов. Невозможно обойти это с помощью программы C, скрипта Python или любого другого способа.

    «Всеобъемлющее руководство» по запрещенным символам в именах файлов не будет работать в Windows, поскольку оно резервирует не только символы, но и имена файлов. Да, такие символы, как * " ? и другие, запрещены, но существует бесконечное количество имен, состоящих только из допустимых символов, которые запрещены. Например, пробелы и точки являются допустимыми символами имени файла, но имена, состоящие только из этих символов, запрещены.

    Windows не различает символы верхнего и нижнего регистра, поэтому вы не можете создать папку с именем A, если папка с именем a уже существует. Хуже того, кажущиеся разрешенными имена, такие как PRN и CON и многие другие, зарезервированы и не разрешены. Windows также имеет несколько ограничений по длине; имя файла, действительное в одной папке, может стать недействительным при перемещении в другую папку. Правила именования файлов и папок находятся в документах Microsoft.

    Как правило, вы не можете использовать пользовательский текст для создания имен каталогов Windows. Если вы хотите разрешить пользователям называть все, что они хотят, вы должны создать безопасные имена, такие как A , AB , A2 и др., хранить сгенерированные пользователем имена и эквиваленты их путей в файле данных приложения и выполнять сопоставление путей в вашем приложении. .

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



    Ключевая фраза из ссылки MSDN: «[и] любой другой символ, который не разрешен целевой файловой системой». В Windows могут быть разные файловые системы. Некоторые могут разрешать Unicode, другие — нет. Как правило, единственный безопасный способ проверить имя — попробовать его на целевом устройстве.

    Есть некоторые рекомендации, и "существует бесконечное количество имен, состоящих только из допустимых запрещенных символов" неконструктивно. Точно так же «Windows не различает символы верхнего и нижнего регистра» является глупым исключением — ОП спрашивает о синтаксисе, а не о семантике, и ни один здравомыслящий человек не скажет, что имя файла например, файл A.txt был недействительным, поскольку файл .TXT может существовать.

    COPY CON PRN означает чтение с клавиатуры или, возможно, стандартного ввода и копирование на принтер. Не уверен, что это все еще действует в современных окнах, но определенно было в течение длительного времени. В старые времена вы могли использовать его для ввода текста, а матричный принтер просто выводил его.

    @JimBalter Если я не ошибаюсь, это неконструктивно, потому что «бесконечное количество имен, состоящих только из допустимых запрещенных символов» довольно бессмысленно, если правила для имен файлов четко определены и сами по себе не бесконечны. Ничто в этом ответе не оправдывает описание возможностей как бесконечных таким образом, чтобы это было полезно или полезно для читателя. Например. сравните следующее: (1) В Linux «/» не допускается. (2) Полное руководство для Linux невозможно, потому что существует бесконечное количество запрещенных имен, например. "/", "//", "///", "а/а", "б/б" и т. д.

    В Linux и других системах, связанных с Unix, есть только два символа, которые не могут использоваться в имени файла или каталога: NUL '\0' и косая черта '/' . Косая черта, конечно, может появляться в имени пути, разделяя компоненты каталога.

    Ходят слухи, что у Стивена Борна (известного как «оболочка») был каталог, содержащий 254 файла, по одному на каждую букву (код символа), которая может встречаться в имени файла (исключая / , '\0' ; имя . было текущим каталогом, конечно). Он использовался для тестирования оболочки Bourne и регулярно наносил ущерб неосторожным программам, таким как программы резервного копирования.

    Другие люди рассмотрели правила для имен файлов Windows со ссылками на Microsoft и Википедию по этой теме.

    Обратите внимание, что в MacOS X файловая система нечувствительна к регистру. Текущие версии позволяют двоеточие : в именах файлов, хотя исторически это не всегда было так:

    Использование имен, образованных исключительно из этих символов, позволяет избежать большинства проблем, хотя Windows по-прежнему добавляет некоторые сложности.

    Когда Стив Борн писал свою оболочку Unix (известную как оболочка Борна), он создал каталог из 254 файлов с односимвольными именами, по одному для каждого значения байта, кроме '\0' и косая черта, два символа, которые не могут использоваться в именах файлов Unix. Он использовал этот каталог для всевозможных тестов сопоставления с образцом и токенизации. (Разумеется, каталог test был создан программой.) В течение многих лет этот каталог был проклятием для программ обхода дерева файлов; он испытал их на прочность.

    Обратите внимание, что каталог должен содержать записи. и .. , так что, возможно, это было 253 файла (и 2 каталога) или 255 записей имен, а не 254 файла. Это не влияет на эффективность анекдота или на описанное в нем тщательное тестирование.

    В настоящее время я использую для большинства своих файлов имя ГГММДД-ИМЯ+СТРАНИЦА. NAME содержит пробелы, преобразованные в символы подчеркивания.

    Я бы хотел использовать формат даты ГГГГ-ММ-ДД, но не знаю, как отделить его от имени. A - выглядело бы странно, если бы имя начиналось с цифры. Если я использую _ , это конфликтует с символом подчеркивания, представляющим пробел.

    Какие символы достаточно безопасны в именах файлов, которые здесь подойдут? Я работаю в Linux, но могу делиться файлами с другими людьми (Windows 7, Mac OS X).



    - символ безопасен для использования в Windows 7.. возможно, другие современные операционные системы делают то же самое.. вы можете использовать символ минус для разделения..

    4 ответа 4

    Обзор:

    • Windows: все, кроме управляющих символов ASCII и \/:*?"<>|
    • Linux, OS-X: все, кроме null или /

    На всех платформах лучше избегать непечатаемых символов, таких как управляющие символы ASCII.

    Окна

    В Windows Проводник Windows не позволяет использовать управляющие символы или \/:*?"<>| Вы можете использовать пробелы. Если вы используете пробелы, вам часто придется заключать имя файла в кавычки при использовании из командной строки (но Насколько мне известно, приложения с графическим интерфейсом не затрагиваются). Файловая система Windows, такая как NTFS, по-видимому, хранит кодировку с именем файла, но стандартом является UTF-16.

    Некоторые части Windows чувствительны к регистру, другие части не чувствительны к регистру. В файловой системе Windows NTFS легко создать разные имена файлов, такие как «Ab» и «ab». Эти имена относятся к отдельным файлам, которые содержат отдельное содержимое. Однако, несмотря на то, что командная строка Windows с удовольствием отобразит оба файла с помощью dir , вы не сможете легко получить доступ к одному из них или управлять им с помощью таких команд, как type . См. ниже.

    Линукс, OS-X

    Я полагаю, что только в Linux и OS-X / из печатного набора ASCII запрещен. Некоторые символы (метасимволы оболочки, такие как *?! ) вызовут проблемы в командных строках и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.

    Файловые системы Linux, такие как ext2, ext3, не зависят от набора символов (я думаю, они просто обрабатывают его более или менее как поток байтов - запрещены только нули и /). Это означает, что вы можете хранить имена файлов в кодировке UTF-8. Я считаю, что оболочка или другое приложение должны знать, какую кодировку использовать для правильного преобразования имени файла для отображения или обработки.

    Заключение

    Поэтому вы, вероятно, могли бы безопасно использовать что-то вроде ✣ (если бы это не было так сложно напечатать)

    Чувствительность к регистру в Windows

    Обратите внимание, что мы не можем ввести содержимое второго файла, вместо этого команда Windows type возвращает содержимое файла Ab. Третий файл также будет отличаться от aB в Linux.

    (Windows 10 NTFS).


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

    "C:\Program files (x86)" все еще существует в Win8 - это не системный каталог? Я согласен с тем, что пробелы могут вызвать проблемы.

    Да, но его можно переименовать во что угодно. Конечно, многие программы будут в бешенстве, если вы переименуете его в "]:\foobar", но Windows все равно обращается к нему как к "%programfiles(x86)%".

    Здесь следует иметь в виду, что система Linux может рассматривать прописные и строчные буквы как разные, в то время как Windows считает их одинаковыми.

    Хотя ответ RedGrittyBrick технически верен, проблема не только в безопасности: важно также удобство использования. Я думаю, что лучше задать вопрос "какие символы лучше использовать в имени файла".

    Некоторые возможные рекомендации:

    Это в основном оставляет вам:

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

    Квадратные скобки ( [] ) являются частью регулярных выражений и также имеют особое значение в оболочке. Но с ними не так уж и плохо работать, за исключением некоторых неприятных угловых случаев.

    В zsh символы, которые могут интерпретироваться по-разному, включают []()^; , поэтому я думаю, что правильным ответом на самом деле может быть [0-9a-zA-Z.,_-] Запятая также может быть исключена только потому, что это странно видеть в имени файла, хотя я не могу вспомнить реальный случай, когда это вызовет проблемы.

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

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

    Alt-1. начальные заглавные буквы могут заменять пробелы: ГГММДД-ЧЧММ-FileName.ext или ГГММДД-ЧЧММ_FileName.ext

    Минимальное количество символов для четкого отображения, которое автоматически сортируется с заполненными нулями для января-сентября (и с 1-го по 9-е число в месяц).


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

    Первая проблема с ГГММДД заключается в том, что он не работает с историческими данными. Он будет сортировать 1997 год намного позже 2035 года, а не раньше. Является ли это проблемой, может зависеть от того, насколько широко вы хотите распространять формат.

    Еще одна проблема с ГГММДД связана с зависимостью от календаря. Хотя григорианский календарь в настоящее время является самым популярным в мире, не все используют его или знают день в его справочнике. К счастью, григорианский год общеизвестен и принят даже теми, кто использует разные годы, но номенклатура месяца/дня может быть бессмысленной. Чтобы быть более переносимым, более переносимым является формат ГГГГДДД, где ДДД — день в году. Однако для тех из нас, кто пользуется григорианским календарем, это сложно, потому что обычно мы не знаем, какой день в году. Формат MMDD по-прежнему поддается сортировке, даже если он ничего не значит для человека, который сам может создать дату, например, 20221442 (год по григорианскому календарю, его месяц и день) или 20220047 (16 февраля по григорианскому календарю, 47-й день года), думая, что они соответствуют вашему формату.

    В продолжение темы о том, насколько широко должен использоваться формат, необходимо рассмотреть символы, доступные по всему миру. Короткий тире '-' доступен везде (?), потому что это знак минус, используемый повсеместно. Подчеркивание — большая проблема, даже для тех, кто использует латиницу. Обычно они могут добраться до него так или иначе, но это не на каждой клавиатуре. В некоторых алфавитах подчеркивание является символом или модификатором символа, что вносит путаницу. Во многих персидских языках подчеркивание читается как кашида. Во многих алфавитах для того, для чего мы используем подчеркивание, использовали бы надчеркивание: что-то, что трудно набрать на нашей клавиатуре. На большинстве клавиатур для технических специалистов имеется простой латинский алфавит (иногда сбоку от клавиши), поэтому они могут набирать буквы. Но не всегда подчеркивание.

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

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

    Примеры имен файлов, которые имеют специальный характер и не очень распространены:

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

    Работа с файлом, в имени которого есть дефис (-)

    Создайте файл, начинающийся с дефиса (-), например -abx.txt.

    Пример вывода

    Причина вышеуказанной ошибки в том, что оболочка интерпретирует все, что следует после тире (-), как параметр, и, очевидно, такого параметра нет, отсюда и ошибка.

    Чтобы устранить эту ошибку, мы должны указать оболочке Bash (да, этот и большинство других примеров в статье для BASH) не интерпретировать ничего после специального символа (здесь тире) как вариант.

    Есть два способа устранить эту ошибку:

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

    Чтобы отредактировать вышеуказанный файл, вы можете сделать следующее:

    Примечание. Вы можете заменить nano любым другим редактором по вашему выбору, скажем, vim как:

    Аналогично для перемещения такого файла нужно сделать:

    и чтобы удалить этот файл, вы должны сделать:

    Если у вас много файлов в папке, имя которой содержит тире, и вы хотите удалить их все сразу, сделайте следующее:

    Важно отметить:
    <р>1. То же правило, что обсуждалось выше, действует для любого количества дефисов в имени файла и их появления. А именно, -a-b-c.txt, ab-c.txt, abc-.txt и т. д.

    <р>2. То же правило, что обсуждалось выше, действует для имени папки с любым количеством дефисов и их встречаемостью, за исключением того, что для удаления папки необходимо использовать «rm -rf» как:

    Понять это на примерах:
    Пример вывода

    и проверьте только что созданный файл как:

    Запустите ‘ls -l‘, чтобы проверить это:

    Проверьте только что созданный файл:

    и подтвердите это как:

    Вы можете переместить файл как:

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

    И удалить как:

    Работа с файлами, в имени которых есть точка с запятой (;)

    Если вы не в курсе, точка с запятой действует как разделитель команд в BASH и, возможно, в других оболочках. Точка с запятой позволяет выполнить несколько команд за один раз и действует как разделитель. Вы когда-нибудь имели дело с каким-либо именем файла, содержащим точку с запятой? Если не здесь, вы будете.

    Создайте файл с точкой с запятой.

    Пример вывода

    Причина вышеуказанной ошибки заключается в том, что когда вы запускаете указанную выше команду, BASH интерпретирует touch как команду, но не может найти файловый операнд перед точкой с запятой и, следовательно, сообщает об ошибке. Он также сообщает о другой ошибке, что «abc.txt» не найдена только потому, что после точки с запятой BASH ожидал другую команду, а «abc.txt» не является командой.

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

    Примечание. Мы заключили имя файла в одинарные кавычки '' . Он сообщает BASH, что ; является частью имени файла, а не разделителем команд.

    Остальные действия (а именно копирование, перемещение, удаление) над файлом и папкой, в имени которых есть точка с запятой, можно выполнить напрямую, заключив имя в одинарные кавычки.

    Работа с другими специальными символами в имени файла/папки

    Знак плюса (+) в имени файла

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

    Знак доллара ($) в имени файла

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

    Процент (%) в имени файла

    Вам не нужно ничего делать по-другому, обращайтесь с ним как с обычным файлом.

    Звездочка (*) в имени файла

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

    Примечание. Если вам нужно удалить файл, начинающийся с * , никогда не используйте следующие команды для удаления таких файлов.

    Восклицательный знак (!) в имени файла

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

    Подпись (@) в имени файла

    Ничего лишнего, считайте файл с именем At Sign нестандартным.

    ^ в имени файла

    Не требует дополнительного внимания. Используйте файл со знаком ^ в имени как обычный файл.

    Амперсанд (&) в имени файла

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

    Скобки () в имени файла

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

    Квадратные скобки <> в имени файла

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

    Шевроны <> в имени файла

    Имя файла с шевронами должно быть заключено в одинарные кавычки.

    Квадратные скобки [ ] в имени файла

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

    Низкая оценка (_) в имени файла

    Они очень распространены и не требуют ничего дополнительного. Просто сделайте то же, что и с обычным файлом.

    Равно (=) в имени файла

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

    Работа с обратной косой чертой (\)

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

    Особый случай косой черты

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

    Поэтому, если вы можете создать такой файл, как ‘/12.txt’ или ‘b/c.txt’, то либо в вашей файловой системе есть ошибка, либо у вас есть поддержка Unicode, что позволяет создавать файл с косой чертой. В этом случае косая черта — это не настоящая косая черта, а символ Юникода, похожий на косую черту.

    Вопросительный знак (?) в имени файла

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

    Точка (.) в имени файла

    Файлы, начинающиеся с точки (.), имеют особое значение в Linux и называются точечными файлами. Это скрытые файлы, как правило, конфигурационные или системные файлы. Вы должны использовать переключатель «-a» или «-A» с командой ls для просмотра таких файлов.

    Создание, редактирование, переименование и удаление таких файлов очень просто.

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

    и проверьте это как:

    Запятая (,) в имени файла

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

    Двоеточие (:) в имени файла

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

    Наличие кавычек (одинарных и двойных) в имени файла

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

    Тильда (~) в имени файла

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

    Пробел в имени файла

    Создайте файл, в имени которого есть пробел между символом/словом, скажите «привет, меня зовут avishek.txt».

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

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

    Если вы чувствуете, что я что-то упустил (это очень распространено и характерно для человека), вы можете включить свое предложение в комментарии ниже. Оставайтесь на связи, продолжайте комментировать. Оставайтесь с нами и на связи! Ставьте лайки, делитесь нами и помогайте нам распространяться!

    Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

    Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

    TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

    Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

    Поддержите нас

    Мы благодарны за вашу бесконечную поддержку.

    Похожие записи

     Отключить Su Access для пользователя

     Переместить домашний каталог в новый раздел

    Система Linux Команды администратора

     Как скачать файлы в Linux

    Примеры Linux Cron

    Linux Vmstat и команды Iostat

    10 мыслей о том, «Как работать с именами файлов, содержащими пробелы и специальные символы в Linux»

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

    «В имени файла может быть сколько угодно двоеточий, и вам не нужно ничего лишнего».

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

    При использовании MX Linux (версия 19.4) у меня нет проблем с созданием файла с двоеточием в имени. Однако, когда я пытаюсь скопировать его на другое устройство или в другой каталог, я получаю сообщение об ошибке «Недопустимое имя файла». Чтобы сделать имя файла «действительным», я должен убрать двоеточие.

    У меня есть файл с именем ~$S123.docx в AIX, когда я запускаю приведенную ниже команду, появляется сообщение, что файл не найден

    а как насчет имени файла, в котором есть тире и пробелы вроде этого:

    Я создаю сценарий оболочки, необходимый для копирования файлов. Этот скрипт имеет три параметра, первый параметр — это файл .txt, содержащий список файлов, второй параметр — расположение файлов, а последний параметр — путь к месту назначения.

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

    Можете ли вы помочь мне с этим?

    Большое спасибо, действительно отличная статья с хорошими практическими примерами..

    Что касается аргумента терминала, «touch *12.txt» может открыть более одного файла, если у вас есть файл с именем a12.txt, b12.txt и т. д. в текстовом редакторе, таком как Geany, или первый файл в алфавитном порядке в Nano. .

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

    Здравствуйте, у меня много файлов с [!] в их именах, мне нужно переместить только эти файлы в другую подпапку, я пытаюсь с

    для файла в $(ls | grep -e ".[!]]" | awk ‘NF < print “\””$0″\””>’); do mv -f «$PWD/$file» «$PWD/Folder001/» ; готово

    но это невозможно, потому что bash в «do mv -f «$PWD/$file»
    читается «Это пример большого имени файла.ext», например

    Это -> Файл1
    является -> Файл2
    an -> Файл 3
    пример -> Файл 4
    из -> Файл 5
    большой -> Файл 6
    filename.ext -> Файл 7

    Как я могу использовать «mv» для большого имени файла со специальными символами, такими как [!] (EJU), в другую папку.

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

    Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

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

    Читайте также: