Еще один навык CLI, который поможет вам эффективнее управлять своим дистрибутивом, это возможность работать из терминала с файловой системой. Прежде чем мы перейдем к командам, вы должны узнать, что в Linux всё (включая программы, директории и устройства) является файлом, и каждый файл должен принадлежать какому- то пользователю. Пользователи имеют доступ только к принадлежащим им файлам, или к тому, на что им дано разрешение. Разрешение выдается потому, что пользователь принадлежит к группе файла, или потому, что файл доступен для всех пользователей. Единственным исключением из этого правила является пользователь root, которому разрешен доступ ко всем файлам и программам в системе.nnВам не раз придется изменять разрешения файла, чтобы сделать его доступным или недоступным. Команда chmod помогает изменять разрешения или режим файла. Помните, что режим файла могут изменить только владелец файла или root. Команда chmod поддерживает два способа указания изменений в режиме файла: числовое либо символьное представление. Преимущество символьного представления в том, что оно позволяет установить один атрибут, не затрагивая остальные, и делится на три части. Первая часть обозначает тех, кого затронет изменение, и отмечено сочетанием символов u, g, o и a:n
- u означает пользователя и относится к владельцу файла или директории.
- g означает группового владельца.
- o сокращенно означает остальных.
- a означает всех или сочетание всех символов и является значением по умолчанию, если никакой символ не указан.
Вторая часть символьного обозначения относится к операции, которая будет выполнена:n
- Плюс (+) означает, что будет добавлено разрешение.
- Минус (-) означает, что разрешение будет отозвано.
- Знак равенства (=) означает, что только указанные разрешения должны применяться, а все остальные должны быть удалены.
Третья часть означает, что разрешение должно быть установлено и определено с помощью вышеупомянутых символов r, w и x.nnНа практике u+x добавляют владельцу разрешение на исполнение, тогда как u-x отнимает у владельца это разрешение. Точно так же go=rw устанавливает групповому владельцу и всем помимо владельца разрешение читать и писать. Все более ранние разрешения на исполнение, выданные пользователям помимо владельца, удаляются.nnХотя из графического менеджера файлов легко выполнять простые манипуляции с файлами, сложные задачи проще решать с помощью программ командной строки. Например, немало времени потребуется на копирование всех PDF из одной папки в другую, за исключением тех, которые уже имеются в целевой папке. А вот в терминале команда cp -u *.pdf целевая- папка сделает это без всяких хлопот.n
Работа с файлами
Оболочка Linux предлагает специальные символы, называемые подстановочными знаками, которые помогают указать несколько имен файлов. Два самых часто используемых подстановочных знаков — это *, который соответствует любому символу, и ? для соответствия только одному символу. Например, d*.pdf соответствует всем файлам, имена которых начинаются с d и заканчиваются .pdf, тогда как d???.pdf ограничивается PDF-файлами, имена которых начинаются с d, за которым следует ровно три символа: например, d001.pdf и d002.pdf.nnТеперь, вооружившись этим знанием, мы можем понять команду cp. Опция -u копирует только файлы, которых нет в целевой директории или которые новее, чем одноименные существующие файлы. Вы также можете использовать опцию -r для рекурсивного копирования директорий и их содержимого, например, cp -r Documents/ /shared/All_files/.nnНа cp похожа команда mv, используемая для перемещения файлов из исходного места в целевое. Если целевой файл существует, он перезаписывается исходным файлом. Затем имеется команда rm, которая используется для удаления файлов и директорий, следующих за этой командой, например, rm file1.txt и rm -r documents. Однако при использовании rm будьте очень осторожны, поскольку она стирает файл навсегда, а не перемещает его в корзину.n
Жесткие и символические ссылки
Ссылки позволяют создать связь между двумя файлами или директориями. Это удобно для поддержки нескольких версий файла или директории без лишних затрат места на диске на хранение множества копий. Ссылки могут быть жесткими или символическими, и для создания ссылки между двумя файлами используется ln.nnПо умолчанию команда ln создаст жесткую ссылку между файлами. Жесткие ссылки создают идентичную копию файла ссылки на диске, которая обновляется автоматически по мере обновления исходного файла. Хотя содержимое двух файлов связано, при удалении исходного файла целевой файл продолжает существовать на диске в качестве независимого файла. Важно отметить, что жесткие ссылки работают только в текущей файловой системе. Вы не можете создать жесткую ссылку на файл в другой файловой системе. Кроме того, жесткие ссылки не работают для директорий. Однако эти проблемы можно обойти, используя ключ -s для создания символической ссылки.n
Настройка и поддержка серверов Linux, [email protected]