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)

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

Опиши свой кейс здесь, если у тебя остались вопросы и мы обязательно ответим...