Настройка и работа в Linux

         

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


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

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

Сразу после загрузки и авторизации мы оказываемся в собственном домашнем каталоге, сокращенно называемом $HOME. Чего нам хотелось бы перво-наперво? Правильно, просмотреть его содержимое. Что мы и делаем командой ls. Результат ее выполнения - нечто вроде: Desktop/ cat list1 song/ wallpapers/ GNUstep/ different.jbd list2 test/ abelskaya.jbd galich.jbd mysite/ test01.txt allwork/ image1.raw mysongs.jbd tmp/ autosave/ kjukebox.log nsmail/ visbor.jbd

то есть сплошного списка, где файлы и каталоги следуют без разбора в порядке кодов ASCII (различить их можно только по знаку / в конце имени каталога). Причем, как мы точно знаем, не все файлы и каталоги: ведь, помнится, мы в свое время редактировали конфигурационный файл командной оболочки bash, которого в нашем списке не наблюдается. Попробуем его выловить, дав команду ls -A

где A (от all) - опция, предписывающая вывести список всех файлов. Результат - на лицо, то есть на экране: .RealNetworks_RealMediaSDK_60 .mime.types .RealNetworks_RealPlayer_60 .netscape/ .RealNetworks_RealShared_00 .qcad/ .Xauthority .sane/ .Xdefaults .vimrc .Xdefaults.old .xap/

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

Ну а получить полную информацию о файлах и каталогах можно, дав команду ls -l


результатом чего будет список вроде этого: drwxr-xr-x 5 alv alv 4096 Jan 26 04:01 Desktop/ drwxr-xr-x 5 alv alv 4096 Jan 15 05:20 GNUstep/ -rw-r--r-- 1 alv alv 2687 Jan 17 20:26 abelskaya.jbd drwx------ 10 alv alv 4096 Jan 24 12:22 allwork/ drwxr-xr-x 2 alv alv 4096 Jan 18 17:22 autosave/

где знак в первой слева позиции обозначает тип файла:- - обычный файл, d - каталог (который по большому счету тоже файл), а отсутствующий в примере знак | - символическая ссылка (не путать с оператором канала).

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

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

Копирование осуществляется командой cp с двумя обязательными аргументами: первый - имя файла-источника, и второй - приемник (каталог или устройство, которое, правда, тоже каталог). Вместо имени (или мен) файла можно указать шаблон. Например, командой cp $HOME/* mnt/floppy

все файлы из домашнего каталога будут скопированы на дискету. А с помощью могучего параметра -R можно скопировать также и содержимое подкаталогов всех уровней вложенности. Так, команда cp -R /mnt/cdrom $HOME

скопирует в домашний каталог все содержимое CD ROM с сохранением структуры его каталогов. Конечно, если оно туда поместится, во-первых, и если CD ROM предварительно вставлен в привод и, при отстутствии опции supermount, смонтирована командой mount, во-вторых.

Несколько ранее я жаловался, что при использовании файловых менеджеров при этом обычно возникают сложности, связанные с наследованием новообразуемыми каталогами атрибутов каталогов исходных. Так вот, с командой cp ничего подобного не произойдет: атрибут READ ONLY каталогов с CD ROM будет благополучно проигнорирован. Лишний аргумент в пользу командной строки при файловых операциях...

Перемещение и переименование выполняются одной и той же командой - mv (от move) с именами источника и приемника в качестве аргументов. При перемещении в качестве источника может быть указано любое количество файлов или шаблоны их имен, а с параметром -R перемещение будет выполнено рекурсивно. Ну а переименовывать файлы, естественно, придется по одному, с указанием старого имени в качестве первого аргумента и нового - в качестве второго.

Столь же часто возникает необходимость сгруппировать некие файлы в одном каталоге. Для чего последний нужно создать. Что делается командой mkdir (от make directory) с желаемым именем каталога в качестве аргумента. Напомню, что результатом команды mkdir newdir



будет появление подкаталога в текущем каталоге, при mkdir ../newdir

он появится уровнем выше, а при mkdir /newdir

так просто в корневом. Если нужно создать каталог по некоему конкретному адресу, его следует прописать полностью, например mkdir /home/myname/work/newdir

с указанием абсолютного пути, или mkdir work/newdir

относительно текущего каталога myname. Все это относится и к любым другим файловым операциям.

И наконец, хотя все созданные нами файлы являют собой нетленные ценности, иногда их все же приходится удалять. Делается это командой rm (от remove), в том числе при использовании ее с параметром -R - рекурсивно. Нужно только запомнить, что конструкция вроде rm -R /

способна благополучно удалить с вашего диска все (ВСЕ) файлы и каталоги, включая и раздел FATxx, если он смонтирован. Правда, для этого потребуются права суперпользователя. От лица пользователя обычного вы можете удалить только все свои собственные файлы.

Тем не менее, для удаления ненужных каталогов лучше прибегнуть к команде rmdir (от remove directory) - она способна удалить только пустой каталог.

На протяжении всех саг я неоднократно призывал к регулярному резервному копированию. И буду призывать - только это скучное занятие, вошедши в привычку, подобно чистке зубов, способно спасти при фатальном крахе системы. Но копированию как таковому (о котором - ниже) обычно предшествует этап архивации данных и их компрессии.

В мире DOS/Windows архивация и компрессия столь же неразделимы, как Ленин и Партия. Мне, например, не известны примеры архиваторов для этой платформы, которые не были бы одновременно и компрессорами. Но в системах Unix-Linux это понятия разные.

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

Так вот, Linux располагает двумя инструментами командной строки - командами tar и gzip, типичными представителями клана архиваторов и компрессоров, соответственно.

Формат команды tar следующий: tar n archivefile file1 file2...



где n - литера для требуемой опции: обратите внимания, что дефис перед опцией не ставится. Хотя для получения информации о команде все равно используется конструкция tar --help. Из которой и можно узнать о многочисленных опциях этой команды. Среди них - создание нового архива и записи его в файл (c и f, соответственно, это - разные понятия!), добавления в него файлов (r), просмотр состава архива (t), обновление и удаление файлов из архива, ну и конечно, извлечения их. Многочисленные опции позволяют сохранить не только пути архивированных файлов, но и всю информацию о правах доступа к ним. То есть - создать именно резервную копию, идентичную исходному набору файлов, что, в случае повреждения последних, позволяет их адекватное восстановление.

Ну а gzip - это именно и только чистый компрессор. Формат команды - gzip file, где file - имя файла, подлежащего сжатию. Следует помнить, что файл этот исчезает, замещаясь своим сжатым вариантом - файлом file.gz. Gzip может использоваться вместе с gunzip - программой, обеспечивающей развертывание сжатого файла. Впрочем, обе эти программы, при использовании соответствующей опции, выполняют обратную исходной операцию (прямая операция выполняется каждой из них без всяких опций).

Команды tar и gzip обычно используются в паре - первой создается архив, второй он сжимается для экономии места. В итоге образуется файл вида *.tar.gz. Давняя традиция совместного применения этих программ привела к тому, что они стали не только взаимодополняющими, но и взаимозаменяющими: средствами любой из них можно как создать архив с последующим его сжатием, так и развернуть компрессированный архив с полным восстановлением файлов в их исходной позиции.

В итоге большинство программ для Linux, которые можно обнаружить в Интернете, распространяются именно в формате *.tar.gz, а некоторые - и исключительно в нем.

К стати, на протяжении всего повествования неоднократно говорилось о всякого рода программах. Где же они берутся и как устанавливаются? Настало время поговорить и на эту тему, которую можно озаглавить как


Содержание раздела