Денис Колисниченко - Linux: Полное руководство
- Название:Linux: Полное руководство
- Автор:
- Жанр:
- Издательство:Наука и Техника
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94387-139-Х
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Денис Колисниченко - Linux: Полное руководство краткое содержание
Данная книга представляет собой великолепное руководство по Linux, позволяющее получить наиболее полное представление об этой операционной системе. Книга состоит из трех частей, каждая из которых раскрывает один из трех основных аспектов работы с Linux: Linux для пользователя, сетевые технологии Linux (и методика настройки Linux-сервера), программирование Linux. В книге охвачен очень широкий круг вопросов, начиная с установки и использования Linux «в обычной жизни» (офисные пакеты, игры, видео, Интернет), и заканчивая описанием внутренних процессов Linux, секретами и трюками настройки, особенностями программирования под Linux, созданием сетевых приложений, оптимизацией ядра и др.
Изложение материала ведется в основном на базе дистрибутивов Fedora Cora (Red Hat) и Mandriva (Mandrake). Однако не оставлены без внимания и другие дистрибутивы SuSe, Slackware, Gentoo, Alt Linux, Knоppix. Дается их сравнительное описание, a по ходу изложения всего материала указываются их особенности.
Книга написана известными специалистами и консультантами по использованию Linux, авторами многих статей и книг по Linux, заслуживших свое признание в самых широких Linux-кругах. Если вы желаете разобраться в особенностях Linux и познать ее внутренний мир, эта книга — ваш лучший выбор.
Linux: Полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
tput boldустановка жирного начертания;
tput dimотключение жирного начертания;
tput smulустановка подчеркнутого начертания;
tput rmulотключение подчеркнутого начертания.
3.4.4. Подстановка переменных и команд
Переменные можно использовать как имена, части имен или аргументы команд. Перед выполнением команды оболочка заменит имена переменных их значениями. Например, после того, как мы присвоили переменной cwd значение пути к каталогу, можно перейти в этот каталог по команде
$ cd $cwd
Вывести на экран файл README из этого каталога можно, введя команду
$ more ${cwd}/README
Брать имя переменной в скобки необязательно, но удобно, если нужно отделить имя переменной от предшествующих ему или следующих за ним символов.
Мощным инструментом оболочки bashявляется подстановка команд, то есть замена имени команды на результат ее выполнения. Так, считая
/home/den/МуDownloads/packages
текущим каталогом, мы могли бы присвоить переменной cwd то же самое значение проще:
$ cwd=`pwd` # напоминаю, что команда pwd возвращает
# путь к текущему каталогу
Можно подставлять значения не только определенных вами переменных, но и переменных окружения. Так, чтобы поэкранно вывести список всех процессов, запущенных от вашего имени, введите:
$ ps -ef | grep $USER | less
3.4.5. Шаблоны имен файлов
Этот механизм позволяет не перечислять похоже выглядящие имена файлов и каталогов, а указать на целую группу имен, задав краткий образец. Перед отправкой команды на выполнение оболочка раскрывает шаблон, то есть заменяет образец всеми именами, подходящими под этот образец, и выполняет команду для каждого файла или каталога из этой группы. Шаблоны указываются с помощью специальных символов, перечисленных в таблице 3.3. Символы шаблона можно комбинировать в одной команде.
Символы шаблонов Таблица 3.3
Символ | Значение | Пример |
---|---|---|
* | Произвольная строка символов, в том числе пустая | ~/*.png — все файлы в домашнем каталоге с расширением png; Glava* — файлы Glava, Glava03 и Glava.old |
? | Любой одиночный символ | Glava?? — файлы Glava03 и GlavaXZ, но не Glava и не Glava.old |
[m,M,x] | Любой символ ив перечисленных в скобках | Glava0[3,8] — файлы Glava03 и Glava08, Glava?[3,8] — файлы Glava03, Glava08, Glava13, Glava18, Glava23 |
[a-nA-N] | Любой символ ив указанных интервалов | Glava0[2-4,9] — Glava02, Glava03, Glava04, Glava09 |
[^a-n,x,y] | Любой символ, на указанный в скобках | Glava[^0]* — все главы, начиная с 11 |
Символы шаблона можно использовать и как обычные символы в именах файлов. Тогда их нужно экранировать, чтобы оболочка не приступила к их раскрытию:
$ touch \* # создаст файл с именем "*". Только не
# удаляйте его потом командой rm * !
$ rm Glava0\[3\,8\] # удалит файл с именем Glava0[3,8],
# а не Glava03 и Glava08.
3.4.6. Потоки ввода-вывода
Как я уже сказал, каждому процессу сопоставлена таблица открытых им файлов. Три первых позиции в этой таблице заняты всегда: каждый процесс открывает потоки (помните, что в UNIX файл — это и есть поток данных?) для ввода и вывода данных, а также вывода сообщений об ошибках и другой диагностической информации. Эти потоки:
♦ 0 — стандартный ввод ( stdin),
♦ 1 — стандартный вывод ( stdout),
♦ 2 — стандартный поток сообщений об ошибках ( stderr).
Ссылаться на эти потоки можно по их файловым дескрипторам . 0, 1 и 2 — это и есть такие дескрипторы.
По умолчанию потоки ввода-вывода связываются с консолью, с которой запущен процесс: стандартный ввод — с клавиатурой, другие два потока — с экраном (рис. 3.5, потоки
cmd1
).
Все потоки можно перенаправить в другой файл. Это может быть файл на диске, файл устройства (например, принтер или
/dev/null
) или стандартный поток другого процесса.
Для перенаправления стандартного вывода команды используется символ
>
(«больше»). Если местом назначения служит файл, то можно его не перезаписывать, а присоединить ( append ) выводимые данные в его конец. Для такого перенаправления применяется символ >>
.
Стандартный ввод перенаправляется символом
<
(«меньше»).
Для перенаправления стандартного потока ошибок используется конструкция
2>
. Чтобы присоединить stderrк stdoutи перенаправить их вместе, пользуйтесь переадресацией 2>&1
.
Для направления стандартного вывода одной команды на стандартный ввод другой применяется символ
|
— уже знакомый вам конвейер.
Ситуация, изображенная на рис. 3.5, могла бы сложиться после выполнения следующих команд:
cmd2 < file1.txt | cmd3 2>&1 > file2.txt
cmd4 2> /dev/null | tee file3.txt file4.txt file5.txt
Рис. 3.5. Перенаправление потоков ввода-вывода
Команда-фильтр teeкопирует данные со своего стандартного ввода в стандартный вывод, дублируя их при этом в указанные ей файлы.
3.4.7. Группировка команд
Кроме конвейеров, команды можно соединять в списки. Простейший вид списка — несколько команд, разделенных точкой с запятой:
$ lpr myfile.txt ; lpq
Команды в таком списке выполняются последовательно: сначала будет выполнена команда постановки задания в очередь печати, а потом проверено состояние принтера. Оболочка ждет завершения каждой команды, чтобы отправить на выполнение следующую (синхронный режим).
В списки можно группировать не только одиночные команды, но и конвейеры:
$ ps -ef | head -n 1; ps -ef | grep httpd
UID PID PPID С STIME TTY TIME CMD
root 13565 1 0 13:11 ? 00:00:00 /usr/local/sbin/httpd
nobody 13566 13565 0 13:11 ? 00:00:00 /usr/local/sbin/httpd
nobody 13567 13565 0 13:11 ? 00:00:00 /usr/local/sbin/httpd
nobody 13642 13565 0 13:16 ? 00:00:00 /usr/local/sbin/httpd
Первый конвейер вырезает из списка процессов заголовок, а второй — информацию о демоне httpd.
Если требуется запустить команду на заднем плане и не ждать ее выполнения (асинхронный режим), то нужно завершить ее управляющим оператором
&
:
$ du --human-readable --total /home > diakusage.txt &
Команда duсообщает, сколько места на диске занято файлами в указанном каталоге. Обратите внимание на ключи: их имена предваряются не одним минусом, а двумя. Большинство команд поддерживает как короткие однобуквенные ключи, так и длинные — с осмысленными, легко запоминаемыми именами. Напоминаю, что список и значения ключей команды cmdможно получить, выполнив ее с ключом --helpили --usage.
Интервал:
Закладка: