Люди кажуть, що не слід використовувати пробіли в іменуванні файлів 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 також визначає більш загальне обмеження стосовно "символу косої риси та нульового байта" в іншому місці цього ж документа . Це відображає або відображається на традиційних традиціях .
READMEs і Makefiles тощо.
Однією з причин уникати заголовків у файлах файлів є те, що порядок сортування в 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 > foocmd2 > Foocmd2Крім технічних причин, у мене є практичний аспект до цього. Якщо дотримуватися малих літер, то пошук буде простішим, якщо ви не любите використовувати grep -i або lociraj -i. Іноді навіть camelCase може бути заплутаною, якщо доводиться використовувати рядок однотипних слів, як у сховищіNYCDCPrimary. Отже, я вважаю, що найкраще дотримуватися малих літер і перець їх підкресленнями або дефісами для зручності читання, як-от сховище_nyc_dc_primary.
storageNycDcPrimaryі StorageNycDcPrimaryїх обидва дивно читати.
Я вважаю, що найкращою практикою є уникати використання великих літер та пробілів у назви файлів.
Деякі кажуть, що вони не згодні, але це питання або те, що я називаю релігійними переконаннями : важко обговорити і погодитись. Ті, хто не погоджується, кажуть, що більшість інструментів тепер є столицями та просторами: вони праві, але це не питання.
Правильне питання - скільки потрібно використовувати великих літер та пробілів у назви файлів. На це питання, за винятком випадків, коли я програмую на Java, відповідь, як правило, весь час: мені не потрібні великі літери та пробіли у моїх іменах . Усі пробіли я замінюю символом підкреслення ( _) або знаком мінус ( -), і тому я не використовую чохол верблюда (ака. CamelCase) всупереч деякій іншій релігії.
Багато людей дзвонили мені на дурниць за те, що вони роблять і навчають, що - деякі з них все ще роблять - деякі з них натрапили на інструмент, який не є зручним для капіталу / простору, і прийшли до мене, сказавши, що я правий і що вони повинні мене слухати. Робіть все, що завгодно , і якщо ви використовуєте великі літери та пробіли у назви файлів, я сподіваюся, що ви ніколи не заїдете на погано написаний інструмент. Однак, якщо ви подорожуєте на такому інструменті, сподіваємось знову, це не складе труднощів для виправлення та не обійдеться вашому бізнесу та / або вам багато грошей та / або часу. Але якщо в кінцевому підсумку виникають погані наслідки, ви пам’ятаєте, що деякі раніше говорили вам, що використання великих літер та пробілів у назви файлів - це погана практика.
І останнє, якщо ви хочете уникнути всіх проблем , жодних спеціальних символів у назви файлів (лише малі літери, цифри, підкреслення та мінуси [1]). Цей список небажаних символів також включає всіх символів, які не мають права (так, французи та інші не англійські люди - і я один з них - жоден із них: à, â, ä, ç, é, ..., ö, æ, œ , ...). Це також стосується багатьох інших речей, включаючи логін та пароль . Я дозволю вам здогадатися, що трапиться, коли ви введете цитату чи подвійну цитату ( 'або ") у логін або пароль, якими обробляється bash-скрипт, не написаний підтвердженим sysadmin ....
[1]: може бути , ми могли б розширити , що ~, @, #і деякі інші, але це шукає неприємності (і так , я знаю про EMACS файлів ...).