Запрещенные символы имени файла linux

Имена файлов

А это значит, что в одной директории могут быть файлы с именами file и File. И это будут два разных файла.

В именах файлов нельзя использовать следующие символы:

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

  • Английские и, если система русифицирована, русские буквы.
  • Цифры.
  • Символы тире и подчеркивание.
  • Символ точка.

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

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

Максимальная длина имени файла — 256 символов, что достаточно много. Максимальная длина командной строки — 4096 (Имеется в виду сколько символов можно ввести в командной строке, прежде чем нажать на клавишу Enter).

Очень важно запомнить, что в файловой системе UNIX нет такого понятия как расширение. В имени файла может встречаться символ точка. Поэтому в UNIX имя файла может начинаться с точки, например: .profile. В имени файла можно использовать несколько точек. В конце концов, имя может состоять из одних точек, например, всем известная директория .. (две точки).

Источник

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

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

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

Некоторые символы являются печатными символами ASCII, а некоторые — непечатными. Вот символы, которые не поддерживаются для имен файлов и каталогов.

Linux/Unix

Windows

 < (меньше чем) >(больше чем) : (двоеточие - иногда работает, но на самом деле это NTFS Alternate Data Streams) " (двойная кавычка) / (прямая косая черта) \ (обратная косая черта) | (вертикальная полоса или труба) ? (вопросительный знак) * (звездочка)

Запрещенные непечатаемые символы

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

Читайте также:  Linux sed удалить повторяющиеся строки

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

Linux/Unix

Windows

Запрещенные (зарезервированные) имена

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

  • CON, PRN, AUX, NUL
  • COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
  • LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9

Заключение

Также помните, что Windows не различает символы верхнего и нижнего регистра в именах файлов и каталогов, поэтому если вы попытаетесь назвать один файл как a.txt, а другой файл в том же каталоге как A.txt, это не позволит вам этого сделать.

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

В этой статье мы узнали о запрещенных символах для имен файлов и каталогов в Windows и Linux.

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

Источник

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

Я знаю, что «/» является недопустимым в Linux, а в Windows (я думаю) недопустимы следующие «* . » / \ [ ] : ; |,»

Что еще я упустил?

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

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

Ответ 1

  1. /(прямая косая черта) .
  1. <(меньше чем) .
  2. > (больше чем) .
  3. :(двоеточие – иногда работает, но на самом деле это NTFS Alternate Data Streams) .
  4. » (двойная кавычка) .
  5. / (прямая косая черта) .
  6. \ (обратная косая черта) .
  7. | (вертикальная полоса или труба) .
  8. ? (вопросительный знак) .
  9. * (звездочка) .
  1. 0 (байт NULL) .
  1. 0-31 (управляющие символы ASCII) .
  1. CON, PRN, AUX, NUL .
  2. COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 .
  3. LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9 .
  1. Имена файлов не могут заканчиваться пробелом или точкой.
  1. Вы об этом не спрашивали, но на всякий случай: Двоеточие «:» и прямой слэш «/» в зависимости от контекста не разрешены (например, Finder поддерживает слэш, терминал – двоеточие).

Ответ 2

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

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

Читайте также:  Install chrome on linux ubuntu

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

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

Ответ 3

В оболочках Unix вы можете заключить в одинарные кавычки почти все символы. За исключением одинарной кавычки, и вы не можете выразить управляющие символы, потому что «\» не расширяется. Доступ к самой одинарной кавычке из строки в кавычках возможен, потому что вы можете объединять строки с одинарными и двойными кавычками, например так, «’I»»»m»», который может быть использован для доступа к файлу под названием «I’m» (здесь также возможна двойная кавычка).

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

Если вы хотите быть вежливым, не используйте ни один из символов, которые оболочка и типичные команды используют как синтаксические элементы, иногда зависящие от позиции, например, вы можете использовать «-«, но не как первый символ; то же самое с «.», вы можете использовать его как первый символ, только когда вы имеете в виду («скрытый файл»). Когда вы имеете в виду, ваши имена файлов представляют собой управляющие последовательности VT100.

