Linux — Краткий путь к системе Debian 8.x (Часть 4)

Linux Fun LogoРанее мы уже немного ознакомились с командами позволяющими нам управлять файлами и репозиториями в Linux. Теперь мы углубимся в эту тему более подробно! Статья очень большая, но при этом обладает особой важностью. К тому же ее можно использовать как справочный материал.

Работа с файловой системой, директориями и файлами в Linux.

 

Linux filesystemПри указании в аргументах файла Linux выведет информацию о файле согласно указанным опциям, в случае каталога — то же для файлов каталога. Если аргументов нет, — выдается листинг текущего каталога Linux-a.

Опции:

-a — выводит информацию обо всех файла в каталоге (по системному соглашению файлы, имя которых начинается с точки, являются скрытыми и командой ls не показываются)
-c — использовать время последней модификации i-node, связанного с файлом (создание файла, изменение прав, и т.д.), а не время модификации
-i — выдать номер i-node, связанного с файлом
-l — выдает полную информацию о файлах в длинном формате: тип файла (обычный файл -, каталог d, сокет s, символьная ссылка l, символьное устройство c, блочное устройство b, FIFO[1] p), права доступа (чтение –r, запись –w, исполнение –x,; первые 3 символа относятся к владельцу, следующие 3 — к членам группы, владеющей файлом, и последние 3 — ко всем остальным), владелец, группа, размер в байтах, дата модификации, имя файла
-t — сортировка листинга по времени
-u — использование времени последнего доступа к файлу, а не время модификации
-F — после каждого имени выдавать значок, характеризующий тип последнего каталог(/), исполняемый файл (*), FIFO (|), символьная ссылка (@), сокеты семейства AF_UNIX (=)
-R — выдает листинг рекурсивно[2] по подкаталогам
Пример: lsla — позволит получить полный просмотр текущего каталога, включая скрытые файлы.

Позволяет сменить текущий каталог на указанный в аргументе. Если не указан ни один каталог в аргументе, то происходит переход в домашний каталог пользователя $HOME.

Пример: переход из текущего каталога в каталог /usr/share/doc

cd /usr/share/doc

При этом мы не указываем каталог, в котором находимся, т.к. из него мы и выполняем команду.

Пример:
pwd
/home/guest (это результат выполнения команды)

cpr [-i] каталог … каталог
Данная команда выполняет копирование файлов или каталогов, указанные в первых параметрах, в файл или каталог, указанные в последнем.

Опции:
-i — интерактивно- запрашивается подтверждение на перезапись существующих файлов
-r — рекурсивное копирование каталога

Примеры:
Рекурсивное копирование каталога a B b:

Интерактивное копирование файлов из каталога a B b:

Синтаксис: ln [-fs] файл_или_каталог … [ссылка_или_каталог]

Устанавливает ссылку в файловой системе (символьную или жесткую). Если второй операнд является уже существующим каталогом, то ссылки создаются внутри него. В случае, если второй аргумент отсутствует, ссылка создается в текущем каталоге с именем источника.

Опции:
-f — устанавливает ссылку вместо существующего файла
-s — символьная ссылка

Примеры:
Сделать символьную ссылку b на a:

Сделать жесткую ссылку между a и c:

Синтаксис: rm [-f] [-i] файл

Эта команда позволяет удалять файлы или каталоги. Если права доступа не позволяют этого сделать немедленно, то последние выводятся в восьмеричной форме и требуется подтверждение операции

Опции:
-f — не спрашивает подтверждений, удаляет все, что возможно
-i — запрашивает подтверждение на каждый удаляемый файл
-r — выполняет удаление рекурсивно, включая каталоги

Пример: Рекурсивное удаление каталога .mozilla/firefox/gb16cbr1.default/Cache в принудительном режиме:

Синтаксис: mkdir [-p] каталог

Одна из простейших команд, которая создает пустой каталог.

Опции:
-p — данная опция создает также и все несуществующие к этому моменту родительские каталоги указанного места.

