Текущий каталог Текущий каталог Файловая система не только систематизирует данные, но и является основой метафоры «рабочего места» в Linux. Каждая выполняемая программа «работает» в строго определённом каталоге файловой системы. Такой каталог называется текущим linux создать каталог, можно представлять, что программа во время работы «находится» именно в этом каталоге, это её «рабочее место». В зависимости от текущего каталога может меняться поведение программы: зачастую программа будет по умолчанию работать с файлами, расположенными именно в текущем каталоге — до них она «дотянется» в первую очередь. Текущий каталог есть у любой программы, в том числе и у командной оболочки shell пользователя. Поскольку взаимодействие пользователя с системой обязательно опосредовано командной оболочкой, можно говорить о том, что пользователь «находится» в том каталоге, который в данный момент является текущим каталогом его командной оболочки. Все команды, отдаваемые пользователем при помощи shell, наследуют текущий каталог shell, т. «работают» в том же каталоге. По этой причине пользователю важно знать текущий каталог shell. Текущий каталог: pwd pwd аббревиатура от print working directory возвращает полный путь текущего каталога командной оболочки, естественно, именно той командной оболочки, при помощи которой была выполнена команда pwd. Почти все утилиты, с которыми работал Мефодий в предыдущих лекциях, по умолчанию читают и создают файлы в текущем каталоге. Так, Мефодий обращался к файлам, не используя никаких путей, просто по имени. Например, использовал утилиту cat, чтобы вывести на экран содержимое файла « text». Содержимое именно этого файла утилита cat выведет на экран. Набирая только имя файла без пути к текущему каталогу, Мефодий воспользовался относительным путём к этому файлу. Для каждого процесса Linux определён текущий каталог, с которого система начинает относительный путь при выполнении файловых операций. Между полным путём и относительным есть только одно существенное различие: относительный путь начинается от текущего каталога, в то время как полный путь всегда начинается от корневого каталога. Относительный путь любого файла linux создать каталог каталога в файловой системе может иметь любую конфигурацию: чтобы добраться до искомого файла можно двигаться как по направлению к корневому каталогу, так и от него см. Пользователь может обращаться к файлу при помощи полного или относительного пути — результат будет совершенно тот же. Сам текущий каталог, каков бы ни был полный путь к нему, всегда имеет ещё одно обозначение, «. », которое можно использовать, если по каким-то причинам требуется, чтобы даже в относительном пути к файлу, находящемуся в текущем каталоге, присутствовал элемент «имя каталога». Так, пути « text» и linux создать каталог. Использование dirname и basename Мефодий заметил, что для « text» и «. », что понятно: как было сказано выше, эти формы пути совершенно эквивалентны, а при автоматической обработке результатов dirname гораздо лучше получить «. », чем пустую linux создать каталог. Домашний каталог Мефодий заметил, что на прошлых лекциях и на этой, заходя с разных linux создать каталог консолей по очереди и одновременно, он всегда оказывался в одном и том же текущем каталоге: он всё время обращался к linux создать каталог файлам при помощи относительного пути и всегда находил нужные. Это не случайно — в Linux у каждого пользователя обязательно есть свой собственный каталог, который и становится текущим сразу после регистрации в системе — домашний каталог. Как правило, является текущим непосредственно после регистрации пользователя в системе. Полный путь к домашнему каталогу хранится в переменной окружения HOME. Поскольку каждый пользователь располагает своим собственным каталогом и по умолчанию работает в нём, решается задача разделения файлов разных пользователей. Обычно доступ других пользователей к чужому домашнему каталогу ограничен: наиболее типична ситуация, когда пользователи могут читать содержимое файлов друг друга, но не имеют права их изменять или удалять. Информация о каталоге Чтобы иметь возможность ориентироваться в файловой системе, нужно знать, что содержится в каждом каталоге. Запомнить всю структуру файловой системы невозможно и не linux создать каталог в любой момент можно просмотреть содержимое любого каталога при linux создать каталог утилиты ls сокращение от англ. Команда ls Поданная без параметров, команда ls выводит список файлов и каталогов, содержащихся в текущем каталоге. При помощи этой утилиты Мефодий обнаружил, что в его домашнем каталоге который в данный момент является текущим содержатся два файла, созданные на прошлой лекции: « -filename-with-» и « text». Утилита ls принимает один параметр: имя каталога, содержимое которого нужно вывести. Имя может быть задано любым доступным способом: в виде полного или относительного пути. » — результат был бы аналогичным. Кроме параметра, утилита ls «понимает» множество ключей, которые нужны главным образом для того, чтобы выводить дополнительную информацию о файлах в каталоге или выводить список файлов выборочно. Чтобы узнать обо всех возможностях ls, нужно, конечно же, прочесть руководство по этой утилите « man ls». Почитав руководство по ls, Мефодий решил изучить содержимое своей файловой системы и начал с начала — с корневого каталога. Команда ls -F Мефодий использовал ключ-F, чтобы отличать файлы от каталогов. В выведенном списке нет ни одного файла — в корневом каталоге содержатся только подкаталоги. Команда ls -aF Внезапно он обнаружил, что файлов в его домашнем каталоге не два, а гораздо больше. Дело в том, что утилита ls по умолчанию не выводит информацию об объектах, чьё имя начинается с «. Для того, чтобы посмотреть полный список содержимого каталога, используется ключ « -a» all. Как правило, с «. » начинаются имена конфигурационных файлов и конфигурационных каталогов вроде. Кроме того, подобных файлов в домашнем каталоге активно работающего пользователя со временем заводится немало по одному на каждую приличную утилиту их присутствие в выдаче ls сильно загромождает её. Разберёмся linux создать каталог в списке файлов в домашнем каталоге Мефодия. Начинём с весьма лаконичных имён «. Мефодий уже знает, что «. » — это имя текущего каталога. Следующее имя в списке, «. » — linux создать каталог ссылка на родительский каталог. Родительский каталог — это тот каталог, в котором находится данный. Иначе можно сказать, что родительский каталог — это один шаг по дереву каталогов по направлению к корню. » или, что то же самое, «. » можно строить сколь угодно длинные пути, такие как «. Для корневого каталога родительским является он сам. Ссылки на текущий и на родительский каталог linux создать каталог присутствуют в каждом каталоге в Linux. Даже если каталог пуст, т. За ссылками на текущий и родительский каталоги следуют linux создать каталог файлов и каталогов, имена которых начинаются на «. В них содержатся настройки командной оболочки файлы, начинающиеся с «. В домашнем каталоге каждого пользователя Linux всегда присутствует несколько таких файлов. Использование этих файлов позволяет пользователям независимо друг от друга настраивать поведение командной оболочки и других программ — организовывать своё «рабочее место» в системе. Подробнее речь об этом пойдёт в лекции. Перемещение по дереву каталогов Пользователь может работать с файлами не только в своём домашнем каталоге, но и в других каталогах. В этом случае будет удобно сменить текущий каталог, т. «переместиться» в другую точку файловой системы. Для смены текущего каталога командной оболочки используется команда cd от англ. «change directory» — «сменить каталог». Команда cd принимает один параметр: имя каталога, в который нужно переместиться — сделать текущим. Как обычно, в качестве имени каталога можно использовать полный или относительный путь. Он обнаружил ещё один каталог — « shogun», и догадался, linux создать каталог это домашний каталог Гуревича, входное имя которого — linux создать каталог shogun». Кроме того, он заметил, что изменился вид приглашения командной строки подсказки shell — слово « methody» заменилось на « home». В приглашении командной строки часто указывается текущий каталог shell — чтобы пользователю легче было ориентироваться, в каком каталоге он «находится» в данный момент. После этого Мефодий решил вернуться в свой домашний каталог, но в этом случае он использовал уже не полный, а относительный путь — « cd methody». Вводя эту команду, Мефодий не стал целиком набирать имя своего домашнего каталога, а набрал только первые буквы « me» и нажал клавишу Tab, как ему советовал Гуревич. Командная оболочка умеет достраивать имена файлов и каталогов: пользователю достаточно набрать несколько первых символов имени файла или каталога и нажать Tab. Если есть только один вариант завершения имени — оболочка закончит его сама, и пользователю не придётся набирать оставшиеся символы. Достраивание — весьма серьёзное средство экономии усилий и повышения эффективности при работе с командной строкой. Современные командные оболочки умеют достраиват имена файлов linux создать каталог каталогов, а также имена команд. Достраивание наиболее развито в командном интерпретаторе zsh. Те же самые перемещения — в родительский каталог и обратно — Мефодий мог бы сделать и набирая значительно меньше символов. Необходимость вернуться в домашний каталог из произвольной точки файловой системы возникает довольно часто, поэтому командная оболочка поддерживает обозначение домашнего каталога при помощи символа « ~». Поэтому чтобы перейти в домашний каталог из любого другого, достаточно выполнить команду « cd ~». Linux создать каталог исполнении команды символ « ~» будет заменён командной оболочкой на полный путь к домашнему каталогу пользователя. Переход в родительский и в домашний каталог При помощи символа « ~» можно ссылаться и на домашние каталоги других пользователей: linux создать каталог ~ имя пользователя». В примере Мефодий перешёл в домашний каталог Гуревича командой « cd ~shogun». Команда cd, linux создать каталог без параметров, эквивалента команде « cd ~» и делает текущим каталогом домашний каталог пользователя. Создание каталогов Пользователь, конечно, не должен хранить все свои файлы в одном каталоге. В домашнем каталоге пользователя, как и в любом другом, можно создавать сколь угодно много подкаталогов, в них — свои подкаталоги и т. Другими словами, пользователю принадлежит фрагмент поддерево файловой системы, корнем которого является домашний каталог пользователя. Чтобы организовать такое поддерево, linux создать каталог создать каталоги внутри домашнего. Для этого используется утилита mkdir. Она используется с одним обязательным параметром: именем создаваемого каталога. По умолчанию каталог будет создан в текущем каталоге. Создание каталога Мефодий решил навести некоторый порядок в своём домашнем каталоге и поместить все файлы с примерами и упражнениями в отдельном подкаталоге — « examples». Теперь, создав каталог, нужно переместить в него все файлы с примерами. Копирование и перемещение файлов Для linux создать каталог файлов и каталогов предназначена утилита mv сокращение от англ. У mv два обязательных параметра: первый — перемещаемый файл или каталог, второй — файл или каталог назначения. Имена файлов и каталогов могут быть заданы в любом допустимом виде: при помощи полного или относительного пути. Кроме того, mv позволяет перемещать не только один файл или каталог, а сразу несколько. За подробностями о допустимых параметрах и ключах следует обратиться к руководству по mv. Перемещение файлов Мефодий сначала переместил в каталог « examples» файл « -filename-with-», поскольку имя этого файла начинается с « -», ему потребовалось предварить его ключом « -», чтобы следующее linux создать каталог было воспринято комадной оболочкой как параметр этот приём был описан в лекции. Затем он перешёл в каталог « examples» и переместил из родительского каталога «. Теперь в каталоге « examples» два файла с примерами. Перемещение файла внутри одной файловой системы в действительности равнозначно его переименованию: данные самого файла при этом остаются на тех же секторах диска, изменяются каталоги, в которых произошло перемещение. Перемещение предполагает удаление ссылки на linux создать каталог из того каталога, откуда он перемещён, и добавление ссылки на этот самый файл в тот каталог, куда он перемещён. В результате изменяется полное имя файла — полный путь, т. Иногда требуется создать копию файла: для бОльшей сохранности данных, для того, чтобы создать модифицированную версию файла и т. В Linux для этого предназначена утилита cp сокращение от англ. Утилита cp требует присутствия двух обязательных параметров: первый — копируемый файл или каталог, второй — файл или каталог назначения. Как linux создать каталог, в именах файлов и каталогов можно использовать полные и относительные пути. Есть несколько возможностей при комбинации файлов и каталогов в параметрах cp — о них можно прочесть в руководстве. Копирование файлов Мефодий решил создать резервную копию файла « text», « text. Для этой простейшей операции копирования достаточно передать cp в качестве двух параметров имя исходного файла имя копии. По умолчанию cp, как и многие другие утилиты, будет работать с файлами в текущем каталоге. Нужно иметь в linux создать каталог, что в Linux утилита cp нередко настроена таким образом, что при попытке скопировать файл поверх уже существующего не выводится никакого предупреждения. В этом случае файл будет просто перезаписан, а данные, которые linux создать каталог в старой версии файла, бесповоротно потеряны. Поэтому при использовании cp следует всегда быть внимательным linux создать каталог проверять имена файлов, которые нужно скопировать. Говоря о копировании, уместно вспомнить широко известное высказывание, приписываемое Уильяму Оккаму: «Не следует умножать сущности сверх необходимого». Созданная при помощи cp копия файла связана с оригиналом только в воспоминаниях пользователя, в файловой системе исходный файл и его копия — две совершенно независимые и ничем не связанные единицы. Поэтому при наличии нескольких копий одного и того же файла в рамках одной файловой системы повышается вероятность запутаться в копиях или забыть о некоторых из них. Если задача состоит в том, чтобы обеспечить доступ к linux создать каталог и тому же файлу из разных точек файловой системы, нужно использовать специально предназначенный для этого механизм файловой системы Linux — ссылки. Файл и его имена: ссылки Жёсткие ссылки Каждый файл представляет собой область данных на жёстком диске компьютера или на другом носителе информации, которую можно найти по имени. В файловой системе Linux содержимое linux создать каталог связывается с его именем при помощи жёстких ссылок. Создание файла с помощью любой программы означает, что будет создана жёсткая ссылка — имя файла, и открыта новая область данных на диске. Причём количество ссылок на одну и ту же область данных файл не ограничено, т. Пользователь Linux может добавить файлу ещё одно имя создать ещё одну жёсткую ссылку на файл при помощи утилиты ln сокращение linux создать каталог англ. «link» — «соединять, связывать». Первый параметр — это имя файла, на который нужно создать ссылку, второй — имя новой ссылки. По умолчанию ссылка будет создана в текущем каталоге. Создание жёстких ссылок Мефодий создал в своём домашнем каталоге жёсткую ссылку с именем « text-hardlink» на linux создать каталог « text», который находится в подкаталоге « examples». Выведя подробный список файлов текущего каталога и его подкаталогов « ls -lR»Мефодий обратил внимание, что у файлов « text» и « text-hardlink» совпадают и размер « 653»и время создания. В подробном описании, выведенном командой « ls -l», Мефодию остались непонятны только два первых поля. Как объяснил Гуревич, первое «слово», состоящее из знаков « -drwx», — это обозначение прав доступа к файлу, о которых речь пойдёт в лекции. А следующее за ним число — количество жёстких ссылок на данный файл или каталог. У « text» и « text-hardlink» стоит число « 2» — у этого файла два имени. Доступ к одному и тому же файлу при помощи нескольких имён может понадобиться в следующих случаях: Одна и та же программа известна под несколькими именами. Доступ пользователей к некоторым каталогам в системе может быть ограничен из соображений безопасности. Однако если linux создать каталог же нужно организовать доступ пользователей к файлу, который находится в таком каталоге, можно создать жёсткую ссылку на этот файл в другом каталоге. Современные файловые системы даже на домашних персональных компьютерах могут насчитывать до нескольких десятков тысяч файлов и тысячи каталогов. Обычно у таких файловых систем сложная многоуровневая иерархическая организация — в результате пути ко многим файлам становятся очень длинными. Чтобы организовать более удобный доступ к файлу, который находится очень «глубоко» в иерархии каталогов, также linux создать каталог использовать жёсткую linux создать каталог в более доступном каталоге. Полное имя некоторых программ может быть весьма длинным например, i586-alt-linux-gcc-3. Индексные дескрипторы Linux создать каталог благодаря жёстким ссылкам у файла может быть несколько имён, понятно, что вся существенная информация о файле в файловой системе привязана не к имени. В файловых системах Linux вся информация, необходимая для работы с файлом, хранится в индексном linux создать каталог. Для каждого файла существует индексный дескриптор: не только для обычных файлов, но и для каталогов, файлов-дырок и т. Каждому файлу соответствует ровно один индексный дескриптор. Индексный дескриптор — это описание файла, в котором содержится: linux создать каталог файла обычный файл, каталог, файл-дырка и т. Все индексные декрипторы пронумерованы, поэтому номер индексного дескриптора — это уникальный идентификатор файла в файловой системе — в отличие от имени файла жёсткой ссылки на негокоторых может быть несколько. Информация об индексных дескрипторах файлов Мефодий решил поинтересоваться номерами индексных дескрипторов файла « text» и жёсткой ссылки на него « text-hardlink» — он обнаружил, что эти номера совпадают « 127705»linux создать каталог есть этим двум именам соответствует один индексный дескриптор, т. Все операции с файловой системой — создание, удаление и перемещение файлов — производятся на самом деле над индексными дескрипторами, имена нужны только для того, чтобы пользователь мог легко ориентироваться в файловой системе. Было бы очень неудобно запоминать многозначный номер каждого нужного файла или каталога. Более того, имя или имена файла не указаны в его индексном дескрипторе. В файловой системе Ext2 имена файлов хранятся в каталогах: каждый каталог представляет собой список имён файлов и номеров их индексных дескрипторов. Жёсткую ссылку linux создать каталог файла, хранящееся в каталоге можно представлять как каталожную карточку, на которой указан номер индексного дескриптора — идентификатор файла. Жёсткие ссылки в Linux — основной способ обратиться к файлу по имени. Символьные ссылки У жёстких ссылок есть два существенных ограничения: Жёсткая ссылка может указывать только на файл, но не каталог, потому что в противном случае в файловой системе могут возникнуть циклы — бесконечные пути. Жёсткая ссылка не может указывать на файл linux создать каталог другой файловой системе. Например, невозможно создать на жёстком диске жёсткую ссылку на файл, расположенный на дискете. Чтобы избежать этих ограничений, были разработаны символьные ссылки. Символьная ссылка — это просто файл, в котором содержится имя другого файла. Символьные ссылки, как и жёсткие, предоставляют возможность обращаться к одному и тому же файлу linux создать каталог разным именам. Кроме того, символьные ссылки могут указывать и на каталог, чего не позволяют жёсткие ссылки. Символьные ссылки называются так потому, что содержат символы — путь к файлу или каталогу. Если на пути к файлу встречается символьная ссылка, система linux создать каталог подстановку: исходный путь заменяется на тот, что содержится в ссылке. Создание символьных ссылок Теперь Мефодий решил создать в своём домашнем каталоге и символьную ссылку на файл text и назвать её text-symlink. Кроме того, Мефодий обратил внимание, что номер индексного дескриптора первое полеразмер и время создания файла text-symlink отилчаются text-hardlink, а linux создать каталог во втором поле количество жёстких ссылок на файл text-symlink указано « 1». Все эти признаки недвусмысленно свидетельствуют о том, что text-symlink и text — это разные файлы. Однако если выполнить команду cat text-symlink, то на экран будет выведено содержимое файла text. Символьная linux создать каталог вполне может содержать имя несуществующего файла, в этом случае ссылка будет существовать, но не будет «работать»: например, если попробовать вывести содержимое такой «битой» ссылки при помощи команды cat, будет выдано сообщение об ошибке. Раскрытие символьных ссылок Удаление файлов и каталогов В Linux для удаления файлов предназначена утилита rm сокращение от англ. Удаление файла Разобравшись в ссылках, Мефодий решил удалить файл text в каталоге examples. После этого файл text-hardlink в домашнем каталоге Мефодия, linux создать каталог является жёсткой ссылкой на удалённый файл text продолжает благополучно существовать. Единственное отличие, linux создать каталог заметил Мефодий — количество жёстких ссылок на этот файл теперь уменьшилось с « 2» до « 1» — действительно, text-hardlink — теперь единственное имя этого файла. Получается, что Мефодий удалил только одно из имён этого файла жёсткую ссылкусам файл остался нетронутым. Однако если Мефодий удалит и жёсткую ссылку text-hardlink — у этого файла больше не останется ни одного имени, он станет недоступным пользователю файловой системы и будет уничтожен. Утилита rm предназначена именно для удаления жёстких ссылок, а не самих файлов. В Linux, чтобы полностью удалить файл, требуется последовательно удалить все жёсткие ссылки на него. При этом все жёсткие ссылки на файл его имена равноправны — среди них нет «главной», с исчезновением которой исчезнет файл. Пока есть хоть одна ссылка, файл продолжает существовать. Впрочем, у большинства файлов в Linux есть только одно имя одна жёсткая сслылка на файлпоэтому команда rm имя файла успешно удалит файл в большинстве случаев. Как уже говорилось, символьные ссылки — это отдельные файлы, поэтому после того, как Мефодий удалил linux создать каталог text, text-symlink, который ссылался на этот файл, продолжает существовать, однако теперь это — «битая ссылка», поэтому его также можно удалить командой rm. Мефодий решил создать каталог для разных упражнений — test, а потом решил обойтись одним каталогом examples. Удаление каталога Для удаления каталогов предназначена другая утилита — rmdir от англ. Впрочем, rmdir согласится удалить каталог только в том случае, если он пуст: в нём нет никаких файлов и подкаталогов. Удалить каталог вместе со всем его содержимым можно командой rm с ключом « -r» linux создать каталог. Команда rm -r каталог — очень удобный способ потерять в одночасье все файлы: она рекурсивно обходит весь каталог, удаляя всё, что попадётся: файлы, подкаталоги, символьные ссылки. Помните: если вы удалили файл, значит, он уже не нужен, и не подлежит восстановлению! В Linux не предусмотрено процедуры восстановления удалённых файлов и каталогов. Linux создать каталог стоит быть очень внимательным, отдавая команду rm и, тем более, rm -r: нет никакой гарантии, что удастся восстановить случайно удалённые данные. Вообще говоря, в нескольких разных каталогах файловой системы могут оказаться файлы с именем « text», именно поэтому linux создать каталог оболочка всегда передаёт программам и утилитам «точный адрес» файла в файловой системе — полный путь. В Linux скрытые файлы — это не свойство файловой системы, а только соглашение по наименованию файлов. Причина этого ограничения в том, linux создать каталог номер индексного дескриптора уникален только в рамках одной файловой системы. В разных файловых системах могут оказаться два разных файла с одинаковым номером индексного linux создать каталог, в результате будет невозможно установить, на какой из них указывает linux создать каталог ссылка. «Рекурсивно» по отношению к каталогам обозначает, что действие будет произведено над самим каталогом, его подкаталогами, подкаталогами его подкаталогов и т.

Смотрите также: