Использование подчеркивания в именах файлов?

26

Я часто использую командную строку для навигации по моим файлам, поэтому стараюсь не использовать пробелы в именах файлов. Обычно я использовал подчеркивание для соединения слов, но недавно было предложено использовать тире. Есть ли недостатки в использовании подчеркивания в именах файлов? Должен ли я перейти на тире? Моя система работает под управлением Xubuntu, и я почти исключительно использую оболочку bash.

Благодарность

DQdlM
источник
1
Если вы будете использовать LaTeX, вам может потребоваться защитить имя файла в нескольких скобках {...}. В случае автоматического скрипта вы должны рассмотреть это. Он _используется для создания нижнего индекса и должен быть включен, например, во $...$избежание ошибки, но он будет генерировать текст, отличный от того, что вы ожидаете. В расширенном терминале gnuplot тоже ..
Hastur

Ответы:

23

Что касается операционной системы, то они обе так же удобны, как и другие.

Я хотел бы отметить одну вещь - некоторые программы (например, некоторые системы воспроизведения видео - XBMC и т. Д.) Будут автоматически заменять подчеркивания пробелами при отображении файлов, чтобы они выглядели лучше.

Только по этой причине я бы соблазнился подчеркнуть это.

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

Кроме этого, это зависит только от личного выбора.

Majenko
источник
1
Я использую гиены, но это потому, что мне нравится выглядеть лучше. По технической причине за этим.
beatgammit
Благодарность! Это то, что я подозревал, но я также обнаружил, что одни только мои подозрения могут вызвать у меня проблемы.
DQdlM
16

Dash не требует от вас нажатия SHIFT, что означает, что вы печатаете быстрее. Это единственное другое преимущество, о котором я могу подумать выше того, что предложил мистер Дженкинс.

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

LawrenceC
источник
7
Если бы это было так, они бы использовали viвместо этого - еще одно нажатие клавиши;)
Majenko
4
@Matt это aliasв vлюбом случае ;-)
Даниэль Бек
+1 По этой же причине я использую подчеркивание с именами, состоящими из всех заглавных букв, например FOO_BAR(я не использую заглавные буквы, поэтому приятно иметь возможность просто удерживать Shift все время).
Ричард Хансен
@DanielBeck У меня действительно есть это в моих псевдонимах bash, а также gдля git:)
Jan Warchoł
Я считаю, что vim рассматривает два слова, разделенных дефисом, как одно слово, поэтому это может быть причиной для использования подчеркиваний в именах файлов в качестве пользователя vim.
oddRaven
8

Я рекомендую использовать подчеркивания вместо пробелов. Подчеркивание обычно является условием, которое люди используют при замене пробелов, хотя я бы сказал, что дефисы тоже подойдут. Но поскольку дефисы могут отображаться другими способами, такими как перенос слов, вам будет легче сохранить значение имени, используя подчеркивание. Например, если у вас есть файл с именем «Снимок, сделанный в Уинстон-Сейлем, NC.jpg», и вы хотите преобразовать пробелы в подчеркивания, вы можете сохранить дефис в имени и сохранить его значение.

Пробелы вызывают проблемы у людей, которые хотят использовать командную строку расширенными способами, такими как циклы for, например так:

for file in *.mp3 ; do mpg321 $file -w - | oggenc -o ${file%%.mp3}.ogg - ; done

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

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

deltaray
источник
1
Я полностью согласен Хорошо составленное имя файла не требует пробелов.
DQdlM
4
@KennyPeanuts - но хорошо написанная программа не задыхается от пробелов.
детально
2
@detly - touche '
DQdlM
1
@ детально Нет, хороший программист понимает, что должны быть ограничения в том, что вы можете и должны делать. Если вы говорите, что он не должен задыхаться от пробелов, то кто-то может сделать это и сказать, что он не должен задыхаться в конце строки, тогда кто-то скажет, что он не должен задыхаться /, тогда кто-то может сказать, что он не должен задыхаться в конце файла. Существует старая поговорка «Формула неудачи: постарайся угодить всем».
Deltaray
1
Спецификация файловой системы говорит вам, что кодировать, не больше, не меньше. На Ext2 / 3/4, например, имя файла может содержать любые символы , за исключением \0или \\\`. Coding to anything less than that is broken by design. So, no, it shouldn't choke on spaces, or EOL, or non-ASCII characters, or anything that isn't \ 0 'или `\`. Использование библиотечных функций для манипулирования путями к файлам - путь, потому что многие другие люди уже решили эти проблемы.
детально
5

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

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

Варун Мадиаф
источник
2
Я считаю основную причину читабельности чисто субъективной. Мне кажется, что подчеркивания легче читать, потому что я могу визуально игнорировать их - не читать их - в то время как черточки мне действительно приходится их читать.
Голиатоне
3

Я лично предпочитаю дефисы подчеркиванию, потому что вам не нужно удерживать клавишу Shift для них. Но следует помнить одну вещь: если вы в основном делаете кодирование на Python - и в вашем дереве кода есть файлы / каталоги с дефисом, и вы намерены использовать их в качестве модулей (выполните импорт файла в вашем коде), то это вызовет ошибки поскольку модули Python не могут иметь дефис в них. Конечно, существуют обходные способы импорта модулей, которые имеют дефис, но я бы придерживался подчеркивания, поскольку он также следует рекомендациям PEP-8.

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

Саураб Хирани
источник
2

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

URL               What search indexes see
foo-baz-bang      foo baz bang
foo_baz_bang      foobazbang

Как веб-разработчик, это заставило меня придерживаться дефиса при разделении слов.

богатый ремер
источник
1
Контекст уже упоминался выше, вероятно , связан - среди других вещей - 2005 Мэтт Каттс блоге с участием алгоритмического предпочтения Google, для дефисов против подчеркивания в качестве лучшего показателя белого пространства заполнителя.
jmmygoggle