Ответ 4

Лучшее предложение, которое я смог придумать, – позволить пользователю называть файл так, как ему нравится. Используя обработчик ошибок, когда приложение пытается сохранить файл, перехватывайте любые исключения, предполагая, что виновато имя файла (очевидно, убедившись, что путь сохранения также в порядке), и предлагайте пользователю задать новое имя файла. Для достижения наилучших результатов поместите эту процедуру проверки в цикл, который продолжается до тех пор, пока пользователь не получит правильное имя или не отмени т операцию. Это работает лучше всего (по крайней мере, в VBA).

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Читайте также:  Ubuntu linux от canonical

Источник

Открыть файл со спецсимволами в имени

У есть файл с именем :~/ . Я не могу открыть этой файл cat ‘:~/’ . Разные способы попробовал, но результата нет. Как его открыть? Кстати только sh работает, bash ограничено. В папке такие файлы:

~ $ ls #~o :'( :~# :~E =) XD $diary.txt :( :~& :~J =8) X~( (*v*) :) :~( :~P =D X~p (.V.) :* :~) :~Q =O ^_^ (~: :*) :~)(~: :~o =P |~O (~> <~) :>:~)* :~| =^.^= ~,~ )~: :P :~* :~∕ =~O ~:0 * <:o) :S :~>;) >:) *~* :_( :~@ ;~) B~) -$ :o :~B <:3)~ O.o 8~) :o3 :~D =( O:~) 

@RahimjonMuhamedov выделите команду cat ':~∕' в этом моём комментарии, нажмите правую кнопку мыши, выберите «Копировать», перейдите в терминал, нажмите правую кнопку мыши, выберите «Вставить» и нажмите Enter

@RahimjonMuhamedov повторюсь, / и ∕ это РАЗНЫЕ символы. Вы пытались вводить / , а нужно было вводить ∕ . Из моего комментария вы скопировали правильный символ, потому и помогло

3 ответа 3

Символ / запрещён в имени в большинстве современных ОС, поэтому файл :~/ существовать не может в принципе.

Вместо этого у вас существует файл :~∕ — в нём используется другая косая черта.

Да, это две РАЗНЫЕ косые черты, несмотря на то, что в терминале они выглядят одинаково:

  • / U+002F SOLIDUS — косая черта, которая в именах не бывает
  • ∕ U+2215 DIVISION SLASH — это знак деления, который похож на косую черту

Соответственно, если вместо косой черты использовать знак деления, то команда cat ':~∕' отлично работает.

копия моего ответа (с заменой «каталог» → «файл») на по сути аналогичный вопрос:

  1. запустите (предварительно установив, если не установлен, и есть такая возможность) какой-нибудь файловый менеджер: mc , lfm , vifm , ranger и т.п.
  2. если установлен vim (не vi !) и надо отредактировать какой-то файл, то можно им и воспользоваться как файловым менеджером: vim . — программа запустится в режиме netrw (по умолчанию этот скрипт, вроде бы, установлен в ubuntu), где можно будет «перейти» к любому файлу/каталогу. нажатие enter будет интерпретировано для каталога — как cd , для файла — открытие его для редактирования.
  3. если установлен emacs , можно воспользоваться его пакетом dired — directory editor.
  4. на самый крайний (зато абсолютно универсальный) случай можно воспользоваться конструкцией cat -- "$(. )" , где вместо . должна идти команда, возвращающая имя нужного файла (кавычки нужны для тех случаев, когда в названии файла есть пробелы, а -- — на случай, если имя файла начинается с дефиса). это может быть, например, команда ls | sed -n 2p , где 2 — номер нужного файла в выдаче ls . посмотреть пронумерованную выдачу ls можно, например, так:
$ ls | nl 1 acpi 2 adduser.conf 3 adjtime 4 alternatives 5 anacrontab . 

Кстати, стоит добавить -- после cd / ls / cat , иначе обратиться к файлу/каталогу, начинающемуся с дефиса, будет проблематично

Источник

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