русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Файлы в linux

1. Структура файловой системы и каталогов linux

Устройство файловой системы linux очень сильно отличается от устройства в windows. Для начала, в линуксе нет дисков C или D. Один физический диск (или несколько) при установке системы разбивается на каталоги и подкаталоги. Основной, корневой каталог обозначается символом / (слэш) Вместо файла подкачки существует отдельный раздел /swap. Каждый каталог можно форматировать в нужную файловую систему, в зависимости от задач пользователя. Например Ext3, ReiserFS, JFS или другую. В разных дистрибутивах линукс схема и назначение некоторых каталогов может несколько отличаться. Можно создавать свои каталоги. Например, разместить на отдельном жестком диске каталог с фильмами. В корневом разделе он будет выглядеть как /films.

 

 

Описание основных каталогов и подкаталогов в 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 - каталог для временных файлов.

 

 

2. Команды работы с архивами

Имена упакованных файлов в большинстве случаев оканчиваются на:

  • .tar - файл усобран утилитой tar;
  • .gz - файл упакован архиватором gzip;
  • .bz2 - файл упакован архиватором bzip2 (сжимает эффективнее, чем gzip).
  • .tar.bz2 - файл усобран утилитой tar и упакован архиватором bzip2 .
  • .tar.gzip - файл усобран утилитой tar и упакован архиватором gzip .
  • .zip - zip-файлы.
  • .rar - rar-файлы.

Утилита 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 есть утилиты, позволяющие просмотреть упакованные файлы сразу без предварительной их распаковки.

  • bzcat - просмотр упакованного файла bzip2 без распаковки
  • bzless - просмотр упакованного файла bzip2 без распаковки
  • zcat - просмотр упакованного файла gzip без распаковки
  • zless - просмотр упакованного файла gzip без распаковки

 

 

3. Свойства файла

Cодержимое файлов в Linux- это только половина информации. Каждый файл и директория, помимо прочего, имеют атрибуты, которые описывают владельца, размер, права доступа и другую информацию. Команда Is -1 выводит некоторые из этих атрибутов, а для просмотра остальных атрибутов используются описанные ниже команды,с некоторыми из них вы уже ознакомались в предыдущих работах:

  • stat - Вывести атрибуты файлов и директорий
  • touch - Изменить временные метки файлов или директорий
  • chown - Изменить владельца файлов или директорий
  • chgrp - Изменить принадлежность группедля файлов или директорий
  • chattr - Изменить расширенные атрибуты файлов или директорий
  • lsattr - Вывести список расширенных атрибутов файлов или директорий

В данной работе вам предстоит ознакомится с командами:

  • du - Показать, сколько места на диске занимают файлы и директории
  • file - Определить (попытаться угадать) тип файла

 

 

4. Поиск файлов

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

  • find - Искать файл в иерархии директорий
  • slocate - Создать индекс файлов и искать строку в этом индексе
  • which - Искать исполняемые файлы в ваших директориях поиска (команда)
  • type - Искать исполняемые файлы в ваших директориях поиска (встроенная функция bash)
  • whereis - Искать исполняемые файлы, документацию и файлы с исходным кодом

Для поиска произвольного файла можно использовать утилиту 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оздание индекса конкретной директории и всех ее поддиректорий.

 

 

5. Работа с текстом в файлах

Одна из сильных сторон Linux - это работа с текстом: обработка текстовых файлов (или стандартного потока ввода) различными преобразованиями. Любая программа, которая читает данные из стандартного потока ввода и пишет данные в стандартный поток вывода, имеет отношение к текущему разделу, но в работах мы рассмотрим только самые употребительные и мощные из них.

Команды обработки текста используются при написании скриптов с целью автоматизации работы с файлами при администрировании системы.

  • cut - Выделить колонки из файла
  • paste - Вставить колонки
  • tr - Преобразовать символы в другие символы
  • sort - Сортировать строки текста в соответствии с различными критериями
  • uniq - Найти идентичные строки в файле
  • wc - Напечатать число переводов строк, слов и байт для каждого ФАЙЛА
  • iconv - Преобразует указанные файлы из одной кодировки в другую.
  • diff - Поиск различий между двумя файлами
  • join - Cоединение файлов

 

 

6. Способы объединения команд

Существует возможность объединять несколько команд в одной командной строке. Это можно делать несколькими способами:

Последовательное выполнение

Команды выполняются одна за другой, не зависимо от результата их исполнения. В качестве разделителя выступает символ точки с запятой («;»). В качестве примера можно рассмотреть составную команду 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

Просмотров: 12582

Вернуться в оглавление:ОС Linux




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.