Имена файлов и каталогов
На имена файлов и каталогов распространяются одинаковые ограничения. Так, длина имени файла не должна превышать 255 символов, полное имя файла (т.е. путь от корня файловой системы до файла) не должен быть длиннее 1023 символов.
Имена файлов и каталогов в UNIX состоят из латинских букв верхнего и нижнего регистра, цифр и знаков препинания. Регистр букв имеет значение! Буквы верхнего и нижнего регистра в UNIX считаются разными символами, имена Alliance и alliance - это разные имена, хотя и отличаются всего лишь регистром одной буквы.
Из знаков препинания рекомендуется использовать только точку ".", тире "-" и подчеркивание "_". Использование других знаков (запятых, скобок, звездочки, решетки, вопросительного и восклицательного знаков и других) теоретически возможно, но неудобно. Дело в том, что командные процессоры и стандартные системные функции в UNIX интерпретируют такие знаки специальным образом (а именно, как шаблоны имен файлов или модификаторы команд в командном процессоре). Обращаться к файлу с именем ,/?*&^q-+|! придется тоже специальным образом, а это быстро надоест.
В UNIX не используется понятие "расширение имени файла", так как точка считается равноправным символом в имени. Следовательно, имя several.news.from.New.York смотрится в UNIX не более экзотично, чем index.html. UNIX не делает предположений о содержимом или назначении файла в зависимости от его имени и того, какие символы стоят справа от самой правой точки в имени.
Для того чтобы узнать, что содержится в файле, не открывая его, можно использовать программу file:
file bad.words English text
Программа file использует специальный файл образцов - /etc/magic. Он содержит сведения о том, как должен выглядеть файл, чтобы его можно было отнести к какому-либо известному типу: текст (text), текст программы на языке С (C program), исполняемый код (executable file), данные (data) и т.д.
Имя может быть полным (абсолютным) или относительным. Полное имя файла - это имя с указанием пути к файлу от корневого каталога, например, /usr/local/squid/etc/squid.conf. Полное имя легко идентифицировать: оно всегда начинается с символа "/".
Относительное имя файла может быть очень коротким, например, просто f. Если в имени файла вообще нет знака "/" (слэш), то имя относится к файлу текущего каталога. Если слэш есть (но не в начале имени - например, squid/etc/squid.conf), то все, что находится слева от первого в имени слэша, расценивается как подкаталог текущего каталога.
Полное имя любого файла не должно быть длиннее 1023 символов. Однако, для обращения к файлу, расположенному очень глубоко в структуре каталогов, следует перейти в промежуточный каталог командой cd и оттуда обратиться к файлу по относительному имени. Скажем, вместо
vi /usr/home/ivan/projects/united_states/texas/cowboys/horses/ red/seats/sellers_training
можно обратиться к тому же файлу так:
cd /usr/home/ivan/projects/united_states vi texas/cowboys/horses/red/seats/sellers_training
Кстати, обратите внимание на ввод многострочных команд: при необходимости перехода на другую строку при вводе длинной команды следует использовать символ экранирования (обратный слэш) "\". Следующий за ним символ перевода строки в таком случае будет интерпретирован как пустой символ, а не как символ завершения команды.
Полное имя файла также называют "путем к файлу", "путем файла" или "путевым именем файла".
Символ "~" (тильда) в большинстве командных интерпретаторов обозначает домашний каталог пользователя. Например, команда
cd ~anna/
требует перейти в домашний каталог пользователя anna, а знак "~" без имени пользователя означает домашний каталог текущего пользователя. Впрочем, интерпретатор sh знак ~ так не воспринимает, пользуйтесь bash!