Хороший стиль / практика для разделителей в именах файлов (или каталогов) [закрыто]

16

Я не совсем уверен, является ли это "правильным" вопросом для публикации здесь. Я, наверное, спрашиваю больше о «мнениях», чем реальных категориальных ответах (тех, которые либо работают, либо нет, и все тут).

Мне было интересно, какие разделители имен будут наиболее дружественными для Linux (или, точнее, для Bash ) и дружественными для человека одновременно.

Допустим, я хочу создать каталог, содержащий что-то, относящееся к мистеру Фу Бару (имя Фу - Фа , фамилия Бар )

Иметь имя " Foo-Bar/" очень удобно. -является «регулярным» характер, не нужно экранировать, это ясно показывает , что Fooи Barдве разные вещи ... Ницца.

Теперь " Foo.Bar" немного сложнее. Кто-то может подумать, что Foo.Barна самом деле это файл (на первый взгляд, особенно если у вас нет терминалов с включенной раскраской), где " Foo" - это имя файла, а " Bar" расширение.

Я мог бы также использовать « Foo Bar», но тогда мне нужно экранировать пробелы, когда я хочу получить доступ к каталогу, и, если я хочу Foo Barвывести список содержимого родительского каталога (где он расположен), и поместить указанный список в массив bash, пустое пространство будет вызывать проблемы (много). Не хорошо.

Скобки ()также вызывают много проблем. Они также должны быть экранированы, а затем вызывать проблемы с командами, как scp... Не приятно.

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

BorrajaX
источник
5
Для справки: набор символов POSIX Portable Filename .
jw013
Я часто использую тире, но это зависит от того, что я делаю. Некоторые могут рассмотреть случай верблюда как соответствующий как FooBar.
Клапауций

Ответы:

14

Краткий ответ: "Foo _-_ Bar"

Длинный ответ:

Чтобы упростить обнаружение, я обычно использую последовательность символов в областях, где это необходимо, идея состоит в том, чтобы использовать что-то, что легко обнаружить, и вы получите, что это разделитель, может быть, что-то вроде «_-_» или « ___».

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

  • 01_Blue_Man_Group _-_ Above.mp3
  • 02_Blue_Man_Group _-_ Time_to_Start.mp3
  • 03_Blue_Man_Group _-_ Sing_Along.mp3

Теперь это можно перевести на ваш пример, если Foo и Bar - это две логические вещи, которые не должны смешиваться, и тогда это может быть Foo _-_ Bar.

Johan
источник
2
Таким образом, вы также можете различать имена, которые уже содержат тире (или разделители в целом).
lynxlynxlynx
1
Кроме того, очень приятно пересматривать ex parse! : ^ (. +) _-_ (. +) \. mp3 $
DanDan
Учитывая, что люди будут просматривать эти файлы, это хороший ответ; По сути, я считаю это разделительной строкой; Многосимвольный уникальный разделитель. В Vagrant я заметил, что он использует строку VAGRANTSLASHв именах файлов, где разделение.
ThorSummoner
9

С таким количеством символов, которые вы, возможно, не считаете особенными, на самом деле они особенные, я все равно использую специальные символы. Это также дает мне хорошие привычки использовать завершение bash, когда оно автоматически экранирует все специальные символы в имени файла. Но это также дает мне хорошие привычки избегать / цитировать ВСЕ в скриптах и ​​многочастных 1-строчках в bash.

Например, в простой 1-строчной строке:

for file in *.txt; do something.sh "$file"; done

Таким образом, даже если в одном из файлов есть пробел или какой-либо другой символ, doчасть цикла все равно будет действовать на него и не пропустит 2 или более частей имени файла, что может вызвать непреднамеренные побочные эффекты.

Так как я не могу управлять именами пробел / не пробел КАЖДОГО файла, с которым я сталкиваюсь, и если бы я попытался, он, вероятно, где-нибудь сломал бы некоторые символические ссылки, что привело бы к еще более непредвиденным последствиям, я просто ожидаю, что все имя файла / имя каталога может содержать пробелы, и просто процитировать / экранировать все переменные для компенсации.

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

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

Подведение итогов: пробелы не являются недопустимым символом, поэтому нет причин не использовать их.

killermist
источник
6

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

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

саз
источник
5

Я использую подчеркивание ( _). Визуально они исчезают, и их легко набирать, а не особенных.

bahamat
источник
4
я нахожу их более уродливыми, чем их -, и их сложнее набрать (нужно использовать клавишу Shift)
tshepang