При использовании Bash в именах файлов лучше избегать символов, например, `?`

используйте следующую команду :

 $ mount |wc -l
1
13.04.2017, 15:36
1 ответ

Одно абсолютное правило - нельзя использовать косую черту / или нулевой байт в имени файла. Косая черта - это разделитель каталогов, и его нельзя избежать. Нулевые байты указывают на конец имени и также не могут быть экранированы. Кроме того, в Linux разрешен любой символ (кроме случаев доступа к медиа или сетевым ресурсам, совместно используемым с другими файловыми системами), но некоторое количество символов может вызвать проблемы. Я думаю, что все современные * BSD также допускают любые символы, кроме / и нулевых байтов, но у некоторых старых юниксов было больше ограничений.

Если вы хотите, чтобы имя файла работало в общей оболочке без кавычек, вам нужно избегать ! "# $ & '() *; <=>? [\] ^` {|} ~ и пробел (пробел, табуляция, новая строка). ~ нормально, если он находится в конце. В частности, в bash, ^ нормально, # и ~ можно использовать везде, кроме начала, а = можно использовать, за исключением имени команды (потому что это будет интерпретироваться как присвоение).

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

  • Не начинайте имя файла с - (тире / дефис). Команды могут интерпретировать это как параметр.
  • Не используйте инициал ] ~ (тильда), потому что во многих приложениях это означает «домашний каталог».
  • В более общем смысле, не начинайте и не заканчивайте знаком препинания, так как ряд приложений присваивают им особое значение (например, | foo , что означает «прокрутка программы foo », А не« записывать в файл | foo », и аналогично с foo | для вывода).
  • Если вы собираетесь обмениваться файлами с пользователями Windows или сохранять файлы на съемном носителе, не используйте символы, которые Windows не поддерживает: \ /?: ​​* "> <|
  • Не используйте непечатаемые символы (например, управляющие символы), табуляции или символы новой строки. Вы даже не сможете вводить их во многих интерфейсах.
  • Некоторые плохо написанные сценарии оболочки могут задушить пробелами. как \ *? [] , потому что они подстановочные знаки . Кроме того, некоторые приложения, которые могут работать с несколькими файлами одновременно, интерпретируют эти символы как подстановочные знаки.
  • Если вы собираясь обмениваться файлами со старыми компьютерами или с людьми, говорящими на другом языке, особенно на языке, отличном от латинского алфавита, они могут использовать другую кодировку символов. Символы ASCII гарантированно будут доступны везде и закодированы таким же образом.
  • Многие приложения используют расширение файла , чтобы выяснить, какие файлы они поддерживают и как они его открывают. Система также использует расширение, чтобы определить, в каком приложении открыть файл. Так что оставьте расширения на месте. Расширение - это часть после последней точки, например txt в myfile.txt ; иногда есть несколько расширений, например myfile.txt.gz для сжатого ( .gz ) текстового ( .txt ) файла.
  • Имена файлов, начинающиеся с . скрыты по умолчанию в выводе команды ls и во многих файловых браузерах.
  • Unix чувствителен к регистру: myfile не связан с Myfile . Традиционно имена файлов пишутся в нижнем регистре, в основном потому, что это упрощает их ввод. Раньше системы обычно сортировали прописные буквы перед строчными, поэтому существует традиция начинать имя файла с заглавной буквы, чтобы оно было первым в списках каталогов, но современные системы часто сортируют имена без учета регистра. Использование строчных букв позволяет избежать путаницы и легче набирать текст.

Если вы не хотите запоминать все эти сложные случаи, вот только два простых правила:

  • Максимальная безопасность: придерживайтесь букв a - z и цифр ] 0 - 9 , плюс - для разделения слов и .extension в конце имени файла. Например: my-file.txt
  • Более читабельный: используйте буквы и цифры на английском языке или в вашем собственном скрипте, плюс пробел или - для разделения слов и .extension в конце имени файла. Например: Jörgs Datei.txt

Последний совет: используйте формат ГГГГММДД (год-месяц-день, с 4 цифрами года и ведущим нулем в номере месяца и дня) для дат, например 20150622-report.txt . Таким образом, сортировка имени файла дает вам хронологический порядок.

1
27.01.2020, 23:48

Теги

Похожие вопросы