Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
Глава 3 Добро пожаловать в Linux В этой главе мы начнем знакомиться с самим Linux. Надеюсь, что вы уже установили систему, а не просто прочитали предыдущую главу, потому что все , что мы будем рассматривать, лучше всего будет тут же проверять на практике . Так материал будет лучше откладываться в памяти и усваиваться. Нам предстоит поближе познакомиться с файловой системой, основными конфигурационными файлами и командами, которые пригодятся в каждо- дневной работе. ОС Linux может работать в двух режимах — графическом и текстовом. Мы будем разбирать одновременно оба режима. И все же, кон- соли будет уделяться достаточно много внимания, потому что зачастую с ее помощью можно быстрее, нежели через графические утилиты, решить какие- либо проблемы. Я постараюсь показать вам преимущество консоли перед курсором мыши. Дело в том, что серверы на предприятиях должны стоять в отдельной комна- те и, возможно, даже без монитора. Управление происходит через удаленную консоль , и визуальные возможности Linux не используются. Тогда зачем за- гружать тяжелые графические библиотеки, файлы и другие ресурсы? Это же пустое расходование памяти! Лучше освободить ее для более полезных вещей Графический режим необходим для работы с пользовательскими утилитами. Он также может быть полезен на первоначальном этапе настройки сервера. А если учесть, что не все компьютеры на базе Linux являются серверами, и домашние станции тоже могут работать на этой ОС, то удобный графиче- ский интерфейс необходим. Как видите, возможность работать в двух режимах — это преимущество Linux, а не недостаток. Если бы в Windows можно было выгрузить из памяти графическую оболочку и оставить только командную строку, то вы смогли Глава 3 52 бы сэкономить драгоценную память и повысить надежность этой ОС. Когда не работают графические библиотеки, то и проблемы с ними отсутствуют. Сколько раз мы видели синие экраны с ошибками в драйвере видеокарты? В консоли Linux этого произойти не может. Между прочим, в Windows 2008 есть сервер Windows Core, который запуска- ется в виде окна терминала, в котором можно управлять сервером из команд- ной строки. Создавая эту возможность, Microsoft прислушалась к админист- раторам , которые уже давно требуют текстового режима в этой ОС. Ну зачем нужно загружать сложные графические библиотеки простому файловому серверу ? Вот и я говорю, что абсолютно не нужно. Если вы настраиваете домашний сервер для маленькой сети, то графическую оболочку можно оставить. Но если это промышленный сервер, требующий максимальной доступности, то я рекомендую оставить компьютер в тексто- вом режиме, чтобы обезопаситься от лишних сбоев и повысить производи- тельность 3.1. Файловая система Прежде чем перейти к настройкам системы, нам нужно познакомиться по- ближе с файловой системой Linux. О ее структуре мы уже немного погово- рили в разд. 2.3, когда разбивали жесткий диск. В табл. 2.1 были перечисле- ны разделы, которые можно создать в Linux, а это не что иное, как основные папки , которые находятся в корне файловой системы. Теперь , наверное, нужно было бы перечислить команды, с помощью которых можно управлять директориями и файлами, а также просматривать и редак- тировать их. Но мы сделаем это чуть позже, а сейчас я хочу рассказать лишь об одной программе: Midnight Commander (MC). Это лучшее средство для решения всех описанных выше задач. Программа присутствует в большинст- ве дистрибутивов. Для ее запуска наберите в командной строке mc и нажмите клавишу Файловый менеджер Midnight Commander является аналогом знаменитого файлового менеджера Norton Commander, работавшего в MS DOS. Их функ- ции и даже внешний вид очень похожи. Если вы знакомы с той старенькой утилитой , то будет очень приятно ностальгировать по старым добрым време- нам , сидя в Linux. Программа может работать как в текстовом режиме Linux, так и в окне терминала оконного менеджера. Почему я начинаю знакомство с файловой системой с этой программы? Она проста , удобна и наглядна. Не нужно запоминать множество команд команд- Добро пожаловать в Linux 53 ной строки, и с этой утилитой любят работать не только начинающие, но и профессионалы. Рис . 3.1. Окно терминала с запущенной программой Midnight Commander На рис. 3.1 показано окно терминала, в котором запущена программа MC. Окно состоит из двух независимых панелей, в каждой из которых вы можете видеть файлы и папки текущей директории (имена папок начинаются с пря- мой наклонной черты /). Для перемещения между панелями используется клавиша С правой стороны показана корневая папка. Это самый верхний уровень ва- шей файловой системы. Посмотрите на список папок в этой панели. Боль- шинство названий нам знакомо из табл. 2.1. Каждая из этих папок может находиться в собственном разделе жесткого диска, если при установке вы его создали . Но даже в этом случае в файловой системе вы будете видеть все, как одно целое. Глава 3 54 В разд. 2.3.3 мы говорили про корневой каталог, который в Linux обозначает- ся как /. Именно он является вершиной пирамиды в иерархии всех папок. На- пример , папки пользователя находятся в каталоге /home. Тогда /home/flenov будет определять путь к пользовательскому подкаталогу пользователя flenov. Чтобы попасть в эту директорию, нужно навести на нее курсор и нажать В списке папок и файлов самой первой всегда стоит папка с именем, состоя- щим из двух точек (/..). В реальности каталога с таким именем не существует. Это указатель на родительскую директорию, с помощью которого вы можете попасть на уровень выше. Например, вы находитесь в подкаталоге /home/flenov. Если войти в папку /.., то вы подниметесь на предыдущий уро- вень и окажетесь в директории /home. Внизу окна MC (см. рис. 3.1) можно увидеть строку-приглашение для ввода команд . Это та же строка, что мы видели в терминале, и она позволяет вы- полнять те же директивы. Еще ниже расположена строка меню с подсказками о назначении клавиш 1 (Помощь) — отображение файла помощи по программе; 2 (Меню) — вызов меню основных команд MC; 3 (Просмот) — просмотр выделенного файла; 4 (Правка) — редактирование выделенного файла во встроенном тексто- вом редакторе; 5 (Копия) — копирование выделенного файла или папки. Если выделить файл и нажать клавишу . По умолчанию операция выполняется в текущую директорию проти- воположной панели программы MC; 6 (Перемес) — переместить выделенные файлы или папки. По умолчанию файл будет перенесен в директорию, являющуюся текущей для противо- положной панели программы MC; 7 (НвКтлог) — создать новый каталог в текущем; 8 (Удалить) — удалить выделенные файлы и папки; 9 (МенюМС) — вызвать меню программы MC, которое находится вверху окна ; 10 (Выход) — выход из программы. Файлы и папки, имена которых начинаются с точки, чаще всего являются конфигурационными . Будьте осторожны при их перемещении и редакти- ровании . Конфигурационные файлы нуждаются в максимальной защите. Добро пожаловать в Linux 55 Конечно , вы можете создать собственный файл с именем, у которого в самом начале стоит точка, который не будет конфигурационным, а есть множество файлов без точек, являющихся конфигурационными. Так что точка не явля- ется обязательным индикатором, но призвана привлекать внимание. 3.1.1. Основные команды Давайте рассмотрим основные команды файловой системы, которые мы бу- дем использовать в книге, и заодно подробнее познакомимся с файловой сис- темой Linux. pwd Эта команда выводит на экран полный путь к текущему каталогу. С ее помо- щью вы можете в любой момент узнать, где находитесь, если вдруг заблуди- тесь в этом прекрасном пингвиньем лесу. ls Команда ls выводит список файлов и подкаталогов указанной директории. Если имя каталога (файла) отсутствует в параметрах команды, то отобража- ется содержимое текущего каталога. По умолчанию все настроечные файлы (имена которых начинаются с точки) являются скрытыми. Чтобы их вывести, нужно указать ключ -a : ls -a Если мы кроме этого хотим увидеть не только имена (сжатый формат), но и полную информацию о файлах в каталоге, нужно добавить ключ -l . В ре- зультате мы должны выполнить команду: ls -al Но такая команда отобразит файлы текущего каталога, и не факт, что мы сейчас находимся, например, в каталоге /etc, который хотим просмотреть. Чтобы увидеть его содержимое, после ключей (можно и до них) нужно ука- зать требуемую папку: ls -al /etc П Р И МЕ Ч А Н И Е Более подробную информацию о команде ls можно получить из справочной системы Для этого выполните команду man ls Рассмотрим результат вывода команды ls —al : drwx------ 3 Flenov FlenovG 4096 Nov 26 16:10 . drwxr-xr-x 5 root root 4096 Nov 26 16:21 .. Глава 3 56 -rw-r--r-- 1 Flenov FlenovG 124 Nov 26 16:10 .bashrc -rw-r--r-- 1 Flenov FlenovG 2247 Nov 26 16:10 .emacs -rw-r--r-- 1 Flenov FlenovG 118 Nov 26 16:10 .gtkrc drwxr-xr-x 4 Flenov FlenovG 4096 Nov 26 16:10 .kde По умолчанию список файлов выводится в несколько колонок. Разберем их на примере первой строки: drwx------ — права доступа. О них мы будем подробно говорить в гла- ве 4. Сейчас нам главное знать, что если первая буква " d" , то это дирек- тория ; цифра 3 — указывает количество жестких ссылок; Flenov — имя пользователя, являющегося владельцем файла; FlenovG — группа, которой принадлежит файл; 4096 — размер файла; П Р И МЕ Ч А Н И Е На первый взгляд , директория — не файл и не имеет размера , но не стоит удивляться , что размер директории не равен нулю Грубо говоря , директории — это файлы , в которых находится список файлов директории Размер тоже не случаен — четыре килобайта (4*1024), что равно блоку памяти ( странице ), вы - деляемому для работы с данными Это лирическое отступление , которое мо - жет и не пригодиться в реальной жизни Nov 26 16:10 — дата и время последнего изменения файла; — имя файла. В данном случае это ссылка на текущую директорию. cat Команда позволяет вывести на экран содержимое указанного в качестве ар- гумента файла. Например, вы хотите просмотреть текстовый файл need.txt. Для этого нужно выполнить команду: cat need.txt Это сработает, если файл находится в текущей директории. А если нет? В этом случае можно указать полный путь: cat /home/root/need.txt tac Эта команда, обратная для cat (даже название команды — это слово cat на- оборот ), и она выводит на экран файл в обратном порядке, начиная с послед- ней строки до первой. Добро пожаловать в Linux 57 cd Эта команда позволяет сменить текущий каталог. Для этого необходимо в качестве параметра задать нужную папку: cd /home/flenov Если вы находитесь в каталоге /home и хотите перейти в папку flenov, кото- рая располагается внутри текущей, то достаточно набрать только имя папки flenov: cd flenov Если нужно переместиться на уровень выше, например, из подкаталога /home/flenov в каталог /home, нужно выполнить команду: cd .. Как мы знаем, папка с именем из двух точек указывает на родительский ка- талог . Если перейти в нее, то мы попадем на уровень выше в структуре фай- ловой системы. cp Это команда копирования файла. С ее помощью можно выполнять несколько различных действий: 1. Копировать содержимое файла в другой документ той же папки: cp /home/root/need.txt /home/root/need22.txt Здесь содержимое файла /home/root/need.txt (источник) будет скопировано в файл /home/root/need22.txt (назначение). 2. Копировать файл в другой каталог: cp /home/root/need.txt /home/flenov/need.txt или cp /home/root/need.txt /home/flenov/need22.txt Обратите внимание, что в этом случае в папке назначения файл может быть как с новым, так и со старым именем. 3. Копировать несколько файлов в новый каталог. Для этого нужно перечис- лить все файлы-источники и последним параметром указать папку: cp /home/root/need.txt /home/root/need22.txt /home/new/ В этом примере файлы /home/root/need.txt и /home/root/need22.txt будут скопированы в директорию /home/new. Можно копировать файлы и из разных каталогов в один: cp /home/root/need.txt /home/flenov/need22.txt /home/new/ В этом примере файлы /home/root/need.txt и /home/flenov/need22.txt будут скопированы в директорию /home/new. Глава 3 58 4. Копировать группу файлов каталога или все лежащие в нем файлы. А что если надо скопировать все файлы, начинающиеся на букву "n", из одной директории в другую? Неужели придется их все перечислять? Нет, достаточно указать маску n* , где звездочка заменяет любые символы, на- чиная со второго: cp /home/root/n* /home/new/ Если нужно скопировать все файлы, имена которых начинаются символа- ми "ra" и заканчиваются буквой "t", то маска будет выглядеть как ra*t Это далеко не полный список возможностей команды копирования. Она дос- таточно сложная и мощная, и позволяет выполнить за один вызов любую за- дачу копирования. find Для поиска информации в файловой системе используется команда find Файловая система сильно разветвлена, и найти нужный файл бывает непро- сто . В простейшем варианте команда выглядит следующим образом: find path –name filename После имени команды идет путь к директории, в которой нужно производить поиск . Поиск будет включить все поддиректории. Вы можете указать не- сколько директорий подряд, например: find /etc /home –name filename Эта команда произведет поиск в /etc и в /home. После ключа -name можно указать имя файла или шаблон, по которому нуж- но искать файлы. Например, следующая команда найдет на диске все файлы с именем passwd: find / –name passwd А что, если вы не помните, какое точно имя у файла — passwd или password? В этом случае можно указать следующий шаблон: find / –name passw*d Под этот шаблон попадают оба имени файла. Символ звездочки соответству- ет любому набору любых символов и даже отсутствию символов. Ключ –name , наверное, самый популярный ключ для команды поиска, но по- мимо него команда поддерживает так же следующие ключи: -size число — позволяет указать размер файла, если вы его точно знаете. По умолчанию размер указывается в блоках размером в 512. Если нужно указать размер в байтах, то после числа укажите букву c ; — заставляет вывести содержимое файла в консоль; Добро пожаловать в Linux 59 -mtime число — в качестве числа можно указать количество дней, про- шедших со дня последнего редактирования файла. Например, если вы вчера редактировали файл с именем note, но не помните, куда его сохра- нили , то выполните следующую команду: find / –name note –mtime 1 -type тип — ключ позволяет указать тип файла. В качестве типа можно указывать : • d — каталог; • f — обычный файл; • p — именованный канал; • l — символическая ссылка. С помощью find можно искать не только имена файлов или директорий, но и искать по содержимому файлов. Вот вам интересная команда, которую можно запомнить или записать: find . –type f –name "*" –print | xargs grep "текст, который ищем" В данном примере в качестве начальной директории для поиска указана точ- ка , то есть поиск будет начат с текущей папки, но вы можете указать другое, потому что это просто пример. Потом указываем тип искомых файлов. В ка- честве типа ограничиваемся только файлами, чтобы программа не пыталась мучить директории. В качестве имени указываем только звездочку, что соот- ветствует всем файлам. Ключ –print заставляет отображать содержимое файла После этого идет самое интересное. После вертикальной линии идет другая команда . Это значит, что результат работы команды слева будет передавать- ся команде справа. Команда xargs объединяет полученные на входе данные и выполняет указанную команду. А вот команда grep ищет в тексте, который подается на вход, строку, указанную в качестве параметра. mkdir Создание новой директории. Например, если вы хотите создать подкаталог newdir в текущей директории, то нужно выполнить команду: mkdir newdir rm Команда позволяет удалить файл или директорию (которая должна быть пуста ): rm /home/flenov/need22.txt Глава 3 60 В качестве имен файлов можно использовать и маски, как в команде cp . Для удаления директории может понадобиться указание следующих ключей: -d — удалить директорию; -r — рекурсивно удалять содержимое директорий; -f — не запрашивать подтверждение удаляемых файлов. Будьте внима- тельны при использовании этого параметра, потому что файлы будут уда- ляться без каких-либо предупреждений. Вы должны быть уверены, что команда написана правильно, иначе можно удалить что-то лишнее, осо- бенно если вы работаете под учетной записью root. Пример удаления директории рекурсивно и без запроса на подтверждение: rm —rf /home/flenov/dir |