Символ точка — путь к началу:)
Сегодня всё больше людей переходят на Linux, так как она бесплатна и не нуждается в антивирусе. И дело даже не в цене, так как купил Windows 8 может позволить себе сегодня каждый, дело больше в стабильности работе Linux и её гибкости. Но единственной проблемой, которая мешает некоторым перейти на Linux — это миф о её сложности.
Но на самом деле это конечно не так. Просто в Linux принято пользоваться консольными программами, это удобно, и на самом деле не сложно. И вот я сейчас расскажу об ещё одной полезной фишке, которую нужно знать. Итак, символ точка…

Давайте рассмотрим возможную двусмысленную ситуацию, предположив, что вы ввели команду cd ~ для задания домашней папки как вашего рабочего каталога, и сохранили в ней программу, названную find. В данном случае вы можете полагать, что, если ввести find, программа запустится, но этого не произойдет, потому что существует программа find, находящаяся в папке /usr/bin, и Linux по умолчанию выполнит этот файл, потому что он включен в системный путь, который просматривается до просмотра текущей папки.
Одно из возможных решений — ввести программу с абсолютным или относительным путем и именем файла, например:
Команда «.» (точка) в Linux
Команда «.» (точка) часто используется в шелл-скриптах, однако не все знают, что это синоним команды source, встроенной в оболочку bash. Обычно говорят, что она используется для включения (подключения, «инклудинга») неких внешних файлов внутри скрипта. Рассмотрим в чём заключается суть такого подключения на примере файла .bash_profile:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
На второй строчке с помощью оператора «.» выполняется содержимое файла ~/.bashrc . Может возникнуть вопрос, почему нельзя было для этого использовать, например, sh или просто сам bash.
Дело в том, что при использовании точки не создаётся копии bash-процесса — скрипт выполняется в текущем экземпляре bash, причём все переменные окружения, инициализированные в данном скрипте после его завершения не исчезают, а передаются в окружение системы. Вот в этом и состоит суть «включения». Наоборот, если скрипт запускается явным образом с помощью sh или bash, то создаётся локальная копия (форк) bash, и по завершении скрипта в родительский bash ничего не возвращается — все переменные окружения, созданные в скрипте безвозвратно теряются.
Проиллюстрируем сказанное на простом примере. Создадим файл script следующего содержания:
testenv=»Hi there!»;
echo «Внутренняя переменная testenv = $testenv»;
Если теперь запустить скрипт с помощью sh, то на экран будет выведено значение внутренней переменной скрипта:
# sh script
# Внутренняя переменная testenv = Hi there!
Однако эта переменная не сохранится после завершения работы скрипта и не будет присутствовать в текущем окружении bash:
Если же запустить скрипт точкой, то он выполнится с тем же результатом:
# . script
# Внутренняя переменная testenv = Hi there!
Только переменная testenv будет доступна среди переменных окружения текущей системной оболочки:
# echo $testenv;
# Hi there!
Дочерняя копия bash при использовании оператора точка создаётся только в том случае, когда процесс запускается в фоновом режиме. Это единственное исключение из общего правила.
Почему команда ls добавляет точку (.) или плюс (+) к полю прав доступа некоторых файлов?
Это новая функциональность, добавленная в последние версии пакета coreutils , который включён в дистрибутив Fedora 11. Ответ на этот вопрос содержит страница информации команды ls . Посмотреть её можно командой # info ls . Вот выдержка оттуда:
За битами прав доступа следует один символ, который указывает на то, используется ли альтернативный метод контроля доступа, такой, например, как списки контроля доступа. Если этот символ отсутствует, это означает, что альтернативные методы не используется. Если же отображается какой-либо печатный символ — значит используется.
Команда GNU ls использует символ точки (.) для обозначения, что у файла есть только контекст безопасности SELinux. Если у файла присутствуют и другие методы контроля доступа в любой комбинации, он помечается символом плюс (+).
This entry was posted in Fedora FAQ and tagged basics, fedora, ls on July 6, 2009 by ivan .
Pages
- Reference Phonetic Alphabet
- Подборка вопросов и ответов #1
- Подборка вопросов и ответов #2
- Подборка вопросов и ответов #3
Файловая система Linux
Операционные системы хранят данные на диске при помощи файловых систем. Классическая файловая система представляет данные в виде вложенных друг в друга каталогов (их ещё называют папками), в которых содержатся файлы 1 . Один из каталогов является «вершиной» файловой системы (а выражаясь технически — «корнем» 2 ), в нём содержатся (или из него растут) все остальные каталоги и файлы.
Если жёсткий диск разбит на разделы, то на каждом разделе организуется отдельная файловая система с собственным корнем и структурой каталогов (ведь разделы полностью изолированы друг от друга).
В Linux корневой каталог называется весьма лаконично — « / ». Полные имена (пути) всех остальных каталогов получаются из « / », к которому дописываются справа имена последовательно вложенных друг в друга каталогов. Имена каталогов в пути также разделяются символом « / » («слэш»). Например, запись /home обозначает каталог « home » в корневом каталоге (« / »), а /home/user — каталог « user » в каталоге « home » (который, в свою очередь, в корневом каталоге) 3 . Аналогичным образом составляются полные имена файлов.
Монтирование
Корневой каталог в Linux всегда только один, а все остальные каталоги в него вложены, т. е. для пользователя файловая система представляет собой единое целое 4 . В действительности, разные части файловой системы могут находиться на совершенно разных устройствах: разных разделах жёсткого диска, на разнообразных съёмных носителях (лазерных дисках, дискетах, флэш-картах), даже на других компьютерах (с доступом через сеть). Для того, чтобы соорудить из этого хозяйства единое дерево с одним корнем, используется процедура монтирования.
Монтирование — это подключение в один из каталогов целой файловой системы, которая находится где-то на другом устройстве. Эту операцию можно представить как «прививание» ветки к дереву. Для монтирования необходим пустой каталог — он называется точкой монтирования. Точкой монтирования может служить любой каталог, никаких ограничений на этот счёт в Linux нет. При помощи специальной команды ( mount ) мы объявляем, что в данном каталоге (пока пустом) нужно отображать содержимое такого-то устройства. После этой операции в каталоге (точке монтирования) появятся все те файлы и каталоги, которые находятся на соответствующем устройстве. В результате пользователь может даже и не знать, на каком устройстве какие файлы располагаются.
Подключённую таким образом («смонтированную») файловую систему можно в любой момент отключить — размонтировать (для этого имеется специальная команда umount ), после чего тот каталог, куда она была смонтирована, снова окажется пустым.
Одно из устройств для Linux является самым важным — это корневая файловая система (root filesystem). Именно к ней затем будут подключаться (монтироваться) все остальные файловые системы на других устройствах. Обратите внимание, что корневая файловая система тоже монтируется, но только не к другой файловой системе, а к «самой Linux», причём точкой монтирования служит « / » (корневой каталог). Поэтому при загрузке системы прежде всего монтируется корневая файловая система, а при останове она размонтируется (в последнюю очередь).
Пользователю обычно не требуется выполнять монтирование и размонтирование вручную: при загрузке системы будут смонтированы все устройства, на которых хранятся части файловой системы, а при останове (перед выключением) системы все они будут размонтированы. Файловые системы на съёмных носителях (лазерных дисках, дискетах и пр.) также монтируются и размонтируются автоматически — либо при подключении носителя, либо при обращении к соответствующему каталогу.
Стандартные каталоги
В корневом каталоге Linux-системы обычно находятся только подкаталоги со стандартными именами. Более того, не только имена, но и тип данных, которые могут попасть в тот или иной каталог, также регламентированы стандартом 5 . Этот стандарт довольно последовательно соблюдается во всех Linux-системах: так, в любой Linux вы всегда найдёте каталоги /etc , /home , /usr/bin и т. п. и сможете довольно точно предсказать, что именно в них находится.
Стандартное размещение файлов позволяет и человеку, и даже программе предсказать, где находится тот или иной компонент системы. Для человека это означает, что он сможет быстро сориентироваться в любой системе Linux (где файловая система организована в соответствии со стандартом) и найти то, что ему нужно. Для программ стандартное расположение файлов — это возможность организации автоматического взаимодействия между разными компонентами системы.
1Файл — область данных, имеющая собственное имя.
2Такой каталог называют корневым каталогом, поскольку он служит корнем дерева файловой системе (в математическом смысле слов «дерево» и «корень»).
3Весьма похожий способ записи полного пути используется в системах DOS и Windows, с той разницей, что корневой каталог обозначается литерой устройства с последующим двоеточием, а в качестве разделителя используется символ « \ » («обратный слэш»).
4Это отличается от технологии, применяемой в Windows или Amiga, где для каждого устройства, на котором есть файловая система, используется свой корневой каталог, обозначенный литерой, например « a », « c », « d » и т. д.