Пример:

Синтаксис: rmdir [-p] каталог

Удаляет пустой каталог.

Опции:
-p — удаляет также и все пустые родительские каталоги

Пример: удаление каталога /tmp/a/b/c:

Внимание! Прежде, чем удалять какой либо каталог и его вложения используйте команду «ls –R каталог» для просмотра файлов и существующих подкаталогов, дабы не удалить что то лишнее.

Для создания каталога необходимо иметь права на запись в родительский каталог.

Синтаксис: chmod [-R] ### файл_или_каталог

Данная команда позволяет сменить права доступа к файлам или каталогам, владельцем которых являетесь вы. Мода доступа представляет собой права владельца, группы и всех остальных на чтение, запись и исполнение.

Опции:
-R — выполнение рекурсивной операции
### — трехзначное восьмеричное число, определяющее права доступа
u — для владельца
g — для группы
o — для остальных
a — для всех
+ — добавить права
= — установить права
-(минус) — отменить права
r — чтение
w — запись или создание/удаление файлов в каталоге
x — исполнение или возможность перейти в каталог
s — установка бита set-uid, set-gid
t — файлы из каталога может удалять только их владелец

Пример:

Синтаксис: chown [-R] владелец[:группа] файл_или_каталог…

Позволяет сменить владельца (и группу, если указана) файла или каталога.

Опции:
-R — рекурсивное выполнение операции

Пример:

Поменяем у файла test владельца на oracle, а группу на dba:

Следующий подраздел работы с файлами и каталогами это просмотр содержимого файла, мы с вами ранее ознакомились с командой cat и принципами ее работы, т.к. существуют дополнительные команды и их не мало, то я ниже указываю ссылку на ресурс, где вы можете более подробно ознакомиться с ними:

http://www.linuxink.ru/static/Docs/Courses/advuserguide/advuserguide/ch07s03.html

Команды архивации, компрессии и декомпрессии в Linux

В своем руководстве данный раздел хочу выделить особенно, т.к. он содержит в себе описание трех команд, но эти команды имеют большое количество опций, которые мы с вами разберем. Поехали…

Первая команда — tar — она позволяет проводить архивацию на внешних устройствах или в файлах.

Опции:

Здесь в отличии от других команд, предназначенных для работы с файлами и каталогами опции разбиваются на 2 части обязательные и необязательные.

Обязательные:
с
 — создать
r — дописать файлы в конец архива
t — вывести листинг архива
u — добавить файл, если его в архиве нет
x — извлечение указанных файлов из архива (по умолчанию — все)

Необязательные:

f myfile — работать с файлом myfile, вместо устройства, установленного по умолчанию. Символ ‘-‘ в качестве имени файла означает стандартный вывод или ввод, в зависимости от контекста. Т.к. у нас GNU-версия, мы можем использовать данную команду в сети. Полное имя архива в этом случае — пользователь@хост:/файл, но необходимо иметь права доступа на архивный хост по r-службам.
w — запрашивает разрешение
v — отображение большей информации (verbose)
z — использовать компрессию gzip
j — использовать компрессию bzip2

Примеры: создать архив test.tar из каталогов a и b:

Оценить содержимое test.tar:

Извлечь файл a/a из архива test.tar:

Вторая команда — cpio — она позволяет проводить архивацию на внешних устройствах или в файлах.

Синтаксис: cpioi[cdkmrtuv] [-H формат]

Опции данной команды так же делятся на 2 типа, как и у предыдущей команды:

Обязательные:
-i (Copy-In mode)
 — читает список файлов из стандартного ввода и выводит созданный архив на стандартный вывод
-o (Copy-Out mode) — читает архив из стандартного ввода и распаковывает содержащиеся в нем файлы
-p (Copy-Pass mode) — совмещает в себе Copy-In и Copy-Out, используется для копирования набора файлов в каталог.

 

Необязательные:
-a
 — переустанавливает access time таким образом, чтобы они не выглядели только что прочитанными
