Люди кажуть, що не слід використовувати пробіли в іменуванні файлів Unix. Чи є вагомі причини не використовувати великі літери у назвах файлів (тобто File_Name.txt
проти file_name.txt
)? Або це лише питання особистої переваги?
Люди кажуть, що не слід використовувати пробіли в іменуванні файлів Unix. Чи є вагомі причини не використовувати великі літери у назвах файлів (тобто File_Name.txt
проти file_name.txt
)? Або це лише питання особистої переваги?
Відповіді:
Люди кажуть, що у назві файлів Unix не слід пропускати пробіли.
Люди говорять багато речей. Є деякі інструменти, які можуть накрутити, але, сподіваємось, їх наразі мало, оскільки простори - це вірус, розповсюджений гігантськими споживчими корпораціями ОС, і цього неможливо уникнути.
Пробіли створюють незрозумілі вказівки назви файлів у командному рядку тощо. Ось про це. Єдиними категорично забороненими символами в * nix системах є NUL (не хвилюйтеся, це не на вашій клавіатурі чи комусь іншому) і /
, оскільки це роздільник шляху. 1 Окрім цього все, що стосується. Окремі елементи шляху (назви файлів) обмежені 255 байтами (можливе ускладнення, якщо ви використовуєте розширені набори символів), а цілі шляхи - до 4 KiB.
Або це лише питання особистих уподобань
Я б сказав, що так і є. Більшість DE, здається, створити вбивання капіталізованих каталогів в вашому $HOME
( Downloads
, Desktop
, Documents
- D
дуже популярний), так що немає нічого дивно про це. Існують також дуже звичні традиційні файли з великими літерами, такі як .Xclients
і .Xauthority
.
Цінність використання великих букв на початку полягає в тому, що, перераховуючи лексикографічно, вони перейдуть до речей з нижнього регістру - принаймні, з багатьма інструментами та залежно від місцевості.
Я шанувальник справи верблюда (ака. CamelCase) і використовую його з назви файлів, наприклад, /home/goldilocks/blueSuedeShoes
- неважливо, що там є. Безумовно, це питання особистої переваги, але це ще не викликало у мене горя.
Файли класів Java, як правило, містять великі літери, тому що назви класів Java. І звичайно, не будемо забувати NetworkManager
, навіть якщо хтось із нас волів би цього.
1. Існує набагато більш обмежений, рекомендований POSIX "Портативний набір символів назви файлів" , який не включає пробіл - але він включає верхній регістр! POSIX також визначає більш загальне обмеження стосовно "символу косої риси та нульового байта" в іншому місці цього ж документа . Це відображає або відображається на традиційних традиціях .
README
s і Makefile
s тощо.
Однією з причин уникати заголовків у файлах файлів є те, що порядок сортування в Unix чутливий до регістру, тому файли, що починаються з великої літери, з’являться поза порядком. Ось причина Makefile
, яку зазвичай називають великою літерою M
- це один із файлів, який ви хочете побачити першим, без прокрутки / пропускання вниз по жолобі a-l
.
Це говорить про те, що ви можете зробити набагато гірше щодо імен файлів:
-
може спричинити проблеми, оскільки багато програм будуть бачити його як опцію командного рядка замість імені файлу (наприклад rm -r
, не буде видалено названий файл -r
)..
знаком " a" , приховає його від багатьох утиліт та глобальної оболонки (наприклад rm *
, не видалятиме файли, як .config
)|<>*?
і навіть недрукувальних символів, таких newline
як технічно можливо, але може порушити сценарії / програми, схожі на символи пробілу. Різниця полягає в тому, що простір символів часто використовується, тому програмісти прагнуть перевірити свої програми на нього, тоді як менш популярні символи часто залишаються неперевіреними.rm *
не видалять файли типу .config
?
Makefile
і README
є ідеальними прикладами цього. Зауважте також, що цей ефект є незначним, якщо літера не є першою літерою в імені, тож не дуже важливо, якщо ви використовуєте camelCase. Звичайно, ви можете здивуватися anOctagon
раніше angle
, але принаймні вони будуть разом у списку.
Якщо ви збираєтесь взаємодіяти з середовищем Windows, вам слід уникати великих літер, тому що Windows все зменшить. Частіше це проблема йде іншим шляхом; посилання на Page_2.html
пошук знайдеться page_2.html
в Windows, але в Unix не вдасться.
NUL
та /
забороненими.
cat > Foo
файл буде замінено foo
. Така поведінка може бути несподіваними і заплутаним , якщо ви звикли справу , що зберігають і чутливі до регістру файлових систем , такі як доб *.
\0
і /
, чутливий до регістру). Принаймні так я це пам’ятаю. Але я згоден, що це свого роду безлад. Є додаткові обмеження у…
Однією з причин уникнення обмежень є те, bash
що вкладка s табуляції залежить від регістру (принаймні, за замовчуванням) - це все одно відключає мене кожного разу, коли я опиняюся перед bash
конфігурацією за замовчуванням. Звичайно, є й інші популярні оболонки, але це в поєднанні з тим, що bash
оболонка для входу за замовчуванням для багатьох ОС означає, що за замовчуванням часто буває залежно від регістру. Використання іменних файлів із малих літер тут значно спрощує речі.
echo set completion-ignore-case On >> ~/.inputrc
може трохи допомогти, принаймні у власній системі.
Foo
та пізніше введіть cat f
(Tab), він не вдасться. Але те ж саме відбувається , якщо ви друкуєте cat foo
, cat Foobar
або cat Fu
- той факт , що ви будете мати проблеми з доступом до файлу , чиє ім'я ви не пам'ятаєте правильно на насправді не має нічого спільного з автозаповненням.
Оскільки NL_Derek відкрив цю банку з хробаками, але не сформулював її належним чином, я скажу так:
Добре використовувати великі літери, але вам слід уникати створення файлів (у тому самому каталозі), які відрізняються лише залежно від регістру , наприклад, File_Name.txt
і file_name.txt
, оскільки
FILENA~1.TXT
і FILENA~2.TXT
- введіть, dir /x
щоб побачити, яке коротке ім'я (якщо воно є) походить із тим довгим ім'ям.)cmd1 > foo
cmd2 > Foo
cmd2
Крім технічних причин, у мене є практичний аспект до цього. Якщо дотримуватися малих літер, то пошук буде простішим, якщо ви не любите використовувати grep -i або lociraj -i. Іноді навіть camelCase може бути заплутаною, якщо доводиться використовувати рядок однотипних слів, як у сховищіNYCDCPrimary. Отже, я вважаю, що найкраще дотримуватися малих літер і перець їх підкресленнями або дефісами для зручності читання, як-от сховище_nyc_dc_primary.
storageNycDcPrimary
і StorageNycDcPrimary
їх обидва дивно читати.
Я вважаю, що найкращою практикою є уникати використання великих літер та пробілів у назви файлів.
Деякі кажуть, що вони не згодні, але це питання або те, що я називаю релігійними переконаннями : важко обговорити і погодитись. Ті, хто не погоджується, кажуть, що більшість інструментів тепер є столицями та просторами: вони праві, але це не питання.
Правильне питання - скільки потрібно використовувати великих літер та пробілів у назви файлів. На це питання, за винятком випадків, коли я програмую на Java, відповідь, як правило, весь час: мені не потрібні великі літери та пробіли у моїх іменах . Усі пробіли я замінюю символом підкреслення ( _
) або знаком мінус ( -
), і тому я не використовую чохол верблюда (ака. CamelCase) всупереч деякій іншій релігії.
Багато людей дзвонили мені на дурниць за те, що вони роблять і навчають, що - деякі з них все ще роблять - деякі з них натрапили на інструмент, який не є зручним для капіталу / простору, і прийшли до мене, сказавши, що я правий і що вони повинні мене слухати. Робіть все, що завгодно , і якщо ви використовуєте великі літери та пробіли у назви файлів, я сподіваюся, що ви ніколи не заїдете на погано написаний інструмент. Однак, якщо ви подорожуєте на такому інструменті, сподіваємось знову, це не складе труднощів для виправлення та не обійдеться вашому бізнесу та / або вам багато грошей та / або часу. Але якщо в кінцевому підсумку виникають погані наслідки, ви пам’ятаєте, що деякі раніше говорили вам, що використання великих літер та пробілів у назви файлів - це погана практика.
І останнє, якщо ви хочете уникнути всіх проблем , жодних спеціальних символів у назви файлів (лише малі літери, цифри, підкреслення та мінуси [1]). Цей список небажаних символів також включає всіх символів, які не мають права (так, французи та інші не англійські люди - і я один з них - жоден із них: à, â, ä, ç, é, ..., ö, æ, œ , ...). Це також стосується багатьох інших речей, включаючи логін та пароль . Я дозволю вам здогадатися, що трапиться, коли ви введете цитату чи подвійну цитату ( '
або "
) у логін або пароль, якими обробляється bash-скрипт, не написаний підтвердженим sysadmin ....
[1]: може бути , ми могли б розширити , що ~
, @
, #
і деякі інші, але це шукає неприємності (і так , я знаю про EMACS файлів ...).