Урок о сокращениях.
Давным
 давно, когда был разработан дизайн файловой системы Unix, были 
придуманы записи . и .., для облегчения навигации. Я не уверен, но 
кажется .. появился при переписывании Версии 2, когда в файловой системе
 появилась иерархия (до этого структура была совсем другой). Когда 
кто-то набирал ls эти записи показывались на экране, 
поэтому Кен или Деннис добавили простую проверку в программу. Тогда всё 
писалось на ассемблере, но код был примерно эквивалентен чему-то вроде 
этого:
 if (name[0] == '.') continue; 
Этот код был слегка короче, чем должен, потому что правильно было написать
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0)
    continue; 
но блин, это же было проще.
Результатом были две вещи.
Во-первых,
 был создан неприятный прецедент. Толпы других ленивых программистов 
порождали баги, используя то же самое упрощение. Настоящие файлы 
начинающиеся со знака точки часто пропускались, даже в тех случаях, 
когда должны были быть учтены.
Во-вторых, и это намного хуже, появилась идея «скрытых» файлов или «файлов с точкой». Как следствие, толпы других ленивых программистов1
 стали разбрасывать файлы в домашних каталогах. У меня не так много 
всего установлено на машине, в которую я сейчас набираю этот текст, но 
мой домашний каталог содержит около сотни файлов с точкой, и я даже не 
знаю, что в большинстве из них и нужны ли они вообще. И каждое 
дополнительное имя файла в домашней папке замедляет работу машины, пусть
 не намного, но это же накапливается.
Я совершенно уверен, что концепция скрытых файлов была непреднамеренной оплошностью. Это просто была ошибка.
К
 какому количеству багов, потраченных циклов CPU и случаев человеческого
 разочарования (не говоря уже о плохом дизайне) привело одно маленькое 
упущение, случившееся 40 лет назад.
Задумайтесь об этом в следующий раз, когда захотите «срезать угол» в вашем коде.
(Я
 не спорю с теми, кто говорит, что скрытые файлы служат определенной 
цели, но это цели служат файлы, а не соглашение об их наименовании. Их 
легко можно было складывать в $HOME/cfg или в $HOME/lib, как мы и 
сделали в Plan 9, где нет файлов с точкой. Выводы были сделаны)