-c — использовать старый переносимый SRV4 ASCII формат
-d — создает каталоги в случае необходимости
-k — пропускает сбойные заголовки при ошибках ввода/вывода
-l — предпочтительное создание ссылки, а не копирование
-m — восстановление modification time при извлечении файлов
-r — переименование файлов интерактивно
-t — выводит содержимое архива, при этом сами файлы НЕ извлекаются
-u — безусловное копирование (по умолчанию новые файлы не замещаются старыми)
-v — выдавать больше информации
-A — добавляет файлы в архив, требует опции –o. Работает только с файлами, но не устройствами
-L — следование символьным ссылкам
-O myfile — Имя myfile архива. В нашей GNU-версии можно использовать в сети. Полное имя архива будет таким — пользователь@хост:/файл, не необходимо иметь права доступа на архивный хост по r-службам
-H формат — использовать архив указанного формата. О типах форматов, поддерживаемых данной версией cpio, вы можете ознакомиться в официальной документации.

Третья и четвертая команды — gzip и gunzip

Синтаксис: gzip [-cdv] [файл…]

Сжатие и разжатие файлов. Стандарт для GNU-проекта. Сжимает по алгоритму LZ77. Сейчас разработаны и другие программы, предназначенные для той же цели, например bzip2, bunzip2, осуществляющие более эффективное сжатие по алгоритму Burrows-Wheeler’a и имеющие аналогичные опции.

Опции:
-c — произведение операций с потоками стандартного ввода и вывода
-d — разжатие
-v — выдача большей информации

Примечание:

В комплекте с GNUzip поставляются так же утилиты zcat, zmore, zless, работающие как и соответствующие им обычные UNIX-команды, а так же gzexe, осуществляющая компрессию исполняемых файлов.

Подсчет контрольных сумм в Linux

В связи с тем, что данные команды являются важными, при администрировании серверов и их сравнения, они были вынесены в отдельный раздел, при этом их всего 2 и они достаточно просты в использовании:

Поиск и проверка состояния файлов в Linux

В данном разделе стоит упомянуть, тот факт, что опции команд предназначенных для поиска и проверки состояния файлов имеют больший синтаксис нежели предыдущие команды. Поэтому при вводе каких-либо опций будьте внимательны.

Синтаксис: find каталогвыражение

Поиск файлов[3] в указанном списке каталогов согласно выражению.

Опции: Выражение может быть составлено из следующих операторов:
-name myfile — поиск по заданному имени (возможно использование метасимволов)
-perm права_доступа — поиск по правам доступа в виде 3-хзначного восьмеричного числа, которые мы разбирали ранее (9 младших бит моды). Если первым символом прав является ‘-‘, используются младшие 11 бит
-type [b|c|d|p|f] — истинно, если тип файла — специальный блок-ориентированный, специальный байт-ориентированный каталог, FIFO-канал или обычный файл
-links число_связей — истинно, если файл имеет указанное число_связей
-user пользователь — владельцем файла является пользователь
-group группа — файл принадлежит группе
size размер[c] — размер файла равен числу блоков (по 512 байт), указанному в аргументе размер. Если после числа стоит с, — размер указан в байтах
-atime дней — к фалу в последние дней осуществлялся доступ. Сама команда find тоже переустанавливает atime
-mtime дней — файл модифицировался в течение дней
-ctime дней — у файла в течение дней производилась смена атрибутов
-exec команда — истинно, если при выполнении команды был возвращен код 0. Аргумент {} заменяется именем текущего файла
-ok команда — аналогично –exec, но перед исполнением команды требуется подтверждение
-print — всегда истинно. Печатает имя файла на стандартный вывод
-newer myfile — истинно, если текущий файл модифицировался позже, чем myfile
(выражение) — истинно, если все атомарные выражения в выражении истинны

Выражения, записанные подряд, комбинируются по И. Атомарные выражения могут комбинироваться с помощью следующих логических операторов:

