Linux - Алексей Стахнов
Шрифт:
Интервал:
Закладка:
То же и для обычных клиентских машин. Казалось бы, поскольку большинство пользователей безвылазно сидят в X Window, им вообще не надо знать о консоли. Однако это совершенно не так. Как мы уже знаем из главы <5, загрузка операционной системы Linux происходит в текстовом (консольном) режиме и лишь на последнем этапе (и то, если это было определено при конфигурации системы) происходит переключение в X Window. Даже из-за этого уже стоит ознакомиться с консольными утилитами.
И еще. Идеология утилит Linux подразумевает модульность, доведенную до совершенства. В распоряжении пользователя огромное количество утилит, идеально выполняющих какую-то одну конкретную операцию. Из-за узкой специализации утилиты получаются очень маленькими по размеру и, как следствие, – идеально отлаженными.
...Замечание
Конечно, пользователю Windows это кажется неудобным. Для утилит Windows принят другой подход – "все в одном" (all in one). В результате– объемный комплекс, в котором достаточно трудно разобраться, который из-за его размеров крайне трудно отладить и который потребляет значительное количество оперативной памяти и процессорного времени.
Кроме того, все утилиты Linux (в отличие от Windows-утилит) способны взаимодействовать друг с другом. Это значит, что с помощью утилит можно организовать цепочку взаимосвязанных операций. А с помощью скриптов командной оболочки создать инструментарий для выполнения часто используемых последовательностей операций. Linux требует от пользователя достаточно обширных знаний и некоторого размышления (планирования) перед выполнением нетривиальных действий. С одной стороны, после Windows с ее достаточно бездумным нажиманием кнопок мыши, это несколько напрягает. Но с другой стороны, это позволяет точно, шаг за шагом, понять процесс получения нужного результата, да, заодно, и память потренировать.
Стандартный ввод/вывод, перенаправление
Во многих операционных системах существует понятие стандартного устройства ввода, стандартного устройства вывода и стандартного устройства отображения ошибок. Эти устройства можно задать самостоятельно. По умолчанию используется клавиатура и терминал. Концепция стандартного ввода/вывода очень удобна для автоматизации ввода/вывода.
Для перенаправления стандартного ввода используется символ перенаправления <. Пример использования перенаправления ввода:
mysql <2.sql
Передает программе mysql данные, содержащиеся в файле 2.sql.
Для перенаправления стандартного вывода используются символы перенаправления > и». В чем их отличие? Символ > не проверяет наличие файла, в который сохраняется стандартный вывод программы. Если такой файл существует, то его содержимое полностью заменяется выводом программы. Символ» проверяет существование файла, и если он существует, то вывод программы дописывается в конец существующего файла.
Примеры:df > 1.txt Is -A >> 1.txt
Операции перенаправления ввода/вывода можно использовать одновременно.
Конвейер (поток)
Конвейер (поток, pipe) используется для объединения нескольких команд в одной операции. Обозначается символом |. Применяется для передачи стандартного вывода одной программы на стандартный ввод другой программы. В одной командной строке можно использовать несколько операций конвейера.
Пример:Is | grep
Команды
Операционная система Linux очень многое наследует от UNIX, в том числе и большую часть команд и утилит. Конечно, эти команды адаптированы и усовершенствованы, но, тем не менее, в целом они сохранили синтаксис соответствующих команд UNIX. Поэтому, по большому счету, не важно, в чем вы работаете: в UNIX или в Linux – система команд на 98 % совпадает. Далее мы рассмотрим наиболее часто используемые команды и утилиты. Обратите внимание – наиболее часто используемые. Это означает, что в данной главе упоминаются далеко не все команды и утилиты. Никакая самая объемистая книга не отменяет команду man, документацию и файлы HOWTO. За время написания любой книги выходят новые версии программ, и зачастую их возможности кардинально изменяются. Эта глава является обзорной, поэтому в описании команд не всегда (или не в полном объеме) приводятся ключи и параметры вызова.
Дата, время
calКоманда cal выводит на консоль календарь. Если не указаны параметры – выводится календарь на текущий месяц. Если указывается месяц и год – выводится календарь на соответствующий месяц, а если указывается только год – выводится календарь на соответствующий год.
Пример:cal
Октябрь 2001
date
Команда date выводит текущие дату и время в указанном формате. Так же эта команда позволяет изменять системные дату и время.
Параметры:
• + – формат отображения времени и даты в указанном формате;
• -s – установка времени и даты;
• -u – вывод времени и даты по Гринвичу.
При установке даты и времени можно указывать их как в числовом, так и в нечисловом формате. При использовании числового формата строка данных представляется в следующем виде:
MMddhhmmyy
где:
• MM – месяц;
• dd – день;
• hh – часы;
• mm – минуты;
• уу – две последние цифры года.
Пример:date Сбт Окт 6 19:57:30 EEST 2001
Более подробную информацию можно получить по команде man date.
Файлы и каталоги
В этом разделе представлены команды и утилиты, которые напрямую взаимодействуют с файлами и каталогами.
Административные команды Здесь собраны команды, которые отвечают за «административную работу» с файлами и каталогами.chgrp
Команда chgrp изменяет группу каждого заданного файла на группу, которая может быть представлена как именем группы, так и ее числовым идентификатором (GID).
Более подробную информацию можно получить по команде man chgrp.chmod
Команда chmod изменяет права доступа файла в соответствии с правами доступа, указанными в параметре, который может быть представлен как в символьном виде, так и в виде восьмеричного числа.
Формат символьного режима:[ugoa…][[+-=][rwxXstugo…]…][,…]
Здесь каждый аргумент – это список символьных команд изменения прав доступа, разделенных запятыми. Каждая такая команда начинается с какой-нибудь из букв ugoa (впрочем, букв может вообще не быть) или их комбинации, которая указывает, чьи права доступа к файлу будут изменены:
• u – владельца;
• g – группы;
• о – других пользователей, не входящих в данную группу;
• а – всех пользователей. Буква а эквивалентна ugo. В том случае, если не задана ни одна буква, то будет использоваться буква а;
• + – добавляет выбранные права доступа к уже имеющимся;
• – – удаляет эти права;
• = – присваивает только эти права файлу.
Буквы rwxXstugo выбирают новые права доступа для пользователя, заданного одной из букв ugoa:
• r – чтение;
• w – запись;
• х – выполнение;
• X – выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя;
• S – setuid– или setgid-бит;
• t – sticky-бит;
• u – установка для остальных таких же прав доступа, какие имеет пользователь, владеющий этим файлом;
• g – установка для остальных таких же прав доступа, какие имеет группа файла;
• о – установка для остальных таких же прав доступа, какие имеют остальные пользователи.
Установка sticky-бита для каталога приводит к тому, что только владелец файла и владелец этого каталога могут удалять файл из каталога.
В операционной среде Linux, если на файле установлен бит setgid, но не установлен бит выполнения группой, то блокировки этого файла становятся жесткими (mandatory), в отличие от обычных – информационных (advisory). Подробная информация по этому вопросу находится в файле /usr/src/linux/Documentation/mandatory.txt.
Числовой режим состоит из четырех восьмеричных цифр, которые складываются из битовых масок 4, 2 и 1. Любые пропущенные разряды дополняются лидирующими нулями:
• первая цифра выбирает установку идентификатора пользователя – setuid (4), идентификатора группы – setgid (2) или sticky-бита (1);
• вторая цифра выбирает права доступа для пользователя, владеющего данным файлом: чтение (4), запись (2) и выполнение (1);
• третья цифра выбирает права доступа для пользователей, входящих в группу;
• четвертая цифра выбирает права доступа для остальных пользователей, не входящих в группу.
Эту команду может применять либо владелец файла, либо пользователь root. Более подробную информацию можно получить по команде man chmod.chown
Команда chown изменяет владельца и/или группу для заданного файла.
В качестве имени владельца/группы берется первый аргумент, не являющийся опцией. Если задано только имя пользователя (или его числовой идентификатор), то данный пользователь становится владельцем каждого из указанных файлов, а группа этих файлов не изменяется. Если за именем пользователя через двоеточие следует имя группы (или числовой идентификатор группы) без пробелов между ними, то изменяется также и группа файла. Если двоеточие стоит за именем пользователя, но группа не задана, то данный пользователь становится владельцем указанных файлов, а группа указанных файлов изменяется на основную группу пользователя. Если опущено имя пользователя, а двоеточие или точка вместе с группой заданы, то будет изменена только группа указанных файлов.