Назад | Оглавление | Вперед |
![]() |
Лабораторная работа 6Основные команды файловой системы.Цель работы: Получение практических навыков работы с основными командами файловой системы. |
Начальные сведения о файловой системе Unix/Linux вы можете прочитать здесь или в описании лабораторной работы 1 и лабораторной работы 2
Описание основных каталогов и подкаталогов в linux:
/bin — В нем находятся основные файлы команд.
/boot — В этом каталоге находится загрузчик системы (Grub или Lilo) и файлы, необходимые для загрузки системы.
/dev - В каталоге dev размещаются файлы описания устройств компьютера. В linux все устройства считаются файлами. Даже порты, диски, принтеры - все файл.
/etc - Каталог, в котором находятся конфигурационные файлы системы, программ, стартовые сценарии.
/etc/rc.d - файлы команд, запускающие приложения при загрузке системы.
/etc/passwd - в файле зашифрованы все данные о пользователях.
/etc/fstab - в файле содержится информация о файловых системах, автоматически монтируемых при запуске системы
/home - Пользовательский, домашний каталог. В linux может быть множество пользователей. Каждый пользователь имеет свой каталог.(например /home/user) В нем находятся любые файлы пользователей к которым он имеет непосредственный доступ записи/удаления. Также в домашнем каталоге находятся пользовательские программы, настройки. Их имена начинаются на точку и выглядят, к примеру, вот так - .kde .fonts
/lib - Здесь находятся различные библиотеки системы, модули ядра
/lib/firmware - несвободные модули ядра с закрытой лицензией
/lib/modules - подгружаемые модули ядра. Например драйверы устройств, файловых систем.
/mnt - В этот каталог временно монтируются различные подключаемые устройства. Флешки, дискеты, диски
/opt - В каталог устанавливаются дополнительные пакеты программ.
/proc - Каталог с виртуальной файловой системой. В нем, в виде файлов содержится информация о находящихся в системе процессах.
/proc/modules - в этом файле находится информация о списке загруженных модулей ядра.
/proc/cpuinfo - подробная информация о процессоре.
/proc/meminfo - информация об оперативной памяти.
/proc/devices - драйверы устройств встроенных в ядро системы.
/proc/uptime - информация про uptime системы. Т.е. Время работы без перезагрузки.
/proc/version - версия используемого системой ядра linux.
Все эти данные можно выводить в консоли с помощью команды cat.
Например cat /proc/cpuinfo
/root - Домашний каталог администратора(суперпользователя) системы. Используется администратором в случае если основной каталог home по каким-то причинам недоступен.
/sbin - Тут находятся основные программы выполняемые root.
/tmp - Каталог для временного хранения данных программами.
/usr - Основной каталог для установки программ. Кроме программ, в нем находятся файлы документации, исходные коды программ, ядра.
/usr/local - в этом каталоге находятся отдельно устанавливаемые пакеты программ.
/usr/src - исходники установленных программ и ядра.
/usr/man - файлы руководств к установленным программам.
/usr/lib - неизменяемые конфигурационные файлы и данные программ.
/var - В каталоге var находятся данные которые часто меняются в процессе работы системы. Например логи, кэши программ.
/var/local - изменяемые данные программ, установленных администратором в /usr/local.
/var/log - логи различных системных программ.
/var/run - временные файлы. Информация в них хранится до очередной перезагрузки системы.
/var/tmp - каталог для временных файлов.
Имена упакованных файлов в большинстве случаев оканчиваются на:
Утилита tar является одной из самых мощных утилит, предназначенных для сохранения файлов на магнитную ленту или в архив на диске и для восстановления отдельных файлов из архива.
Родственной "tar"-утилитой является утилита cpio (см. man cpio или cpio --help или info cpio), которая копирует файлы в архивы и из них.
Однако, основным средством архивирования в UNIX (а, следовательно, и в Linux) является комплекс из двух программ - tar и gzip. Хотя никто не запрещает пользоваться arj, pkzip, lha, rar и т. д. - версии этих программ для Linux общедоступны. Просто уж исторически сложилось, что пользователи Unix/Linux чаще применяют именно tar и gzip, и именно в таком формате распространяется большая часть программного обеспечения для Unix. Поэтому овладеть работой с tar и gzip - дело чести любого пользователя Linux.
У пользователя, привыкшего к архиваторам типа arj, которые собирают файлы в единый архив и сразу "сжимают" их, может возникнуть вопрос "А зачем использовать две программы?" Все дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет их в единый файл с последовательным доступом для последующей записи на ленту. По умолчанию этот архивный файл создается на ленточном накопителе, точнее на устройстве /dev/rmt0. Если вы хотите создать архивный файл на диске, то необходимо использовать команду tar с опцией f, после которой указывается имя архивного файла (подробнее опции tar)
Примеры
# tar -cf primer.tar /home/primer.txt | # Создать tar-архив с именем primer.tar содержащий /home/primer.txt; |
# tar -czf primer.tar.gz /home/primer.txt | # Cоздать tar-архив с сжатием Gzip по имени primer.tar.gz (утилита tar вызывает из под себя Gzip); |
# tar -cjf primer.tar.bz2 /home/primer.txt | # Cоздать tar-архив с сжатием Bzip2 по имени primer.tar.bz (утилита tar вызывает из под себя Bzip2); |
# tar -xf primer.tar | # Распаковать архив primer.tar в текущую папку; |
# tar -xzf primer.tar.gz; | # Распаковать tar-архив с Gzip; |
# tar -xjf primer.tar.bz | # Распаковать tar-архив с Bzip2; |
Сжатие и упаковка файлов также может выполняться с помощью следующих утилит:
gzip - Сжать файлы с помощью программы GNU Zip gunzip - Разжать файлы GNU Zip compress - Сжать файлы традиционным методом Unix uncompress - Разжать файлы традиционным методом Unix zcat - Сжать/разжать файл через стандартные потоки ввода/вывода (gzip или compress) bzip2 - Сжать файлы в формате BZip bunzip2 - Разжать файлы BZip zip - Сжать файлы в формате Windows Zip unzip - Разжать файлы Windows Zip rar - Сжать файлы в формате rar unrar - Разжать файлы rar
Хотя программа tar создает архивы, она, как было сказано, не сжимает архивы, а просто соединяет отдельные файлы в единый архивный файл. Для сжатия этого файла часто применяют к оманду gzip.
Поскольку программа gzip не умеет сохранять в одном архиве несколько файлов, то обычно ее применяют для сжатия архивов, созданных программой tar.
В последнее время все чаще вместо программы gzip используется архиватор bzip2, который обеспечивает более высокую степень сжатия и работает несколько быстрее, т.к. bzip2 был написан для замены gzip. Несмотря на это, gzip все еще используется для совместимости со старыми системами.
Внимание! По умолчанию и gzip, и bzip2 удаляют упакованные (или распакованные) файлы, если только вы не используете опцию -c. В bzip2 вы можете избежать этого, воспользовавшись специальной опцией. В gzip эквивалентной опции нет.
В Linux/Unix есть утилиты, позволяющие просмотреть упакованные файлы сразу без предварительной их распаковки.
Cодержимое файлов в Linux- это только половина информации. Каждый файл и директория, помимо прочего, имеют атрибуты, которые описывают владельца, размер, права доступа и другую информацию. Команда Is -1 выводит некоторые из этих атрибутов, а для просмотра остальных атрибутов используются описанные ниже команды,с некоторыми из них вы уже ознакомались в предыдущих работах:
В данной работе вам предстоит ознакомится с командами:
Linux-системы запросто могут содержать десятки и сотни тысяч файлов. Как найти конкретный файл, когда он вам понадобился? Первый способ - это упорядочить ваши файлы по директориям с продуманной схемой, но есть несколько других способов поиска файлов, каждый из которых нужно использовать в зависимости от того, что вы ищете. Для этого чаще всего используются следующие утилиты:
Для поиска произвольного файла можно использовать утилиту find , которая упорно перебирает файл за файлом во всех директориях в поисках нужного файла. Утилита slocate намного быстрее, она осуществляет поиск в заранее созданном индексе, который вы генерируете в случае необходимости (Fedora генерирует этот индекс ежедневно по умолчанию).
Для поиска исполняемых файлов утилиты which и type проверяют все директории в пути поиска вашего командного процессора. Команда type встроена в командный процессор bash (и, следовательно, доступна только при работе в bash); type работает быстрее which и может искать среди псевдонимов командного процессора. В отличие от них, команда whereis исследует заранее известный набор директорий, а не директории вашего пути поиска.
Например:
find / -type f -name myfile -print - Найти определенный файл с именем myfile, начиная с корня.
find / -type d -print - Вывести имена всех директорий.
slocate -U directory -о /tmp/myindex - Cоздание индекса конкретной директории и всех ее поддиректорий.
Одна из сильных сторон Linux - это работа с текстом: обработка текстовых файлов (или стандартного потока ввода) различными преобразованиями. Любая программа, которая читает данные из стандартного потока ввода и пишет данные в стандартный поток вывода, имеет отношение к текущему разделу, но в работах мы рассмотрим только самые употребительные и мощные из них.
Команды обработки текста используются при написании скриптов с целью автоматизации работы с файлами при администрировании системы.
Последовательное выполнение
Команды выполняются одна за другой, не зависимо от результата их исполнения. В качестве разделителя выступает символ точки с запятой («;»). В качестве примера можно рассмотреть составную команду du -sh; date , которая выводит на экран содержимое домашней директории, а затем текущие дату и время.
Условное выполнение (И)
Проверяется код завершения первой программы, если он равен 0, производится выполнение второй программы, и так далее. Таким образом, последняя команда выполнится только при успешном завершении всех предыдущих. В качестве разделителя выступают два амперсанда («&&»). В качестве примера можно рассмотреть составную команду test -r /tmp/txt && cp /tmp/txt , которая проверяет возможность чтения файла /tmp/txt и в случае успеха, копирует этот файл в локальную директорию.
Условное выполнение (ИЛИ)
Проверяется код завершения первой программы, если он не равен 0, производится выполнение второй программы, и так далее. Последняя команда будет запущена только если ни одна из предыдущих не закончилась успешно. В качестве разделителя выступают две вертикальный черты («||»). В качестве примера можно рассмотреть составную команду test -d /tmp/dir || mkdir /tmp/dir, которая проверяет существование директории /tmp/dir и если её нет, создаёт её.
Конвеер
Выше показано, как использовать команду sort в качестве фильтра. При этом предполагается, что вы откуда-то получили данные в файл, или ввели данные с клавиатуры своими собственными руками. А что, если данные, которые вы хотите отсортировать, являются выходными данными другой программы, например, такой как ls? Если вы используете при сортировке опцию -r, данные будут расположены в порядке, обратном лексикографическому. Если вы хотите получить перечень файлов вашего каталога в обратном порядке, один из способов сделать это будет:
/home/user/papers# ls english-list history-final masters-thesis notes /home/user/papers# ls > file-list (перенаправление резуоьтата из stdout в файл )file-list /home/user/papers# sort -r file-list notes masters-thesis history-final english-list /home/user/papers#
Здесь мы сохранили результат работы команды ls в файле, а затем выполнили sort -r над этим файлом. Но это требует создания временного файла для хранения результата работы ls.
Выход из положения дает "конвейер" (англ., pipeline). Конвейер ("|")- это еще одно замечательное свойство shell, которое позволяет связывать последовательность команд в конвейер, где stdout первой команды посылается прямо на stdin второй команды и так далее. В нашем примере мы хотим послать stdout команды ls на stdin команды sort. Символ "|" олицетворяет конвейер:
/home/user/papers# ls | sort -r notes masters-thesis history-final english-list /home/user/papers#
Эта команда намного короче и, очевидно, проще набирается. Другой полезный пример. Команда
/home/user/papers# ls /usr/binвыдает на дисплей длинный список имен файлов, большинство из которых слишком быстро промелькнет на экране, чтобы вы успели прочитать их. Давайте подключим к просмотру перечня имен файлов каталога /usr/bin команду more.
/home/user/papers# ls /usr/bin | moreТеперь вы можете постранично листать файл в свое удовольствие.
Также можно связать в конвейер более, чем две команды. Команда head представляет из себя фильтр, который отображает первые строки входного потока (здесь, пришедшего по конвейеру). Если мы хотим отобразить последнее имя текущего каталога, упорядоченного по алфавиту, мы можем написать:
/home/user/papers# ls | sort -r | head -1 notes /home/user/papers#где head -1 просто выдает первую строку получаемого входного потока (в данном случае это отсортированный в обратном порядке перечень имен файлов текущего каталога, выданных командой ls).
Внимание! Для выполнения некоторых заданий необходимо использование способов объединения команд, и, для удобства, перенаправления ввода/вывода, при этом может понадобиться использование команд из предыдущих работ.
Описание файлов /etc/passwd, /etc/shadow и /etc/groups
Синтаксис команд см. в Избранные команды и свойства Unix. или в консоли с помощью man.
Назад | Оглавление | Вперед |