! — унарное отрицание
-o — выражения комбинируются по ИЛИ

Команды which и type

Синтаксис:

Выводят полный путь до команды, если она находится в пути поиска $PATH, причем which — исполняемый файл, а type — встроенная команда некоторых интерпретаторов.

Примеры:
Определить местоположение команды which

Команда file

Синтаксис: file файл…

Данная команда выводит типы указанных файлов. Типы файлов определяются согласно описанию в файле magic, обычно находящемся в /etc или /usr/lib
Например, команда file * выведет на экран общую информацию о директориях и файлах, указывая их тип.

Команда test

Синтаксис: test выражение

[выражение]

Эта команда вычисляет условные выражения

Операнды выражения:
-r файл — файл существует и доступен для чтения
-w файл — файл существует и доступен для записи
-x файл — файл существует и доступен для исполнения
-f файл файл существует и является обычным файлом
-d файл — файл существует и является каталогом
-c файл — файл существует и является байт-ориентированным[4] устройством
-b файл — файл существует и является блочно-ориентированным[5] устройством
-p файл — файл существует и является FIFO-файлом
-u файл — файл существует и у него установлен атрибут setuserid
-g файл — файл существует и у него установлен атрибут setgroupid
-s файл — файл существует и его размер > 0
-t [файловый дескриптор] — файловый дескриптор[6] (по умолчанию 1) — терминал
файл1 –nt файл2 — время модификации файла1 больше времени модификации файла2
файл1 –ot файл2 — время модификации файла1 меньше времени модификации файла2
файл1 –ef файл2 — файл1 и файл2 — один и тот же файл
-n строка — длина строки не равна 0
строка1 = строка2 — равенство строк
строка1 != строка2 — неравенство строк
строка ~ образец — строка соответствует образцу
строка !~ образец — строка не соответствует образцу
строка1 < строка2 — строка1 лексикографически[7] меньше строки2
строка1 > строка2 — строка1 лексикографически больше строки2
выражение1 –a выражение2 — объединение выражений по И
выражение1 –o выражение2 — объединение выражений по ИЛИ
!выражение –a выражение2 — унарное отрицание[8] выражения

[1] FIFO (акроним First In, First Out — «первым пришел — первым ушел») — способ организации и манипулирования данными относительно времени и приоритетов в Linux.

[2] Рекурсия Linux — это способ организации вспомогательного алгоритма (подпрограммы), при котором эта подпрограмма (процедура или функция) в ходе выполнения ее операторов обращается сама к себе. Вообще, рекурсивным называется любой объект, который частично определяется через себя.

[3] В наборе Linux GNU Utilites существуют средства, облегчающие эту задачу — locate и updatedb

[4] Байт-ориентированные устройства — не имеют адреса и не позволяют производить операцию поиска, они генерируют или потребляют последовательность байтов.

[5] Блочно-ориентированные устройства — хранят информацию в блоках фиксированного размера, каждый из которых имеет свой собственный адрес.

[6] Файловый дескриптор — это неотрицательное целое число. Когда создается новый потом ввода-вывода, ядро возвращает процессу, создавшему поток ввода-вывода, его файловый дескриптор. В операционной системе Debian таким дескриптором является сам терминал/консоль.

[7] Лексикографический порядок — отношение линейного порядка на множестве слов длины над некоторым упорядоченным алфавитом.

[8] Унарная операция — это операция над одним операндом (побитовое отрицание, унарный минус — меняет знак числа).

Не забывайте подписываться на наши ресурсы! А именно, группу ВК, страницу Facebook, Twitter, и конечно же наш Youtube-канал!

Предыдущая статья — Linux — Краткий путь к системе Debian 8.x (Часть 3)

Лицензионное соглашение

Авторские права публикуемых материалов полностью или частично принадлежат авторам сайта Pechenek.NET в соответствии со статьями 1252 и 1301 ГК РФ. Любое распространение должно быть согласовано с автором материала или с указанием ссылки на первоисточник.