Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

2006 г.

Справочник по Debian

[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ вперед ]

Osamu Aoki, перевод Ильи В. Головко, qref.sourceforge.net

Глава 4 - Руководство по Debian

Эта секция поможет новичкам ориентироваться в мире Debian. Если Вы уже хотя бы немного использовали Unix-подобные операционные системы, то, вероятно, знакомы со всем тем, о чем я здесь пишу. Пожалуйста, используйте эту секцию для проверки своих знаний.

4.1 Введение

После установки системы Debian на Ваш ПК Вам нужно изучить несколько полезных вещей. Я предлагаю это сделать в форме экспресс-тренировки.

4.1.1 Вход в систему как пользователь root

Сразу после перезагрузки системы Вам представляется либо графический экран входа в систему, либо текстовый - в зависимости от изначального выбора пакетов при установке. Для простоты, если Вы видите графический экран для входа, нажмите Ctrl-Alt-F1, чтобы перейти к текстовому экрану входа в систему. [2]

Предположим, что имя Вашей системы - foo, тогда приглашение на вход будет таким:

     foo login:

Наберите root, нажмите клавишу Enter и введите пароль, который Вы указывали в процессе установки. В системе Debian согласно традиций Unix пароль чувствителен к регистру. После этого система выводит приветствие и представляет Вам приглашение командой строки пользователя root, ожидая ввода. [3]

     foo login: root
     Password: 
     Last login: Sun Oct 26 19:04:09 2003 on tty3
     Linux foo 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux
     
     Most of the programs included with the Debian GNU/Linux system are
     freely redistributable; the exact distribution terms for each program
     are described in the individual files in /usr/share/doc/*/copyright
     
     Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
     permitted by applicable law.
     
     root@foo:root#

Теперь Вы готовы к тому, чтобы заниматься системным администрованием через командую строку root. Учетная запись root также называется суперпользовательской или привелегированной. Используя эту учетную запись, Вы можете:

  • Читать, записывать и удалять любые файлы в системе, независимо от установленных на них прав доступа
  • Устанавливать владельцов и права доступа на любой файл в системе
  • Устанавливать пароль любому непривелегированному пользователю в системе
  • Регистрироваться в системе под любой учетной записью без ввода соответствующего пароля

Если Вам нужно дать кому-либо часть полномочий root, не стоит этого делать, разделяя с ним пароль учетной записи root. Используйте для этого программы типа sudo(8).

В Unix cчитается хорошей привычкой регистрироваться в системе, используя непривелегированную учетную запись, даже если Вы собираетесь выполнять некую административную работу. Используйте команды sudo, super, или su -c для получения дозированных привилегий root, когда это необходимо. Смотрите Working more safely – sudo, раздел 9.2.4. [4]

4.1.2 Установка минимальной среды окружения для новичка

Я думаю, что изучение компьютерной системы схоже с изучением нового иностранного языка. И хотя учебники достаточно полезны, Вам нужно попрактивать с подручными инструментами. В этом контексте я считаю, что хорошей идей будет установка нескольких дополнительных пакетов типа mc, vim, lynx, doc-linux-text и debian-policy. [5]

     # apt-get update
      ...
     # apt-get install mc vim lynx doc-linux-text debian-policy 
      ...

Если эти пакеты уже имеются в системе, то ничего не будет установлено.

4.1.3 Добавление пользовательской учетной записи

В процессе установки Вы обычно создаете учетную запись непривилегированногого пользователя, который будет получать электронную почту, адресованную root. [6] Если Вы не хотите использовать эту специальную учетную запись для последующего обучения, Вам нужно создать еще одну пользовательскую учетную запись.

Предположим, что Вы захотели, чтобы ее имя было penguin. Тогда следущая команда:

     root@foo:root# adduser penguin
     ... ответьте на все вопросы

создаст ее. [7] Перед тем, как идти дальше, мы должны сперва изучить еще несколько вещей.

4.1.4 Переключение между виртуальными консолями

В системе Debian по умолчанию существует шесть независимых превдотерминалов, т.е. Вы можете использовать текстовый консольный экран VGA Вашего персонального компьютера как 6 переключаемых терминалов VT-100. Переключение между терминалами осуществляется одновременным нажатием клавиши левый-Alt и одной из функциональных F1–F6. Каждый псевдотерминал позволяет независимую регистрацию в системе. Это является проявлением такой важной черты Unix, как многопользовательность.

Если Вы случайно нажали Alt-F7 на системе с работающей системой X Window и видите графический экран, то для возврата к текстовым консолям нажмите Ctrl-Alt-F1. Для тренировки просто попытайтесь попереключаться на другую консоль и возвращаться назад.

4.1.5 Как завершить работу системы

Как любая современная операционная система, где файловые операции используют кэширование данных в памяти, система Debian нуждается в соответствующей процедуре завершения работы системы перед тем, как питание может быть безопасно выключено без повреждения целосности файлов. Используйте следующую команду в командой строке root для завершения работы системы:

     # shutdown -h now

Эта команда используется в нормальном многопользовательском режиме. Если же Вы в однопользовательском режиме, то в командной строке root используйте следующую команду:

     # poweroff -i -f

Также Вы можете нажать Ctrl-Alt-Delete для завершения работы системы. [8]

Подождите, пока система не отобразит сообщение "System halted", и только тогда выключайте питание. Если функции APM или ACPI надлежащим образом включены как в BIOS, так и в Linux, то система выключит питание самостоятельно. Подробности смотрите в Большой размер оперативной памяти и автовыключение питания, раздел 3.7.4.

4.1.6 Время поразвлечься

Теперь Вы готовы без риска поиграть с системой Debian, так как используете учетную запись непривилегированного пользователя penguin. [9]

Давайте войдем в систему как пользователь penguin. Если Вы сейчас работаете как root, нажмите Ctrl-D [10] в командой строке, чтобы закрыть командный интерпретатор root'а и выйти на приглашение к входу в систему. Введите Ваше только что созданное имя пользователя penguin и его пароль. [11] Вам будет показано следующее приглашение ко вводу команд.

     penguin@foo:penguin$

С этого момента для простоты даваемые примеры будут использовать упрощенное приглашение ко вводу команд. Я буду использовать:

  • # : для обозначения ввода команд от имени root
  • $ : для обозначения ввода команд от имени непривилегированного пользователя

Мы начнем изучение системы Debian сначало по-простому через Midnight Commander (MC), раздел 4.2, а позже по-настоящему через Традиционная для Unix рабочая среда, раздел 4.3.

4.2 Midnight Commander (MC)

Midnight Commander (MC) - это "Швейцарский армейский нож" от проекта GNU, применяемый в консоли Linux и прочих терминальных средах. Он дает новичку опыт работы в консоли через меню-подобный интерфейс, который гораздо проще изучить, чем стандартные команды Unix.

Используйте эту программу для изучения системы Debian. Это самый лучший способ для изучения. Пожалуйста, исследуйте следующие несколько ключевых мест, используя клавиши управления курсором и Enter:

  • /etc и его подкаталоги.
  • /var/log и его подкаталоги.
  • /usr/share/doc и его подкаталоги.
  • /sbin и /bin
4.2.1 Улучшим MC

Чтобы MC изменял рабочий каталог при выходе из него, Вам нужно изменить файл ~/.bashrc (или /etc/bash.bashrc, вызываемый из .bashrc) образом, описанным на соответствующей man-странице mc(1) касательно опции -P. [12]

4.2.2 Запуск MC
     $ mc

MC выполняет все операции с файлами через его меню, требуя от пользователя минимум усилий. Для получения справки просто нажмите F1. Вы можете поиграть с MC путем нажатий клавиш управления курсором и функциональных клавиш. [13]

4.2.3 Файловый менеджер в MC

По умолчанию отображаются две панели каталога со списками файлов. Еще один полезный режим - это когда правое окно отображает информацию о режиме доступа к файлу и пр. Далее описаны несколько важных клавишных комбинаций. С демоном gpm можно также использовать мышь. (Обязательно нажмите клавишу Shift, чтобы получить нормальное поведение операций cut и paste в MC.)

  • F1: Меню справки
  • F3: Встроенный просмотрщик файлов
  • F4: Встроенный редактор
  • F9: Вывести выпадающее меню
  • F10: Выход из Midnight Commander
  • Tab: Переход между панелями
  • Insert: Пометить файл для операций с множеством файлов, например, для копирования
  • Del: Удалить файл (будьте осторожны — установите MC в безопасный режим удаления)
  • Клавиши управления курсором: понятно из названия
4.2.4 Особенности командной строки в MC
  • Любая команда cd изменяет каталог, отображаемый на выбранной панели.
  • Ctrl-Enter или Alt-Enter копирует имя файла в командную строку. Используйте это для команд cp или mv совместно с редактированием командной строки.
  • Alt-Tab покажет список выбора командного интерпретатора с возможными именами файлов.
  • Можно задать стартовые каталоги для обеих панелей через аргументы MC; например так: mc /etc /root.
  • Esc + цифра == Fn (т.е., Esc + `1' = F1, и так далее; Esc + `0' = F10)
  • Клавиша Esc == Клавише Alt (= Meta, M-); т.е., ввод Esc + `c' соответствует Alt-C.
4.2.5 Редактор в MC

Встроенный редактор имеет интересную систему "вырезать-вставить". Нажатие F3 помечает начало выделения текста, повторное нажатие помечает конец выделения и высвечивает выбранный текст. Теперь Вы можете передвигать Ваш курсор. И если нажмете F6, то выделенная область будет перенесена в позицию курсора. Если же Вы нажмете F5, то выделенная область будет скопирована в позицию курсора. F2 сохраняет файл, F10 завершает работу редактора. Большинство курсорных клавиш работают так, как Вы интуитивно преполагаете.

Этот редактор может быть запущен непосредственно для работы с файлом:

     $ mc -e имя_файла_для_правки
     $ mcedit имя_файла_для_правки

Данный редактор не является мультиоконным, но можно использовать множество линукс-консолей для достижения похожего эффекта. Чтобы копировать между окнами, для переключения между виртуальными консолями используйте клавиши Alt-Fn, а для переноса части файла в другой используйте "Файл->Вставить файл" или "Файл->Копировать в файл"

Встроенный редактор можно заменить любым внешним по Вашему выбору.

Также многие программы используют переменную окружения EDITOR или VISUAL для определения, какой редактор использовать. Если Вам неудобно в vim, установите эти переменные на mcedit, добавив следующие строки в файл ~/.bashrc:

     ...
     export EDITOR=mcedit
     export VISUAL=mcedit
     ...

По возможности я рекомендую устанавливать эти переменные на vim. Использование редактора vim предпочтительнее потому, что он (а точнее vi) всегда существует на любой Linux/Unix системе. [14]

4.2.6 Программа просмотра в MC

Представляет собой очень интеллектуальную программу. Это великолепный инструмент для поиска слов в документах. Я использую эту возможность для файлов в каталоге /usr/share/doc. Это самый быстрый способ просмотреть множество информации по Линукс. Программа просмотра может быть непосредственно запущена таким образом:

     $ mc -v имя_файла_для_просмотра
4.2.7 Возможности MC по автоматическому запуску программ

Нажмите клавишу Enter на файле и соответствующая программа будет обрабатывать содержимое файла. Это очень удобная возможность MC.

     выполняемый файл:   Выполняет команду
     файл  man, html-страницы:  Направляет содержимое в программу просмотра
     файл tar.gz, deb:  Отображает содержимое файла как подкаталог

Чтобы позволить функционировать этим возможностям просмотра, просматриваемые файлы не должны быть выполняемыми. Изменить их статус можно или через программу chmod или через меню MC.

4.2.8 Виртуальная FTP-файловая система MC

MC можно использовать для доступа через Интернет к файлам, используя протокол FTP. Перейдите в меню, нажав F9, затем нажмите 'p' для активации виртуальной файловой системы FTP (в моей версии MC работает клавиша 'F' - прим. переводчика) . Введите URL в форме имя_пользователя:пароль@имя_хоста.имя_домена, после чего будет осуществлена выборка удаленного каталога, который будет представлен как локальный.

Попробуйте в качестве URL указать http.us.debian.org/debian и просмотреть файловый архив Debian. Смотрите Архивы Debian, раздел 2.1 относительно того, как они (архивы) организованы.

4.3 Традиционная для Unix рабочая среда

Хотя MC позволяет делать Вам практически все, очень важно изучить, как использовать инстументы командной строки, вызываемые из приглашения командного интерпретатора и познакомиться с рабочей средой, традиционной для Unix. [15]

4.3.1 Специальные комбинации клавиш

В традиционной unix-среде существует несколько комбинаций клавиш, которые имеют специальный смысл. [16]

  • Ctrl-U: Удалить строку перед курсором.
  • Ctrl-H: Удалить символ перед курсором.
  • Ctrl-D: Завершить ввод. (при применении в командном интерпретаторе - выход из него)
  • Ctrl-C: Завершить выполняющуюся программу.
  • Ctrl-Z: Временно остановить программу. (поместить ее в фоновое задание, смотрите команда &, раздел 4.3.10.1)
  • Ctrl-S: Остановить вывод на экран. [17]
  • Ctrl-Q: Продолжить вывод на экран.

Командный интерпретатор по умолчанию, bash, имеет возможности по хранению истории команд командной строки и tab-completion для повышения интерактивности.

  • стрелка вверх: начинает поиск в истории команд.
  • Ctrl-R: начинает инкрементальный поиск в истории команд.
  • TAB: Завершает ввод имени файла в командной строке.
  • Ctrl-V TAB: Ввод символа табуляции TAB в командую строку без expansion.

Запомните еще несколько важных комбинаций клавиш:

  • Ctrl-Alt-Del: Перезагрузка/останов системы, смотрите Установка дополнительных пакетов после первоначальной инсталляции, раздел 3.7.1.
  • Левая клавиша мыши совместно с передвижением мыши: выделение и копирование текста в буфер обмена.
  • Нажатие средней кнопки мыши: Вставить текст из буфера обмена в позицию курсора.
  • Meta-клавиша (в терминологии Emacs) назначена по традиции на левую клавишу Alt. Некоторые системы могут быть настроены использовать Windows-клавишу в качестве Meta-клавиши.

Чтобы использовать мышь в текстовой консоли Linux, Вам нужно иметь запущенный демон gpm. [18] Смотрите Настройка мыши, раздел 3.3.

4.3.2 Основные команды Unix

Давайте изучим основные команды Unix. [19] Выполните все следующие команды от имени непривелегированного пользователя penguin:

  • pwd
    • Отобразить имя текущего/рабочего каталога.
  • whoami
    • Отобразить имя текущего пользователя.
  • file foo
    • Отобразить тип файла foo.
  • type -p имя_команды
    • Отобразить месторасположение файла команды имя_команды.
    • Это же делает команда which имя_команды.
  • type имя_команды
    • Отобразить информацию по команде имя_команды.
  • apropos ключевое_слово
    • Найти команды, связанные с ключевым_словом.
    • Это же делает команда man -k ключевое_слово.
  • whatis имя_команды
    • Отобразить однострочное пояснение по команде имя_команды.
  • man -a имя_команды
    • Отобразить краткое пояснение по команде имя_команды. (Unix-стиль)
  • info имя_команды
    • Отобразить более полное объяснение по команде имя_команды. (стиль GNU)
  • ls
    • Вывести содержимое каталога. (нескрытые файлы и каталоги) [20]
  • ls -a
    • Вывести содержимое каталога. (все файлы и каталоги)
  • ls -A
    • Вывести содержимое каталога. (почти все файлы и каталоги, т.е. пропускаются файлы ".." и ".")
  • ls -la
  • ls -d
    • Выводит все подкаталоги каталоги в текущем каталоге.
  • lsof foo
    • Вывести состояние файла foo с точки зрения - открыт он или нет.
  • mkdir foo
    • Создать новый каталог foo в текущем каталоге.
  • rmdir foo
    • Удалить каталог foo в текущем каталоге.
  • cd foo
    • Перейти в каталог foo, находящийся в текущем каталоге или описанный в переменной CDPATH. Смотрите описание команды cd в builtins(7).
  • cd /
    • Перейти в корневой каталог.
  • cd
    • Перейти в домашний каталог текущего пользователя.
  • cd /foo
    • Перейти в каталог по полному пути /foo.
  • cd ..
    • Перейти в родительский каталог.
  • cd ~foo
    • Перейти в домашний каталог пользователя foo.
  • cd -
    • Перейти в предыдущий каталог.
  • </etc/motd pager
    • Отобразить содержимое файла /etc/motd, используя программу постраничного вывода по умолчанию. Смотрите команда < foo, раздел 4.3.10.9. [21]
  • touch junkfile
    • Создать пустой файл junkfile.
  • cp foo bar
    • Копировать существующий файл foo в новый файл bar.
  • rm junkfile
    • Удалить файл junkfile.
  • mv foo bar
    • Переименовать существующий файл foo в новый файл bar.
  • mv foo bar/baz
    • Переместить существующий файл foo в новое месторасположение под новым именем bar/baz. Каталог bar/ должен существовать.
  • chmod 600 foo
    • Сделать существующий файл foo недоступным для чтения и записи для всех пользователей, кроме владельца, и запретить выполнение для всех пользователей.
  • chmod 644 foo
    • Разрешить чтение и запретить запись в существующий файл foo всем пользователям, кроме владельца, выполнение запрещено всем.
  • chmod 755 foo
    • Разрешить чтение и запретить запись в существующий файл foo всем пользователям, кроме владельца, выполнение файла разрешено всем пользователям.
  • top
    • Показать информацию о процессах на весь экран. Используйте "q" для выхода.
  • ps aux | pager
  • ps -ef | pager
    • Показать информацию о всех выполняющихся процессах в стиле вывода системы Unix System-V.
  • ps aux | grep -e "[e]xim"
    • Показать все выполняющиеся процессы exim. Регулярные выражения для поиска можно изучить на man-странице grep(1), получить которую можно, набрав man grep.
  • ps axf | pager
    • Показать информацию о всех выполняющихся процессах, используя вывод в стиле "ASCII art".
  • kill 1234
  • grep -e "образец" *.html
    • Найти "образец" во всех файлах, заканчивающихся на .html в текущем каталоге и показать их всех.
  • gzip foo
    • Сжать файл foo и создать файл foo.gz, используя кодирование Lempel-Ziv (LZ77).
  • gunzip foo.gz
    • Разжать файл foo.gz для создания файла foo.
  • bzip2 foo
    • Сжать файл foo и создать файл foo.bz2, используя алгоритм "Burrows-Wheeler block sorting text compression algorithm" и Huffman-кодирование. (Обеспечивает лучшее сжатие, чем gzip)
  • bunzip2 foo.bz2
    • Разжать файл foo.bz2 для создания файла foo.
  • tar -xvvf foo.tar
    • Извлечь файлы из архива foo.tar.
  • tar -xvvzf foo.tar.gz
    • Извлечь файлы из архива foo.tar.gz, сжатого gzip.
  • tar -xvvf --bzip2 foo.tar.bz2
    • Извлечь файлы из архива foo.tar.bz2. [22]
  • tar -cvvf foo.tar bar/
    • Архивировать содержимое каталога bar/ в архивный файл foo.tar.
  • tar -cvvzf foo.tar.gz bar/
    • Архивировать содержимое каталога bar/ в сжатый архивный файл foo.tar.gz.
  • tar -cvvf --bzip2 foo.tar.bz2 bar/
    • Архивировать содержимое каталога bar/ в сжатый архивный файл foo.tar.bz2. [23]
  • zcat README.gz | pager
    • Отобразить содержимое сжатого файла README.gz, используя программу постраничного вывода по умолчанию.
  • zcat README.gz > foo
    • Создать файл foo с разжатым содержимым файла README.gz.
  • zcat README.gz >> foo
    • Добавить разжатое содержимое файла README.gz в конец файла foo. (Если файл не существует, то сначало создать его.)
  • find . -name шаблон
    • Искать имена файлов, соответствующие шаблону шаблон. (медленно)
  • locate -d . шаблон
    • Искать имена файлов, соответствующие шаблону шаблон. (Работает быстрее благодаря использованию регулярно генерируемой базы данных)

Пожалуйста, походите по каталогам и изучите систему, используя ранее описанные команды, для тренировки. Если у Вас есть вопросы по любой из консольных команд, будьте добры прочесть соответствующую man-страницу. Например, данные команды хороши для старта:

     $ man man
     $ man bash
     $ man ls

Также неплохо запустить vim и нажать клавишу F1. Вам нужно прочесть не менее 35 строк. Затем пройдите онлайновый курс обучения, передвинув курсор к |tutor| и нажав Ctrl-]. Смотрите Editors, Глава 11 для дополнительного изучения редакторов.

Пожалуйста заметьте, что многие Unix-команды, включая из GNU и BSD, будут показывать краткую справочную информацию, если Вы вызовете их одним из следующих способов (или, в некоторых случаях, без аргументов вовсе):

     $ имя_команды --help
     $ имя_команды -h

Для самоподготовки также посмотрите примеры из Debian tips, Глава 8.

4.3.3 Выполнение команд

Теперь Вы имеете представление о том, как использовать систему Debian. Давайте внимательно взглянем на механизм выполнения команд в системе Debian. [24]

4.3.4 Простая команда

Простая команда - это последовательность, состоящая из:

  1. необязательных присвоений переменных
  2. имени команды
  3. необязательных аргументов
  4. необязательных перенаправлений (> , >> , < , << и пр.)
  5. необязательного оператор контроля (&& , || ; <newline> , ; , & , ( , ) )

Для более сложных команд с кавычками и заменами смотрите Command-line processing, раздел 13.2.6.

4.3.5 Выполнение команды и переменные окружения

Рассмотрим следующую типовую последовательность команд: [25]

     $ date
     Sun Oct 26 08:17:20 CET 2003
     $ LC_ALL=fr_FR date
     dim oct 26 08:17:39 CET 2003

Здесь выполняется программа date. Переменная окружения LC_ALL:

  • для первой команды не установлена (равна значению по умолчанию в системе; тоже самое, что и C)
  • для второй команды установлена в fr_FR (французская локаль)

Обычно при выполнении команд определение переменных окружения отсутствует. Для выше приведенного примера Вы можете сделать и так:

     $ LC_ALL=fr_FR
     $ date
     dim oct 26 08:17:39 CET 2003

Как Вы видете, вывод команды зависит от переменной окружения. Если же Вы хотите, чтобы переменная окружения наследовалась дочерними процессами (например, когда Вы запускаете скрипт на языке командного интерпретатора), Вам нужно "экспортировать" ее таким образом:

     $ export LC_ALL
4.3.6 Путь поиска команды

Когда Вы даете команду командному интерпретатору, он ищет ее в списке каталогов, содержащихся в переменной окружения PATH. Значение этой переменной окружения называется путем поиска командного интерпретатора.

В системе Debian по умолчанию переменная окружения PATH у пользовательской учетной записи не включает каталог /sbin. Таким образом, если Вы хотите запускать любые команды вроде ifconfig из каталога /sbin (без указания полного пути к команде - прим. переводчика), Вам нужно дополнить значение переменной PATH каталогом /sbin. Эта переменная обычно устанавливается в стартовом файле ~/.bash_profile, подробнее Конфигурация командного интерпретатора Bash, раздел 3.2.

4.3.7 Опции командной строки

Некоторые команды принимают аргументы. Аргументы, начинающиеся с - или --, называются опциями и управляют поведением команды.

     $ date
     Mon Oct 27 23:02:09 CET 2003
     $ date -R
     Mon, 27 Oct 2003 23:02:40 +0100

Здесь аргумент командной строки -R изменяет поведение команды date для вывода строки даты, соответствующей документу RFC-2822.

4.3.8 Шаблоны имени файла (wildcards) командного интерпретатора

Часто Вам нужно, чтобы команда работала с группой файлов без набора всех их имен. Для описания группы файлов используются шаблоны имени файла командного интерпретатора:

  • *
    • Соответствует любой группе из нуля и более символов.
    • Не соответствует имени файла с "." в начале.
  • ?
    • Соответствует ровно одному символу.
  • [...]
    • Соответствует ровно одному символу из тех, что заключены в скобки.
  • [a-z]
    • Соответствует ровно одному символу из тех, что между a и z.
  • [^...]
    • Соответствует ровно одному символу, если он не среди тех, что перечислены в скобках (символ "^" - спецсимвол и здесь на соответствие не проверяется).

Для примера попробуйте следующие команды и поразмышляйте над полученными результатами:

     $ mkdir junk; cd junk; $ touch 1.txt 2.txt 3.c 4.h .5.txt
     $ echo *.txt
     1.txt 2.txt
     $ echo *
     1.txt 2.txt 3.c 4.h
     $ echo *.[hc]
     3.c 4.h
     $ echo .*
     . .. .5.txt
     $ echo .[^.]*
     .5.txt
     $ echo [^1-3]*
     4.h
     $ cd ..; rmdir junk
4.3.9 Код возврата команды

Каждая команда возвращает свой статус завершения как код возврата.

  • код возврата равен нулю, если команда завершилась успешно.
  • код возврата отличен от нуля, если команда завершилась с ошибкой.

Этот код возврата сразу после завершения команды может быть получен через переменную командного интерпретатора $?.

Пожалуйста заметьте, что когда код возврата используется в логическом контексте командного интерпретатора, успешное завершение обрабатывается как логическая ИСТИНА. Это некоторым образом нелогично, так как успешное завершение соответствует значению нуль.

Смотрите также Shell conditionals, раздел 13.2.5.

4.3.10 Типовые последовательности команд

Постарайтесь запомнить следующие распространенные способы запуска команд. А после этого посмотрите части Shell parameters, раздел 13.2.3, Shell redirection, раздел 13.2.4, Shell conditionals, раздел 13.2.5 и Command-line processing, раздел 13.2.6.

4.3.10.1 команда &

команда выполняется в дочернем командном интерпретаторе в фоновом режиме. Задания в фоновом режиме позволяют пользователям запустить множество программ через один единственный командный интерпретатор.

Управление фоновыми процессаами осуществляется через встроенные команды: jobs, fg, bg и stop. Пожалуйста изучите man-страницу bash(1) в части описаний "SIGNALS", "JOB CONTROL" и "SHELL BUILTIN COMMANDS". [26]

4.3.10.2 команда1 | команда2

Стандартный поток вывода команды команда1 направляется в стандартный поток ввода команды команда2. Обе команды могут выполняться одновременно. Этот механизм называется программным каналом.

4.3.10.3 команда1 ; команда2

Команды команда1 и команда2 выполняются последовательно.

4.3.10.4 команда1 && команда2

Выполняется команда команда1. Если она завершается успешно, за ней последовательно выполняется команда команда2. Код возврата будет успешным, если обе команды команда1 и команда команда2 завершились успешно.

4.3.10.5 команда1 || команда2

Выполнятеся команда команда1. Если она завершается с ошибкой, последовательно запускается команда команда2. Код возврата будет успешным, если хотя бы одна из команд завершилась успешно.

4.3.10.6 команда > foo

Перенаправить стандартный поток вывода команды команда в файл foo (с перезаписью файла, если он существует)

4.3.10.7 команда >> foo

Перенаправить стандартный поток вывода команды команда в файл foo. (данные добавляются в конец файла)

4.3.10.8 команда > foo 2>&1

Перенаправить потоки стандартного вывода и стандартного вывода ошибок команды команда в файл foo.

4.3.10.9 команда < foo

Содержимое файла foo направляется в стандартный поток ввода команды команда. Попробуйте следующее:

     $ </etc/motd pager
      ... (приветствие)
     $ pager </etc/motd
      ... (приветствие)
     $ pager /etc/motd
      ... (приветствие)
     $ cat /etc/motd | pager
      ... (приветствие)

Хотя все 4 конструкции покажут одно и то же, последний пример запускает дополнительную команду cat и тем самым без причины расходует ресурсы.

4.3.11 Псевдоним команды

Вы можете установить псевдоним для часто используемой команды. Например:

     $ alias la='ls -la'

Теперь la работает как сокращенная форма ls -la, которая выводит список всех файлов в полном формате (лучший вариант был предложен на кулере: alias ls='logout' - прим. переводчика ;-) )

Вы можете определить точный путь или подлинность команды, используя команду type. Например:

     $ type ls
     ls is hashed (/bin/ls)       информация о ls хэширована (/bin/ls)
     $ type la
     la is aliased to `ls -la'    la - псевдоним `ls -la'
     $ type echo 
     echo is a shell builtin      echo - встроенная команда командного интерпретатора
     $ type file
     file is /usr/bin/file        команда file = /usr/bin/file

Здесь недавно выполнялся поиск команды ls, а команда file искалась в первый раз, поэтому команда ls помечена как "hashed", т.е. командный интерпретатор имеет внутренную запись для быстрого ответа на запрос о месторасположении файла ls.

4.4 Традиционная для Unix обработка текста

Существует несколько стандартных инструментов по обработке текста, которые очень часто используются на unix-подобных системах.

  • Неиспользующие регулярные выражения:
    • head выводит начало файлов.
    • tail выводит конец файлов.
    • sort сортирует строки текстовых файлов.
    • uniq удаляет строки-дубликаты из сортированного файла.
    • tr выполняет замену или удаление символов.
    • diff сравнивает построчно файлы.
  • Использующие базовые регулярные выражения (БРВ):
    • grep определяет соответствие текста с шаблоном.
    • ed - примитивный строковый редактор.
    • sed - потоковый редактор.
    • vi - экранный редактор.
    • emacs - экранный редактор.
  • Использующие расширенные регулярные выражения (РРВ):
    • egrep определяет соответствие текста с шаблоном.
    • awk выполняем простую обработку текста. Смотрите Awk, раздел 13.3.
    • perl выполняет всевозможную обработку текста. Смотрите Perl, раздел 13.4.

Смотрите Regular-expression substitution, раздел 8.6.12, Script snippets for piping commands, раздел 8.6.17 и Perl short script madness, раздел 8.6.19 на предмет примеров скриптов.

4.4.1 Регулярные выражения

Регулярные выражения используются во многих инструментах обработки текста. Они очень похожи на шаблоны имен файлов командного интерпретатора (смотрите Шаблоны имени файла (wildcards) командного интерпретатора, раздел 4.3.8), но они не только сложнее, но и мощнее.

Регулярное выражение описывает шаблон соответствия и составляется из символов текста и метасимволов. Метасимвол - это простой символ со специальным смыслом. Существует два основных стиля регулярных выражений, БРВ и РРВ, в зависимости от текстовых инструментов, описанных в Традиционная для Unix обработка текста, раздел 4.4.

Для РРВ метасимволы включают "\ . [ ] ^ $ * + ? ( ) { } |". Регулярное выражение означает:

  • c
    • соответствие неметасимволу "c".
  • \c
    • соответствие символу, определяемому escape-последовательностью "c", или, если "c" не escape-последовательность, то просто символу "c".
  • .
    • соответствие любому символу, включая символ новой строки.
  • ^
    • соответствие началу строки.
  • $
    • соответствие концу строки.
  • \<
    • соответствие началу слова.
  • \>
    • соответствие концу слова.
  • [abc...]
    • соответствие любому символу из списка "abc...".
  • [^abc...]
    • отсутствие соответствия любому символу из списка "abc...".
  • r*
    • соответствие регулярному выражению "r", повторенному ноль или большее количество раз.
  • r+
    • соответствие регулярному выражению "r", повторенному один или большее количество раз.
  • r?
    • соответствие регулярному выражению "r", повторенному ноль или один раз.
  • r1|r2
    • соответствие регулярному выражению "r1" либо регулярному выражению "r2".
  • (r1|r2)
    • соответствие регулярному выражению "r1" либо "r2"; конструкция обрабатывается как регулярное выражение, заключенное в скобки.

В БРВ метасимволы "+ ? ( ) { } |" теряют свое особое значение, взамен используйте те же символы с обратным слешем впереди "\+ \? \( \) \{ \} \|". Поэтому конструкция с скобками (r1|r2), записанная с использованием БРВ, должна быть в виде \(r1|r2\). Однако программа emacs, использующая БРВ, обрабатывает символы "+ ?" как метасимволы. То есть нет необходимости предворять их обратным слешем. Смотрите Выражения подстановки, раздел 4.4.2, чтобы узнать, как используются конструкции со скобками.

Например, программа grep может быть использована для выполнения поиска текста с использованием регулярных выражений:

     $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
                         GNU GENERAL PUBLIC LICENSE
                         GNU GENERAL PUBLIC LICENSE
       Yoyodyne, Inc., hereby disclaims all copyright interest in the program
4.4.2 Выражения подстановки

В выражениях подстановки следующие символы имеют особое значение:

  • &
    • означает, какое регулярное выражение совпало. (в программе emacs используйте конструкцию \&)
  • \n
    • означает совпавшее регулярное выражение, заключенное в скобки, по номеру n

Для выражений подстановки языка Perl используется конструкция $n вместо \n и символ & не имеет особого значения.

Например:

     $ echo zzz1abc2efg3hij4 | \
       sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'
     zzz=1abc2efg3hij4=
     $ echo zzz1abc2efg3hij4 | \
       sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'
     zzzefg3hij4===1abc
     $ echo zzz1abc2efg3hij4 | \
       perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'
     zzzefg3hij4===1abc
     $ echo zzz1abc2efg3hij4 | \
       perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/'
     zzz=&=

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

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

Пожалуйста, прочтите все связанные man-страницы для изучения этих команд.

4.5 Традиционная файловая система Unix

В системах GNU/Linux и других Unix-подобных операционных системах файлы размещаются в каталогах. [27] Все файлы и каталоги образуют одно большое дерево, иерархическую файловую структуру, корень которой /.

Эти файлы и каталоги могут располагаться на нескольких устройствах. Команда mount(8) занимается подключением файловой системы, найденной на некотором устройстве в единое дерево файлов. И наоборот, команда unmount(8) отсоединит файловую систему устройства из дерева файлов.

4.5.1 Основы файлов Unix

Вот несколько основых положений:

  • Имена файлов являются зависимыми от регистра. То есть, файл MYFILE и файл MyFile являются различными файлами.
  • На корневой каталог (root) обычно ссылаются по имени /. Не путайте этот "root" с пользователем root. Смотрите Вход в систему как пользователь root, раздел 4.1.1.
  • Каждый каталог имеет имя, которое может состоят из любых букв или символов, кроме символа /. [28] Корневой каталог является исключением, его имя - / (произносится как "слеш" или "корневой каталог") и не может быть переименовано.
  • На каждый файл или каталог можно сослаться по полному имени файла, абсолютному имени файла или через путь, указав последовательность каталогов, через которые нужно пройти, чтобы достичь файла. Все три термина являются синонимами. Все абсолютные имена начинаются с каталога / и существует символ / между каждым каталогом или именем файла. Первый символ / - это имя каталога, а все последующие являются просто разделителями, чтобы отделить части имени файла друг от друга.

    Чтобы не запутаться, посмотрите на следующий пример:

         /usr/share/keytables/us.map.gz
    

    Это полное имя файла, иногда некоторые называют его путем. Однако, на файл можно сослаться просто по его имени us.map.gz. [29]

  • Корневой каталог имеет множество ответвлений (подкаталогов - прим. переводчика), такие как /etc или /usr. Эти подкаталоги в свою очередь содержат еще подкаталоги, такие как /etc/init.d или /usr/local соответственно. Все это вместе называется деревом каталогов.

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

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

  • Не существует каталога, который бы соответствовал физическому устройству, например, Вашему жесткому диску. В этом отличие Unix от операционных систем CP/M, DOS и Windows, где все пути начинаются с имени устройства, например, C:\. Смотрите Концепция файловой системы в Debian, раздел 4.5.2.

Хорошо описанные примеры по иерархии файлов есть в документе Стандарт на иерархию файловой системы. Вам же для начала нужно запомнить следующие факты:

  • /
    • Просто символ / обозначает корневой каталог.
  • /etc
    • Здесь размещаются конфигурационные файлы системы.
  • /var/log
    • Здесь размещаются системные лог-файлы (журналы событий - прим. переводчика).
  • /home
    • Здесь размещаются домашние каталоги все непривелегированных пользователей.
4.5.2 Концепция файловой системы в Debian

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

Каждый файл, каталог, именованный канал или физическое устройство в системе Debian имеет структуру данных, называющуюся индексным дескриптором (inode), который описывает связанные атрибуты, такие как владелец файла, группа, которая владеет файлом, время последнего доступа к файлу и пр. Точное описание структуры inode в системе Debian GNU/Linux смотрите в документе /usr/include/linux/fs.h.

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

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

4.5.3 Права доступа к файлам и каталогам

Права доступа к файлу и каталогу определяются индивидуально для каждой из трех следущих категорий пользователей:

  • для пользователя, который владеет этим файлом (u),
  • для пользователей из группы, владеющей данным файлом (g) и
  • для всех остальных пользователей(o).

Для файла соответствующие права доступа позволяют соответственно:

  • право чтения (r): изучить содержимое файла
  • право записи (w): изменять файл
  • право выполнения (x): выполнять файл как команду.

Для каталога права доступа позволяют соответственно:

  • право чтения (r): получать список содержимого каталога
  • право записи (w): добавлять или удалять файлы в каталог
  • право выполнения (x): получать доступ к файлам.

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

Чтобы отобразить информацию о правах доступа (и многую другую) на файлы и каталоги используется программа ls. Смотрите ls(1). Когда программа ls запускается с опцией -l, она показывает следующую информацию в указанном порядке:

  • тип файла (первый символ)
    • -: обычный файл
    • d: каталог
    • l: символическая ссылка
    • c: файл символьного устройства
    • b: файл блочного устройства
    • p: именованный канал
    • s: сокет
  • Права доступа к файлу (следующие девять символов, объединенных в три группы прав для владельца, группы и прочих пользователей по три символа в каждой группе в порядке право-на-чтение право-на-запись право-на-выполнение)
  • количество ссылок на файл
  • имя пользователя, владеющего файлом
  • имя группы, владеющей файлом
  • размер файла в символах (байтах)
  • дата и время файла (mtime)
  • имя файла.

Чтобы изменить владельца файла, используется программа chown, запущенная от имени учетной записи root. Чтобы изменить группу файла, используется программа chgrp, запущенная от имени учетной записи владельца файла или root. Для изменения прав доступа к файлу или каталогу используется программа chmod, запущенная от имени пользователя-владельца файла/каталога или от имени пользователя root. Основной синтаксис работы с файлом-примером foo следующий:

     # chown новый_владелец foo
     # chgrp новая_группа foo 
     # chmod  [ugoa][+-=][rwx][,...] foo

Подробности смотрите в соответствующих man-страницах chown(1), chgrp(1) и chmod(1).

Например, чтобы для некоторого дерева каталогов задать владельцем пользователя foo и сделать группу bar, владеющей этим деревом, выполните следующие команды от имени пользователя root:

     # cd /некий/каталог/
     # chown -R foo:bar .
     # chmod -R ug+rwX,o=rX .

Существует три бита специальных прав:

  • set user ID (в выводе ls выводится как s или S в позиции права выполнения для владельца),
  • set group ID (в выводе ls выводится как s или S в позиции права выполнения для группы),
  • sticky bit (в выводе ls выводится как t или T в позиции права выполнения для прочих).

В выводе команде ls -l бит специального права выводится заглавной буквой (S или T), если бит выполнения, который он скрыл собой, не установлен, и наоборот.

Установка бита set user ID на выполняемый файл позволяет пользователю выполнить этот файл от имени владельца файла (например, root) Подобным образом, установка бита set group ID на выполняемый файл позволяет выполнить данный файл от имени группы, владеющей этим файлом, например, от имени группы root). Так как эти установки могут создать серъезную дыру в безопасности системы, устанавливайте эти биты очень внимательно.

Установка бита set group ID на каталог включает схему создания файлов как системах BSD, где все файлы созданные в данном каталоге будут принадлежать группе group, владеющей этим каталогом.

Установка бита sticky bit на каталог предотвращает удаление файлов в каталоге пользователями, ими не владеющими. Для защиты содержимого файла в каталоге, в который разрешена запись всем, например, /tmp, или в каталоге, в который разрешена запись некоторой группе, нужно не только снять право записи в файл, но и установить бит sticky bit на каталог. В противном случае любой пользователь, имеющий право записи в этот каталог, может удалить этот файл и создать новый с тем же именем (и с любым содержимым - прим. переводчика)

Вот несколько интересных примеров прав на файлы:

     $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd
     crw-rw----    1 root     dip      108,   0 Jan 18 13:32 /dev/ppp
     -rw-r--r--    1 root     root         1051 Jan 26 08:29 /etc/passwd
     -rw-r-----    1 root     shadow        746 Jan 26 08:29 /etc/shadow
     -rwsr-xr--    1 root     dip        234504 Nov 24 03:58 /usr/sbin/pppd
     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
     drwxrwxrwt    4 root     root         4096 Feb  9 16:35 /tmp
     drwxrwsr-x   10 root     staff        4096 Jan 18 13:31 /usr/local
     drwxrwsr-x    3 root     src          4096 Jan 19 08:36 /usr/src
     drwxrwsr-x    2 root     mail         4096 Feb  2 22:19 /var/mail
     drwxrwxrwt    3 root     root         4096 Jan 25 02:48 /var/tmp

В командах chmod(1) существует альтернативный числовой способ описания прав на файлы. Этот числовой способ использует трех-четырехзначные восьмеричные (основание системы счисления = 8) числа. Каждая цифра соответствует:

  • Первая необязательная цифра: сумма атрибута set user ID (вес = 4), атрибута set group ID (вес = 2) и sticky bit (вес = 1)
  • Вторая цифра: сумма атрибута чтение (вес = 4), атрибута запись (вес = 2) и атрибута выполнения (вес = 1), относящиеся к списку прав пользователя
  • Третья цифра: то же самое для группы
  • Четвертая цифра: то же самое для прочих пользователей

Это выглядит сложновато, но на самом деле все очень просто. Если вы посмотрите на первые несколько столбцов (2-10) вывода команды ls -l и проинтерпретируете их как двоичное (с основанием = 2) представление прав на файл ("-" означает "0", а "r", "w", "x" означает "1"), то полученное число, переведенное в восьмеричную систему счисления будет являться восьмеричным представлением прав на файл. [30] Попробуйте для примера:

     $ touch foo bar
     $ chmod u=rw,go=r foo
     $ chmod 644 bar
     $ ls -l foo bar
     -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  foo
     -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  bar

Маска прав на файл по умолчанию может быть установлена встроенной командой командного интерпретатора umask. Смотрите страницу builtins(7).

4.5.4 ВременнЫе метки (Timestamps)

У файла в системе GNU/Linux cуществует три типа временных метки:

  • mtime: время модификации (ls -l),
  • ctime: время изменения состояния (ls -lc) и
  • atime: время последнего доступа (ls -lu).

Заметьте, что ctime не является временем создания файла.

  • Перезапись файла изменит каждую из временных меток mtime, ctime и atime файла.
  • Изменение прав доступа или владельца файла изменит временные метки ctime и atime.
  • Чтение файла изменит временную метку atime.

Обратите внимание, что даже простое чтение файла в системе Debian обычно приводит к операции записи с файлом для обновления временной метки atime в структуре inode. Монтирование файловой системы с опцией noatime позволит системе не делать эту операцию и приведет к повышению скорости чтения. Смотрите страницу mount(8).

Используйте команду touch(1)для изменения временных меток существующих файлов.

4.5.5 Ссылки

Существует два способа связать файл foo с другим именем файла bar.

  • жесткая ссылка - это имя-дубликат для существующего файла (ln foo bar),
  • символичесая ссылка или "symlink" - это специальный файл, который указывает на другой файл по его имени (ln -s foo bar).

Смотрите следующий пример на предмет изменения счетчика ссылок и тонкую разницу в результате команды rm

     $ echo "Исходное содержимое" > foo
     $ ls -l foo
     -rw-r--r--    1 osamu    osamu           4 Feb  9 22:26 foo
     $ ln foo bar     # жесткая ссылка
     $ ln -s foo baz  # символическая ссылка
     $ ls -l foo bar baz
     -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 bar
     lrwxrwxrwx    1 osamu    osamu           3 Feb  9 22:28 baz -> foo
     -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 foo
     $ rm foo
     $ echo "Новое содержимое" > foo
     $ cat bar
     Исходное содержимое
     $ cat baz
     Новое содержимое

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

Каталог . является ссылкой на сам каталог, в котором он находится, то есть счетчик ссылок любого нового каталога начинается с 2. Каталог .. ссылается на родительский каталог, поэтому счетчик ссылок каталога увеличивается с добавлением новых подкаталогов.

4.5.6 Именованные каналы (FIFOs)

Именованный канал - это файл, которые действует как труба. Вы помещаете что-то в данный файл, и оно выходит с другого конца. Это называется FIFO или First-In-First-Out: то, что первым помещено в канал, первым из него и выходит с другой стороны.

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

Вы можете изучить, как работает канал, на следующем примере:

     $ cd; mkfifo mypipe
     $ echo "hello" >mypipe & # запустим в фоновом режиме
     [1] 5952
     $ ls -l mypipe
     prw-r--r--    1 penguin penguin  0 2003-11-06 23:18 mypipe
     $ cat mypipe
     hello
     [1]+  Done                    echo hello >mypipe
     $ ls mypipe
     prw-r--r--    1 penguin penguin  0 2003-11-06 23:20 mypipe
     $ rm mypipe
4.5.7 Сокеты

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

4.5.8 Файлы устройств

Файлы устройств ссылаются на физические или виртуальные устройства в Вашей системе, такие как жесткий диск, видеокарта, экран или клавиатура. Пример виртуальнго устройства - консоль, представленная файлом устройства /dev/console.

Существует два типа устройств:

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

Вы можете читать или записывать в файл устройства, хотя сам файл содержит двоичные данные, не очень понятные человеку. Запись данных непосредственно в такие файлы иногда полезны для решения проблем подключений оборудования. Например, Вы можете вывести текстовый файл в принтерный файл устройства /dev/lp0 или послать команды модему в соответствующий файл устройства последовательного порта /dev/ttyS0. Но делайте это аккуратно, так как это может привести к серъезным последствиям. Будьте осторожны.

4.5.8.1 /dev/null и прочее.

Файл /dev/null - это специальный файл устройства, который обрасывает все то, что Вы в него записываете. Если Вам что-то не нужно, направьте это в /dev/null. Это в сущности бездонная яма. Если же Вы читаете файл /dev/null, то сразу получите символ конца файла (EOF).

Файл /dev/zero очень похож, но только если Вы читате его, то получите символ \0 (это не тоже самое, что ASCII-код цифры ноль). Смотрите Dummy files, раздел 8.6.33.

4.5.8.2 Номер устройства

Номер устройства отображается при выполнении команды ls:

     $ ls -l /dev/hda /dev/ttyS0 /dev/zero
     brw-rw----    1 root     disk       3,   0 Mar 14  2002 /dev/hda
     crw-rw----    1 root     dialout    4,  64 Nov 15 09:51 /dev/ttyS0
     crw-rw-rw-    1 root     root       1,   5 Aug 31 03:03 /dev/zero

Здесь

  • Файл /dev/hda имеет старший номер устройства 3 и младший номер устройства 0. Файл доступен для чтения/записи пользователем из группы disk.
  • Файл /dev/ttyS0 имеет старший номер устройства 4 и младший номер устройства 64. И он доступен для чтения/записи пользователем из группы dialout и
  • Файл /dev/zero имеет страший номер устройства 1 и младший номер устройства 5. Доступен для чтения/записи всеми пользователями.

В системах постарше процесс установки создавал файлы устройств при помощи команды /sbin/MAKEDEV. Смотрите MAKEDEV(8).

В более новых системах файловая система в /dev автоматически наполняется при помощи файловой системы устройств, как это делается, например, в /proc.

4.5.9 Файловая система /proc

Файловая система /proc - это псевдо-файловая система, содержащая информацию о системе и работающих процессах.

Часто пугаются того, что один файл в этой файловой системе /proc/kcore очень большого размера. Он содержит копию (более или менее) оперативной памяти Вашего компьютера и используется для отладки ядра. Поскольку фактически он нигде не существует, то и не беспокойтесь о его размере.

Смотрите раздел Tuning the kernel through the proc filesystem, раздел 7.3 и страницу proc(5).

4.6 Система X Window System

Смотрите X, раздел 9.4.

4.6.1 Запуск системы the X Window System

Система X Window System может быть запущена автоматически при помощи специального графического демона входа навроде xdm или через ввод команды в консоли:

     $ exec startx
4.6.2 Меню в системе X Window System

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

  • Чтобы получить командную строку, запустите Xterm из меню:
    • "XShells" --> "XTerm".
  • Для графического просмотра web-страниц запустите Mozilla из меню:
    • "Apps" --> "Net" --> "Mozilla Navigator".
  • Для графического просмотра PDF-файлов запустите Xpdf из меню:
    • "Apps" --> "Viewers" --> "Xpdf".

Если Вы не нашли нужный элемент в меню, установите требуемые пакеты. Смотрите раздел Основы управления пакетами в Debian, раздел 6.2.

4.6.3 Клавиатурные комбинации клавиш в системе X Window System

Запомните следующие важные при работе в системе X Window System комбинации клавиш:

  • Ctrl-Alt-F1 по F6: Переключиться в соответствующий превдотерминал (из системы X Window, DOSEMU и т.д.)
  • Alt-F7: Вернуться назад в X Window
  • Ctrl-Alt-минус: Изменить разрешение экрана в системе X Window ("серый" минус)
  • Ctrl-Alt-плюс: Изменить разрешение экрана в системе X Window ("серый" плюс)
  • Ctrl-Alt-Backspace: Завершить программу X Server
  • Alt-X, Alt-C, Alt-V: Привычные в Windows/Mac клавиатурные комбинации Вырезать, Копировать, Вставить, нажимаемые с клавишей Ctrl, заменяются на комбинации с клавишей Alt для использования в некоторых программах, например, Netscape Composer.

4.7 Для дальнейшего изучения

На этот момент я рекомендую Вам прочесть ключевые руководства из раздела Проекта документации Linux: Руководства:

Дополнительную информацию смотрите в разделе Support for Debian, Глава 15.

[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ вперед ]

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...