20 окт. 2000 г.

Азы linux (для детей) урок 36

Таблица 7.2. Новые команды главы 7: Создай себе дом
Команда Значение
aptitude Управление пакетами в стиле Debian
automount Автоматическое подключение вновь добавленной файловой системы
dpkg Пакетный менеджер Debian
dselect Управление пакетами в стиле Debian
loadkeys Загрузка конфигурации клавиатуры
lsof Определяет процессы
mount Подключает новые файловые системы к существующему дереву каталогов
ntpdate Устанавливает системное время и дату использования времени сервера
quota Отображает информацию о разрешенном к использованию дисковом пространстве
recode Конвертирует файлы в другие таблицы символов
rpm Управление RPM-пакетами
setfont Выбор шрифтов
timezone Установка временной зоны
tzconfig Установка временной зоны
ulimit Установка или отображение ограничения ресурсов
up2date Управление RPM-пакетами
urpmi Управление RPM-пакетами
yum Управление RPM-пакетами


Азы linux (для детей) урок 35

Форматы пакетов

Пакеты RPM

Что такое RPM?
RPM, RedHat Package Manager, представляет собой мощный менеджер пакетов, который вы можете использовать для установки, обновления и удаления пакетов. Он позволяет вам находить пакеты и отслеживает файлы, которые поставляются с каждым пакетом. Система построена таким образом, что вы можете проверить подлинность пакетов, скаченных из Интернета. Опытные пользователи могут создавать свои собственные пакеты RPM.
Пакет RPM состоит из архива файлов и метаданных, используемых для установки и удаления файлов архива. Метаданные включают вспомогательные скрипты, атрибуты файлов, и информацию со сведениями о пакете. Пакеты выпускаются в двух вариантах: бинарные, используется для упаковки программного обеспечения для установки, и пакеты с исходным кодом и предписанием, необходимым для создания бинарных пакетов.
Многие другие дистрибутивы поддерживают пакеты RPM, среди популярных - RedHat Enterprise Linux, Mandriva (бывший Mandrake), Fedora Core и SuSE Linux. Помимо советов для вашего дистрибутива, вы захотите прочитать man rpm.
Примеры работы с RPM
Большинство пакетов просто устанавливаются при использовании опции обновления -U, и не важно установлен уже пакет или нет. Пакет RPM содержит полную версию программы, которая перезаписывает существующую версию или инсталлируется как новый пакет. Типичное использование выглядит следующим образом:
rpm -Uvh /path/to/rpm-package(s)
Опция -v генерирует более подробный вывод, -h заставляет rpm выводить индикатор прогресса установки:
[root@jupiter tmp]# rpm -Uvh totem-0.99.5-1.fr.i386.rpm
Preparing...                ########################################### [100%]
   1:totem                  ########################################### [100%]
[root@jupiter tmp]#
При этом новые пакеты ядра, устанавливаются с опцией -i, которая не перезаписывает существующую версию пакета. Таким образом, вы по-прежнему сможете загрузить систему со старым ядром, если новое окажется не рабочим.
Вы также можете использовать rpm для проверки, установлен ли пакет в вашей системе:
[david@jupiter ~] rpm -qa | grep vim
vim-minimal-6.1-29
vim-X11-6.1-29
vim-enhanced-6.1-29
vim-common-6.1-29
Или вы можете узнать, какой пакет содержит определенный файл или исполняемый файл:
[david@jupiter ~] rpm -qf /etc/profile
setup-2.5.25-1

[david@jupiter ~] which cat
cat is /bin/cat

[david@jupiter ~] rpm -qf /bin/cat
coreutils-4.5.3-19
Заметьте, вам не нужно иметь доступ к административным привилегиям, чтобы использовать rpm для запроса к базе данных RPM. Аккаутн root требуется только при добавлении, изменении или удалении пакетов.
Ниже приведен еще один пример, демонстрирующий, как удалить пакет при помощи rpm:
[root@jupiter root]# rpm -e totem
[root@jupiter root]#
Обратите внимание, что удаление по умолчанию происходит без подробностей, это нормально, что вы не видите многое из того, что происходит. Если вы сомневаетесь, используйте rpm -qa опять, чтобы убедиться, что пакет был удален.
RPM может делать гораздо больше, чем те несколько основных функций, которые мы привели здесь.

Пакеты DEB (.deb)

Что из себя представляют пакеты Debian?
Этот формат пакетов используется по умолчанию в Debian GNU/Linux, где dselect, и, в настоящее время все более распространенный, aptitude являются стандартными инструментами для управления пакетами. Они используются для выбора пакетов, которые вы хотите установить или обновить, но также работают во время установки системы Debian и помогают вам определить метод доступа для использования, список доступных пакетов и их настройки.
Веб-сайт Debian содержит всю необходимую информацию.
Формат пакетов Debian становится все более и более популярным. Также apt-get становится популярным на не-DEB системах.
Примеры с инструментами DEB
Проверка, установлен ли пакет, осуществляется с помощью команды dpkg. Например, если вы хотите узнать, какая версия Gallery установлена на вашем компьютере, то следует выполнить такую команду:
nghtwsh@gorefest:~$ dpkg -l *gallery*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  gallery        1.5-1sarge2    a web-based photo album written in php
Префикс "ii" означает, что пакет установлен. Если вы увидите префикс "un", это означает, что пакет известен в списке, который поддерживает ваша система, но не установлен.
Поиск, какому пакету принадлежит файл, выполняется путем использования -S для dpkg:
nghtwsh@gorefest:~$ dpkg -S /bin/cat
coreutils: /bin/cat
Больше информации можно найти на info-страницах dpkg.

Пакеты с исходным кодом

Наибольшая часть программ Linux является Free/Open Source, что означает, что пакеты с исходными кодами доступны для этих программ. Исходники необходимы для компиляции собственного варианта программы. Истодные коды программы можно скачать с ее веб-сайта, обычно в виде сжатого архива (program-version.tar.gz или аналогичного). Для дистрибутивов, основанных на RPM, исходники часто поставляются как program-version.src.rpm. Debian и большинство дистрибутивов на его основе, предоставляют для себя адаптированные исходники, который можно получить с помощью apt-get source.
Особые требования, зависимости и инструкции по установке приведены в файле README. Вам, вероятно, понадобится компилятор с языка C gcc. Этот компилятор GNU входит в большинство систем Linux и портирован на множество других платформ.

Автоматизация управления пакетами и обновлениями

Общие замечания

Первое, что вы делаете после установки новой системы, - это обновляете ее; это относится ко всем операционным системам и Linux не исключение.
Обновления для большинства систем Linux обычно могут быть найдены на ближайшем сайте-зеркале вашего дистрибутива. Списки сайтов, предлагающих такую возможность, можно найти на веб-сайте вашего дистрибутива, см. Приложение A, Куда идти дальше?.
Обновления следует применять регулярно, если это возможно, то ежедневно, но можно начать с того, чтобы проводить обновление каждые несколько недель. Вы действительно должны стремиться к тому, чтобы иметь самую последнюю версию дистрибутива, так как Linux изменяется постоянно. Как было прежде отмечено, появление новых возможностей, улучшений и исправлений ошибок происходит регулярно, иногда решаются важные проблемы безопасности.
Хорошей новостью является то, что большинство дистрибутивов Linux предоставляют инструменты, поэтому вам не придется ежедневно обновлять десятки пакетов вручную. Следующие разделы дают обзор менеджеров пакетов. Это достаточно обширная тема, даже регулярные обновления пакетов с исходными кодами управляются автоматически; мы перечислим лишь наиболее широко известных системы. Всегда обращайтесь к документации для вашего конкретного дистрибутива для выяснения действий.

APT

Advanced Package Tool является системой управления пакетами программного обеспечения. Команда инструмента для обработки пакетов – apt-get, который поставляется с превосходной man-страницей, описывающей как установить и обновить пакеты или весь дистрибутив. APT зародился в дистрибутиве Debian GNU/Linux, где он по умолчанию является менеджером пакетов. Также APT был портирован для работы с пакетами RPM. Главное преимущество APT заключается в том, что он является свободным и гибким в использовании. Это позволит вам создать системы, подобные конкретным дистрибутивам (и в некоторых случаях коммерческие), перечисленные в следующих разделах.
Как правило, при первом использовании apt-get, вы должны будете получить индекс доступных пакетов. Это делается с помощью команды
apt-get update
После этого, вы можете использовать apt-get для обновления вашей системы:
apt-get upgrade
Делайте это часто, это легкий способ сохранять вашу систему современной и, следовательно, безопасной.
Помимо этого общего пользования, apt-get также очень быстр для установки отдельных пакетов. Вот как это работает:
[david@jupiter ~] su - -c "apt-get install xsnow"
Password:
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  xsnow
0 packages upgraded, 1 newly installed, 0 removed and 3 not upgraded.
Need to get 33.6kB of archives.
After unpacking 104kB of additional disk space will be used.
Get:1 http://ayo.freshrpms.net redhat/9/i386/os xsnow 1.42-10 [33.6kB]
Fetched 33.6kB in 0s (106kB/s)
Executing RPM (-Uvh)...
Preparing...                ########################################### [100%]
   1:xsnow                  ########################################### [100%]
Обратите внимание на опцию -c команды su, которая указывает, чтобы shell администратора выполнила только эту команду, а затем вернуться к среде пользователя. Таким образом, у вас не получится забыть осуществить выход из учетной записи суперпользователя.
Если существуют какие-либо зависимости от других пакетов, apt-get загрузит и установит эти вспомогательные пакеты.

Системы, использующие пакеты RPM

Update Agent, который изначально поддерживал только пакеты RPM RedHat, теперь перенесен на более широкий набор программного обеспечения, в том числе не-RedHat репозитории. Этот инструмент предоставляет полную систему для обновления RPM пакетов на системах RedHat или Fedora Core. Для обновления вашей системы в командной строке следует ввести up2date. На рабочем столе по умолчанию активируется маленький значок, говорящий вам, нет ли обновлений для вашей системы.
Yellowdog's Updater Modified (yum) является еще одним инструментом, который в последнее время стал достаточно популярным. Это интерактивная, но автоматически работающая программа для инсталляции, обновления или удаления пакетов RPM в системе. Этот инструмент выбран на системах Fedora.
В SuSE Linux, все это делается с YaST, Yet another Setup Tool, который поддерживает широкий спектр задач системного администрирования, среди которых и обновление RPM пакетов. Начиная с SuSE Linux 7.1 вы можете производить обновление также с помощью веб-интерфейса и YOU, Yast Online Update.
Mandrake Linux и Mandriva предоставлять так называемые URPMI инструменты, ряд программ-оберток, которые делают установку нового программного обеспечения проще для пользователя. Эти инструменты в сочетании с RPMDrake и MandrakeUpdate обеспечить все необходимое для упрощения установки и удаления пакетов программного обеспечения. MandrakeOnline предлагает расширенный спектр услуг и может автоматически уведомлять администраторов, когда обновления доступны для вашей конкретной системы. Помимо прочего посмотрите man urpmi для дополнительной информации.
Также среды KDE и Gnome имеют собственные (графический) варианты пакетных менеджеров.

Обновление ядра

Большинство установок в Linux протекает без проблем, если вы периодически обновляете ваш дистрибутив. Процедура обновления при необходимости установит новое ядро и сделает все необходимые изменения в вашей системе. Вам придется компилировать или устанавливать новое ядро вручную, если вам нужны функции ядра, которые не включены в ядро вашего дистрибутива Linux по умолчанию.
Компилируете ли вы собственное оптимизированное ядро или используете предварительно скомпилированный пакет ядра, установите его так, чтобы старое и новое ядра существовали вместе, пока вы не убедитесь, что все работает как надо.
Затем создайте двойную загрузку системы, что позволит вам выбрать ядро для загрузки, обновив загрузочный конфигурационный файл grub.conf. Вот простой пример:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making config changes. 
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, e.g.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hde8
#          initrd /initrd-version.img
#boot=/dev/hde
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux new (2.4.9-31)
	root (hd0,0)
	kernel /vmlinuz-2.4.9-31 ro root=/dev/hde8
	initrd /initrd-2.4.9-31.img
title old-kernel
        root (hd0,0)
        kernel /vmlinuz-2.4.9-21 ro root=/dev/hde8
        initrd /initrd-2.4.9-21.img
После того, как новое ядро окажется рабочим, вы можете удалить строки для загрузки старого из конфигурационного файла GRUB, хотя лучше подождать пару дней, просто чтобы быть уверенным.

Установка дополнительных пакетов с установочных CD

Монтирование CD

В основном это происходит так же, как и установка пакетов вручную, кроме того, вы должны добавить файловую систему CD к файловой системе вашего компьютера, чтобы сделать ее доступной. На большинстве систем, это будет сделано автоматически при вставке компакт-диска в привод, потому что во время загрузки запускается демон automount. Если ваш компакт-диск не становится доступным автоматически, выполните команду mount в окне терминала. В зависимости от вашей конкретной системной конфигурации, строка, подобная этой, обычно делает свое дело:
mount /dev/cdrom /mnt/cdrom
На некоторых системах только суперпользователь может монтировать сменные носители, это зависит от конфигурации.
Для того, чтобы все происходило автоматически, устройство для чтения CD обычно имеет запись в /etc/fstab, в котором перечислены файловые системы и их точки монтирования, в результате чего получается дерево файловой системы. Вот подобная строка:
[david@jupiter ~] grep cdrom /etc/fstab
/dev/cdrom	/mnt/cdrom	iso9660		noauto,owner,ro 0 0
Это означает, что система будет понимать команду mount /mnt/cdrom. Опция noauto означает, что на этой системе компакт-диски не монтируются во время загрузки.
Вы даже можете попробовать щелкнуть правой кнопкой мыши на значке компакт-диска на рабочем столе для монтирования CD, если ваш файловый менеджер не сделает это за вас. Вы можете проверить, сработало ли это, с помощью команды mount без аргументов:
[david@jupiter ~] mount | grep cdrom
/dev/cdrom on /mnt/cdrom type iso9660 (ro,nosuid,nodev)

Использование CD

После монтирования CD, вы можете перемещаться по его каталогам, как правило, в точке монтирования /mnt/cdrom, где вы можете получить доступ к содержимому CD-ROM. Используйте те же команды для работы с файлами и каталогами, какие вы бы использовали для файлов на жестком диске.

Извлечение CD

Для того, чтобы вытащить компакт-диск из дисковода после того, как вы закончили использовать его, файловая система CD не должна использоваться. Даже нахождение в одном из подкаталогов точки монтирования, /mnt/cdrom в нашем примере, будет рассматриваться как "использование файловой системы", поэтому вам следует выйти оттуда. Сделайте это, например, введя cd без аргументов, эта команда вернет вас обратно в домашний каталог. После этого, вы можете использовать команду
umount /mnt/cdrom
или
eject cdrom
Заблокированные диски
Никогда не применяйте силу к дисководу. Трюк со скрепкой является плохой идеей, и хотя это, в конечном итоге, выдернет CD, но ваша система будет думать, что CD по-прежнему там, т.к. обычные процедуры не были соблюдены. Скорее всего, вам придется перезагрузиться, чтобы привести систему в согласованное состояние.
Если вы продолжаете получать сообщения "устройство занято", сначала проверьте, что все сессии shell вышли из файловой системы CD, а также графические приложения не используют его больше. Если есть сомнения, используйте инструмент lsof, чтобы убрать процесс(ы), которые продолжают использовать ресурсы компакт-диска.

Азы linux (для детей) урок 34

Графическая среда

Система X Window

X Window System представляет собой явно сетевое окно системы, которая работает на широком спектре вычислительных и графических машин. Серверы X Window System работают на компьютерах с растровыми дисплеями. X сервер распределяет пользовательский ввод и принимает запросы на вывод от нескольких клиентских программ через различные межпроцессорные каналы связи. Хотя самый распространенный случай – клиентские программы работают на той же машине, что и сервер, но клиенты могут также прозрачно работать от других машин (включая машины с различными архитектурами и операционными системами). Мы узнаем, как это делается в Главе 10, Сеть, в которой рассказывается о сетях и удаленных приложениях.
X поддерживает параллельные иерархические окна, текст и графические операции как на монохромных, так и цветных дисплеях. Число клиентских программ X, которые используют X-сервер достаточно велико. Некоторые программы, внедренные в ядро распределением X Consortium, включают:
  • xterm: эмулятор терминала
  • twm: минималистичный оконный менеджер
  • xdm: менеджер дисплеев
  • xconsole: программа перенаправления консоли
  • bitmap: растровый редактор
  • xauth, xhost и iceauth: программы контроля доступа
  • xset, xmodmap и многие другие: предпочитаемые пользователем настройки программ
  • xclock: часы
  • xlsfonts и другие: экранный шрифт, утилиты для просмотра информации о шрифтах, окна и отображения
  • xfs: сервер шрифтов
  • ...
Мы опять отсылаем к man-страницам этих команд за подробной информацией. Подробнее разъяснения доступных функций можно найти в руководстве Xlib - C language X Interface, которое поставляется с вашим X дистрибутивом, спецификацией X Window System Protocol, а также различные руководства и документация по X. Каталог /usr/share/doc содержит ссылки на эти и многие другие документы.
Многие другие утилиты, оконные менеджеры, игры, пособия и гаджеты включены распределением X Consortium как дополнительное пользовательское программное обеспечение, или доступны с помощью анонимного ftp по Интернету. Хорошими местами для начала являются http://www.x.org и http://www.xfree.org.
Кроме того, все ваши графические приложения, такие как браузер, программа для электронной почты, программа для просмотра изображений, инструменты для проигрывания звуков и так далее являются клиентами X сервера. Отметим, что в обычных условиях эксплуатации графического режима X клиенты и X сервер Linux работают на одной и той же машине.

Имена дисплеев

С точки зрения пользователя, у каждого X сервера есть отображаемое имя в такой форме:
hostname:displaynumber.screennumber
Эта информация используется приложением для определения того, как ему следует соединиться с X сервером и какой экран он должен использовать по умолчанию (на настольных компьютерах с несколькими мониторами):
  • hostname: Имя хоста указывает имени компьютера-клиента, какой дисплей физически подключен. Если имя хоста не задано, будет использоваться наиболее целесообразный способ общения к серверу на одной и той же машине.
  • displaynumber: Фраза "display", обычно используется для обозначения коллекции мониторов, которые разделяют общие клавиатуру и указатель (мышь, планшет, и т.д.). У большинства рабочих станций, как правило, только одна клавиатура, и, следовательно, только один дисплей. Большие многопользовательские системы, однако, часто имеют несколько дисплеев, так что группа людей сразу могут выполнять графическую работу. Чтобы избежать путаницы, каждому дисплею компьютера присваивается номер (начиная с 0), когда запускается X сервер для этого дисплея. Номер дисплея должен всегда быть приведен в отображаемом имени.
  • screen number: Некоторые дисплеи разделяют одну клавиатуру и указатель между двумя или более мониторами. Так как у каждого монитора есть собственный ряд окон, каждому экрану присваивается номер (начиная с 0), когда запускается X сервер для данного дисплея. Если номер экрана не указан, будет использоваться экран 0.
В POSIX-системах имя дисплея по умолчанию хранится в переменной окружения DISPLAY. Эта переменная автоматически устанавливается эмулятором терминала xterm. Однако, когда вы по сети входите на другой компьютер, может потребоваться установить DISPLAY вручную, чтобы указать на ваш дисплей, смотрите Раздел "Telnet и X".
Более подробную информацию можно найти в man-страницах для X.

Менеджеры окон и рабочего стола

Расположение окон на экране находится под контролем специальных программ, которые называются оконными менеджерами. Хотя многие оконные менеджеры соблюдают предоставленные геометрические характеристики экрана, существуют такие, которые могут их игнорировать (требуя от пользователя точного указания области окна на экране с помощью указателя, например).
Поскольку оконные менеджеры обычные (хотя и сложные) клиентские программы, могут быть построены разнообразные пользовательские интерфейсы. От X Consortium предоставляется оконный менеджер под названием twm, но большинство пользователей предпочитают что-то более изощренное, когда позволяют ресурсы системы. Sawfish и Enlightenment являются популярными примерами, которые позволяют каждому пользователю иметь рабочий стол под соответствующее настроение и стиль.
Менеджер рабочего стола использует один или другой оконный менеджер для организации вашего графического экрана в удобном виде, с панелями, выпадающими меню, информационными сообщениями, часами, менеджерами программ, файловыми менеджерами и т.д. Среди наиболее популярных менеджеров рабочего стола выделяют Gnome и KDE, оба работают почти на любом дистрибутиве Linux и многих других UNIX-системах.
Приложения KDE в Gnome/приложений Gnome в KDE
Вам не обязательно запускать рабочий стол KDE для того, чтобы иметь возможность запускать приложения KDE. Если у вас установлены библиотеки KDE (пакет kdelibs), вы можете запустить эти приложения из меню Gnome или его терминала.
Запуск приложений Gnome в среде KDE немного сложнее, потому что нет единого набора базовых библиотек в Gnome. Однако при запуске или установке таких приложений станут ясны зависимости и, следовательно, дополнительные пакеты, которые вам, возможно, придется установить.

Конфигурация X сервера

Распределение X, которое поставляется с Linux, XFree86, использует конфигурационный файл XF86Config для ее начальной установки. Этот файл настраивает вашу видеокарту и может быть найден в ряде мест, хотя обычно это /etc/X11.
Если вы видите, что файл /etc/X11/XF86Config присутствует в вашей системе, полное описание можно найти в info- или man-страницах о XF86Config.
Из-за проблем с лицензированием XFree86, более новые системы обычно поставляются с вариантом X сервера и инструментов от X.Org. Главный конфигурационный файл здесь xorg.conf, обычно находится также в /etc/X11. Файл состоит из нескольких разделов, которые могут находиться в любом порядке. Разделы содержат информацию о вашем мониторе, видеоадаптере, конфигурации экрана, клавиатуры и т.д. В качестве пользователя, вам не надо слишком беспокоиться о том, что в этом файле, так как все обычно определяется на момент, когда система установлена.
Однако, если вам потребуется изменить настройки графического сервера, вы можете запустить инструменты для настройки или редактировать конфигурационный файл, которые обеспечивает инфраструктуру для использования сервера XFree86. Смотрите man-страницы для получения дополнительной информации; у вашего дистрибутива могут быть собственные инструменты. Поскольку неверная конфигурация может привести к нечитаемой чуши в графическом режиме, вам следует сделать резервную копию конфигурационного файла, чтобы обезопасить себя, прежде, чем приступать к его изменению.

Настройка клавиатуры

Настройка раскладки клавиатуры для текстовых консолей производится с помощью команды loadkeys. Используйте ваши локальные инструменты конфигурации X или изменяйте раздел Keyboard в XF86Config вручную, чтобы настроить раскладку для графического режима. XkbdLayout является тем, что вам требуется установить:
XkbLayout       "us"
Это по умолчанию. Измените на ваши локальные настройки путем замены значения в кавычках на любые имена, перечисленные в подкаталогах папки keymaps. Если вы не можете найти keymaps, попробуйте отобразить их местонахождение в вашей системе с помощью команды
locate keymaps
Можно комбинировать настройки раскладки, как показано в этом примере:
Xkblayout      "us,ru"
Сделайте резервную копию файла /etc/X11/XF86Config перед его редактированием! Чтобы сделать это, вам придется использовать аккаунт суперпользователя.
Выйдите и снова войдите в систему, чтобы перезагрузить настройки X.
Апплет клавиатуры Gnome позволяет в режиме реального времени переключаться между раскладками, для использования этой программы специальных разрешений не требуется. KDE также имеет подобный инструмент для переключения между раскладками клавиатуры.

Шрифты

Используйте инструмент setfont для загрузки шрифтов в текстовом режиме. Большинство систем поставляются со стандартным файлом inputrc, который позволяет сочетание символов, таких как французский "é" (метасимволы). Для этого системный администратор должен добавить строку
export INPUTRC="/etc/inputrc"
к файлу /etc/bashrc.

Зона даты и времени

Настройка информации о времени обычно происходит во время установки. После этого, она постоянно соответствует текущей дате за счет использования клиента NTP (Network Time Protocol). Большинство Linux системы запускают ntpd по умолчанию:
debby:~> ps -ef | grep ntpd
ntp      24678     1  0  2002 ?        00:00:33 ntpd -U ntp
Вы можете запустить ntpdate вручную, чтобы установить время, при условии, что можете подсоединиться к серверу времени. Демон ntpd не должен быть запущен, когда вы устанавливаете время с использованием ntpdate. Используйте сервер времени в качестве аргумента для команды:
root@box:~# ntpdate 10.2.5.200
26 Oct 14:35:42 ntpdate[20364]: adjust time server 10.2.5.200 offset
 -0.008049 sec
Смотрите ваши системные руководства и документацию, которые поставляются с пакетом NTP. Большинство менеджеров рабочего стола включают инструменты для установки системного времени при условии, что у вас есть доступ к учетной записи системного администратора.
Для установки правильного часового пояса, вы можете использовать команды tzconfig или timezone. Обычно информация о часовом поясе задается во время установки вашей операционной системы. Многие системы имеют специфичные для дистрибутива инструменты для настройки; обратитесь к документации по системе.

Язык

Если вы предпочитаете получать сообщения от системы на голландском или французском языке, то можете установить переменные окружения LANG и LANGUAGE, что позволит поддерживать нужный язык и, в конечном итоге, шрифты, связанные с символами на этом языке.
В большинстве графических систем входа, таких как gdm или kdm, у вас есть возможность настроить параметры языка до входа в учетную запись.
Обратите внимание, сейчас на большинстве систем по умолчанию имеется тенденция к использованию en_US.UTF-8. Это не проблема, потому что системы, где такое существует по умолчанию, будут также поставляться со всеми программами, поддерживающими эту кодировку. Таким образом, vi может редактировать все файлы на вашей системе, а cat не будет вести себя странно и т.п.
Проблема начинается тогда, когда вы подключаетесь к более старой системе, не поддерживающей эту кодировку шрифта, или при открытии файла, закодированного с помощью UTF-8, на системе, поддерживающей шрифты, у которых символы кодируются 1 байтом. Может пригодиться утилита recode для конвертирования файлов из одного ряда символов в другой. Читайте man-страницы для обзора возможностей и их использования. Другим решением может быть временная работа в другой кодировке, настроив для этого переменную окружения LANG:
debby:~> acroread /var/tmp/51434s.pdf
Warning: charset "UTF-8" not supported, using "ISO8859-1".
Aborted

debby:~> set | grep UTF
LANG=en_US.UTF-8

debby:~> export LANG=en_US

debby:~> acroread /var/tmp/51434s.pdf
<--new window opens--> 
 
 



Азы linux (для детей) урок 33


Ваше текстовое окружение

Главное

Мы уже упоминали несколько переменных окружения, таких как PATH и HOME. До сих пор мы видели только примеры, в которых они используются в оболочке для определенной цели. Но в Linux существует множество других утилит, для нормальной работы которых необходима информация о вас.
Какая еще информация нужна программам, кроме путей и домашних каталогов?
Многим программам необходима информация о том, какой терминал вы используете; эта информация хранится в переменной TERM. В текстовом режиме, это будет эмуляция терминала linux, в графическом режиме, скорее всего, вы используете xterm. Многим программам требуется информация о предпочитаемом вами редакторе на случай, если они должны будут запускать редактор как дочерний процесс. Оболочка, которую вы используете, хранится в переменной SHELL, тип операционной системы - в OS и так далее. Список всех текущих переменных, определенных для вашей сессии, можно посмотреть, введя команду printenv.
Переменные окружения управляются оболочкой. В отличие от регулярных переменных оболочки, переменные окружения наследуются любой программой, которую вы запускаете, в том числе другой оболочкой. Новым процессам присваиваются копии этих переменных; процессы могут их читать, изменять и, в свою очередь, передавать собственным дочерним процессам.
В именах переменных нет ничего особенного, за исключением того, что по соглашению используют прописные буквы. Вы можете придумать любое имя, какое захотите, хотя существуют стандартные переменные, которые являются достаточно важными, поэтому они одинаковы во всех системах Linux, например PATH и HOME.

Экспорт переменных

Содержимое отдельных переменной обычно отображается с помощью команды echo, как в этих примерах:
debby:~> echo $PATH
/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:/usr/local/bin

debby:~> echo $MANPATH
/usr/man:/usr/share/man/:/usr/local/man:/usr/X11R6/man
Если вы хотите изменить содержимое переменной таким, чтобы она была полезна для других программ, вам следует экспортировать новое значение из вашего окружения в окружение, которое запускают эти программы. Типичным примером является экспорт переменной PATH. Вы можете объявить ее добавлением очередного пути, например, с тем чтобы иметь возможность играть в симулятор полетов, который находится в /opt/FlightGear/bin:
debby:~> PATH=$PATH:/opt/FlightGear/bin
Такая запись указывает оболочке искать программ не только в текущем пути $PATH, но и в дополнительном каталоге /opt/FlightGear/bin.
Но если новое значение переменной PATH не известно окружению, то работать ничего не будет:
debby:~> runfgfs
bash: runfgfs: command not found
В Bash мы обычно делаем это с помощью одного элегантного шага:
export VARIABLE=value
Тот же самый способ используется для переменной MANPATH, которая сообщает команде man, где искать сжатые man-страницы. Когда новые программы устанавливаются в новые или необычные каталоги, документация для них, вероятно, также будет в нестандартных каталогах. Если вы хотите прочитать справочные страницы этих новых программ, расширьте переменную MANPATH:
debby:~> export MANPATH=$MANPATH:/opt/FlightGear/man

debby:~> echo $MANPATH
/usr/man:/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/FlightGear/man
Вы можете избежать повторного ввода этой команды в каждом окне, которое вы открываете, добавив эту строку в один из ваших установочных файлов оболочки, см. Раздел "Установочные файлы shell".

Зарезервированные переменные

Следующая таблица дает обзор наиболее распространенных предопределенных переменных:
Таблица. Стандартные переменные окружения
Имя переменной Хранимая информация
DISPLAY используется системой X Window для определения сервера, который отображает на дисплей
DOMAIN доменное имя
EDITOR хранит предпочитаемый вами редактор
HISTSIZE размер файла истории shell (в количестве строк)
HOME адресный путь вашего домашнего каталога
HOSTNAME имя локального хоста
INPUTRC определяет местоположение файлов устройств ввода, например, клавиатуры
LANG предпочитаемый язык
LOGNAME логин
MAIL местонахождение вашей папки для входящей почты
MANPATH пути поиска для man-страниц
OS строка, описывающая операционную систему
OSTYPE дополнительные сведения о версии и т.п.
PAGER используется программами, такими как man, которым требуется знать, что делать в случае, если вывод больше, чем окно терминала
PATH поиск путей для команд
PS1 первоначальное приглашение
PS2 вторичное приглашение
PWD текущий рабочий каталог
SHELL текущая оболочка
TERM тип терминала
UID ID пользователя
USER(NAME) имя пользователя
VISUAL ваш предпочитаемый полноэкранный редактор
XENVIRONMENT местонахождение ваших личных настроек поведения X
XFILESEARCHPATH пути поиска графических библиотек
Многие переменные не только предопределены, но также их значения устанавливаются заранее, при этом используются конфигурационные файлы. Мы обсудим это в следующем разделе.

Установочные файлы shell

При вводе команды ls -al для получения расширенного списка всех файлов, в том числе начинающихся с точки, содержащихся в вашем домашнем каталоге, вы увидите один или несколько файлов, начинающихся с . и заканчивающихся на rc. Для Bash это будет .bashrc. Это копия общесистемного конфигурационного файла /etc/bashrc.
При входе логина в shell, login выполнит идентификацию, установит окружение и запустит вашу оболочку. В случае bash следующим шагом будет чтение общего профиля из /etc, если такой файл существует. Затем bash ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, читает и выполняет команды из первого, который существует и который можно прочитать. Если таких файлов нет, то используется /etc/bashrc.
Когда происходит выход их оболочки, bash считывает и выполняет команды из файла ~/.bash_logout, если он существует.
Эта процедура подробно описана в man-страницах login и bash.

Стандартный набор установочных файлов

Пример /etc/profile

Давайте посмотрим на некоторые из этих конфигурационных файлов. Первый для чтения — это /etc/profile, в котором устанавливаются такие важные переменные, как PATH, USER и HOSTNAME:
debby:~> cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc


# Path manipulation
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; then
    PATH=/sbin:$PATH
fi

if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; then
    PATH=/usr/sbin:$PATH
fi

if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/local/sbin"
    then
    PATH=/usr/local/sbin:$PATH
fi

if ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; then
    PATH="$PATH:/usr/X11R6/bin"
fi
Эти строки проверяют устанавливаемые пути: если root открывает оболочку (ID пользователя 0), проверяется пути /sbin, /usr/sbin и /usr/local/sbin. Если нет, то они добавляются. Для всех проверяется путь /usr/X11R6/bin.
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
Все, что не нужно отправляется в /dev/null, если пользователь не меняет эту настройку.
USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"

HOSTNAME=`/bin/hostname`
HISTSIZE=1000
Здесь общим переменным назначаются их стандартные значения.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
    INPUTRC=/etc/inputrc
fi
Если переменная INPUTRC не установлена, и нет .inputrc в домашнем каталоге пользователя, то будет загружен файл, отвечающий за ввод по умолчанию.
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
Все переменные экспортируются, поэтому они доступны для других программ, запрашивающих информацию о вашем окружении.

Каталог profile.d

for i in /etc/profile.d/*.sh ; do
    if [ -r $i ]; then
    	. $i
    fi
done
unset i
Все читаемые скрипты shell из каталога /etc/profile.d читаются и выполняются. Это то, что делает возможным color-ls, похожесть vi на vim, локальные настройки и т.д. Временная переменная i не устанавливается для предотвращения неадекватного поведения оболочки позже.

Пример .bash_profile

Затем bash ищет .bash_profile в домашнем каталоге пользователя:
debby:~> cat .bash_profile 
#####################################################
#                                                   #
#   .bash_profile file                              #
#                                                   #
#   Executed from the bash shell when you log in.   #
#                                                   #
#####################################################

source ~/.bashrc
source ~/.bash_login
В файле содержаться указания оболочке сначала прочитать ~/.bashrc, потом ~/.bash_login. При работе с окружением оболочки вы будете сталкиваться с встроенной в shell командой source достаточно часто: она используется для применения изменений конфигурации к текущему окружению.

Пример .bash_login

Файл ~/.bash_login определяет по умолчанию защиту файлов, устанавливая значение umask, см. Раздел "Вступление в другую группу". Файл ~/.bashrc используется для определения группы пользовательских псевдонимов, функции и личные переменных окружения. Сначала читается /etc/bashrc, который описывает стандартное приглашение (PS1) и значение по умолчанию umask. После этого вы можете добавить собственные настройки. Если нет ~/.bashrc, то по умолчанию читается /etc/bashrc.

Пример /etc/bashrc

Ваш файл /etc/bashrc может выглядеть следующим образом:
debby:~> cat /etc/bashrc
# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# by default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; then
	umask 002
else
	umask 022
fi
Эти строки устанавливают значение umask. Затем, в зависимости от типа shell, устанавливается приглашение:
# are we an interactive shell?
if [ "$PS1" ]; then
  if [ -x /usr/bin/tput ]; then
    if [ "x`tput kbs`" != "x" ]; then 
# We can't do this with "dumb" terminal
      stty erase `tput kbs`
    elif [ -x /usr/bin/wc ]; then
      if [ "`tput kbs|wc -c `" -gt 0 ]; then 
# We can't do this with "dumb" terminal
        stty erase `tput kbs`
      fi
    fi
  fi
  case $TERM in
	xterm*)
	if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
		PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
	else
   PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\
${PWD/$HOME/~}\007"'
	fi
    ;;
	*)
   [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\
/etc/sysconfig/bash-prompt-default
	    ;;
    esac
    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
    
    if [ "x$SHLVL" != "x1" ]; then # We're not a login shell
        for i in /etc/profile.d/*.sh; do
	    if [ -x $i ]; then
	        . $i
	    fi
	done
    fi
fi

Пример .bash_logout

Во время выхода из системы, выполняются команды из ~/.bash_logout, которые могут, например, очищать терминал, так что у вас появляется чистое окно при входе из удаленного сеанса или при выходе из системной консоли:
debby:~> cat .bash_logout
# ~/.bash_logout

clear
Давайте ближе рассмотрим, как эти скрипты работают в следующем разделе. Храните info bash под рукой.

Приглашение Bash

Введение

Приглашение Bash может делать гораздо больше, чем отображение такой простой информации, как имя пользователя, имя машины и некоторое указание на текущий рабочий каталог. Мы можем добавить другую информацию, такую как дата и время, количество подключенных пользователей и т.д.
Однако, прежде чем мы начнем, сохраним наше текущее приглашение в другую переменную окружения:
[jerry@nowhere jerry]$ MYPROMPT=$PS1

[jerry@nowhere jerry]$ echo $MYPROMPT
[\u@\h \W]\$

[jerry@nowhere jerry]$
Когда мы теперь будем изменять строку приглашения, например, с помощью команды PS1="->", то всегда сможем получить нашу оригинальную строку обратно с помощью команды PS1=$MYPROMPT. Конечно, вы получите ее обратно, и когда подключитесь снова; так будет до тех пор, пока вы возитесь с приглашением в командной строке и не вставляете его в файл конфигурации оболочки.

Некоторые примеры

Для того, чтобы понять эти приглашения и используемые управляющие последовательности, обратитесь к info- и man-страницам Bash.
  • export PS1="[\t \j] "
Отображает время и количество выполняемых заданий.
  • export PS1="[\d][\u@\h \w] : "
Отображает дату, имя пользователя, название хоста и текущую рабочую директорию. Заметьте, что \W отображает только конечные имена текущего каталога.
  • export PS1="{\!} "
Отображает номер каждой команды в истории.
  • export PS1="\[\033[1;35m\]\u@\h\[\033[0m\] "
Делает user@host розовым.
  • export PS1="\[\033[1;35m\]\u\[\033[0m\] \[\033[1;34m\]\w\[\033[0m\] "
Раскрашивает имя пользователя в розовый цвет, а рабочий каталог в голубой.
  • export PS1="\[\033[1;44m\]$USER is in \w\[\033[0m\] "
Приглашение для людей, которым трудно видеть разницу между приглашением и тем, что они вводят.
  • export PS1="\[\033[4;34m\]\u@\h \w \[\033[0m\]"
Подчеркнутое приглашение.
  • export PS1="\[\033[7;34m\]\u@\h \w \[\033[0m\] "
Белые символы на синем фоне.
  • export PS1="\[\033[3;35m\]\u@\h \w \[\033[0m\]\a"
Розовая строка иным шрифтом, которая предупреждает вас, когда ваши команды закончили работу.
  • export PS1=...
Переменные экспортируются, так что впоследствии выполняющиеся команды также будут знать об окружении. Для конфигурации строки приглашения лучше изменить конфигурационный файл оболочки, ~/.bashrc.
Если вам захочется, то приглашения могут выполнять shell-скрипты и вести себя по-разному в зависимости от условий. У вас может даже строка приглашения играть мелодию при выполнении команды, хотя это вам быстро надоест. Более подробную информацию можно найти в Bash-Prompt HOWTO.

Сценарии оболочки

Что такое сценарии?

Скрипт оболочки, как мы видели в примерах конфигурации shell, представляет собой текстовый файл, содержащий команды оболочки. Когда такой файл используется в качестве первого аргумента без опции при вызове Bash, и без опций -c или -s, Bash считывает и выполняет команды из файла, затем выходит. Этот режим работы создает неинтерактивную оболочку. Когда Bash запускает shell-скрипт, он устанавливает специальный параметр 0 к имени файла, а не имя к оболочке, и позиционные параметры (все, что следует за именем скрипта) устанавливаются в остальные аргументы, если таковые задаются. Если дополнительные аргументы не задаются, позиционные параметры не включаются.
Скрипт оболочки можно сделать исполняемым с помощью команды chmod за счет включения бита исполнения. Когда Bash находит такой файл при поиске в PATH по отношению к команде, он порождает подоболочку для его выполнения. Другими словами, выполнение
filename ARGUMENTS
эквивалентно выполнению
bash filename ARGUMENTS
если "filename" представляет собой исполняемый скрипт. Эта подоболочка инициализирует себя, так что эффект такой, как если бы новая оболочка интерпретировала сценарий, с тем исключением, что места команд, запомненные родителем (см. hash в info-страницах), сохраняются ребенком.
Большинство версий UNIX наделяют эту часть команд операционной системы исполняемым механизмом. Если первая строка сценария начинается с двух символов "#!", оставшаяся часть строки указывает интерпретатор для программы. Таким образом, вы можете указать bash, awk, perl или другой интерпретатор или оболочку и писать остальную часть файла сценария на этом языке.
Аргументы для интерпретатора состоят из одного дополнительного аргумента, который следует за именем интерпретатора в первой строке файла сценария, после следует имя файла сценария, а затем остальные аргументы. Bash будет выполнять это действие на операционных системах, которые не обрабатывают это самостоятельно.
Сценарии Bash часто начинаются с
#! /bin/bash
(предполагая, что Bash была установлена в /bin), так как это гарантирует использование Bash для интерпретации сценариев, даже если скрипт выполняется под другой оболочкой.

Некоторые простые примеры

Очень простой скрипт, состоящий только из одной команды, которая приветствует пользователя, выполняется так:
[jerry@nowhere ~] cat hello.sh
#!/bin/bash
echo "Hello $USER"
Сценарий фактически состоит только из одной команды echo, которая использует значение ($) переменной окружения USER, чтобы напечатать строку, настроенную на пользователя, который вызывает скрипт.
Другой однострочный пример, используемый для отображения подключенных пользователей:
#!/bin/bash
who | cut -d " " -f 1 | sort -u
Вот скрипт, состоящий из несколько строк, которые я использую, чтобы создать резервные копии всех файлов в каталоге. Сначала скрипт создает список всех файлов в текущем каталоге и помещает его в переменную LIST. Затем он устанавливает имя копии для каждого файла, и затем копирует файл. Для каждого файла выводится сообщение:
tille:~> cat bin/makebackupfiles.sh
#!/bin/bash
# make copies of all files in a directory
LIST=`ls`
for i in $LIST; do
	ORIG=$i
	DEST=$i.old
	cp $ORIG $DEST
	echo "copied $i"
done
Просто ввод строки подобной mv * *.old не будет работать, как вы заметите при попытке выполнить это на ряд тестовых файлов. Команда echo была добавлена для отображения какой-либо деятельности. echo обычно полезна, когда сценарий не работает: постепенно просматривая код, вы найдете ошибку в кратчайшие сроки.
Каталог /etc/rc.d/init.d содержит множество примеров. Давайте посмотрим на этот сценарий, который управляет фиктивным сервером IcanSeeYou:
#!/bin/sh
# description: ICanSeeYou allows you to see networked people

# process name: ICanSeeYou
# pidfile: /var/run/ICanSeeYou/ICanSeeYou.pid
# config: /etc/ICanSeeYou.cfg

# Source function library.
. /etc/rc.d/init.d/functions

# See how (with which arguments) we were called.
case "$1" in
	start)
		echo -n "Starting ICanSeeYou: "
		daemon ICanSeeYou
		echo
		touch /var/lock/subsys/ICanSeeYou
		;;
	stop)
		echo -n "Shutting down ICanSeeYou: "
		killproc ICanSeeYou
		echo
		rm -f /var/lock/subsys/ICanSeeYou
		rm -f /var/run/ICanSeeYou/ICanSeeYou.pid
		;;
	status)
		status ICanSeeYou
		;;
	restart)
		$0 stop
		$0 start
		;;
	*)
		echo "Usage: $0 {start|stop|restart|status}"
		exit 1
esac

exit 0
Во-первых, размещается . (точка), которая управляет множеством функций оболочки и используется практически во всех скриптах в /etc/rc.d/init.d. Затем размещается команда case, которая определяет 4 различных способа выполнения сценария. Например, это может быть ICanSeeYou start. Решением в этом случае будет чтение (первого) аргумента сценария с выражением $1.
Когда дается не совместимый вход, то срабатывает код, отмеченный звездочкой, в котором скрипт выдает сообщение об ошибке. Список case заканчивается инструкцией esac. В случае start программа сервера запускается как демон, и назначаются ID процесса и шлюз. В случае stop процесс сервера сходит на нет и останавливается, шлюз и PID удаляются. Опции, такие как опции daemon и функции как killproc определены в файле /etc/rc.d/init.d/functions. Эта установка специфична для дистрибутива, используемого в этом примере. Запускающие скрипты в вашей системе могут использовать другие функции, определенные в других файлах, или вообще никакие.
В случае успеха сценарий возвращает код выхода нуля к его родителю.
Этот сценарий является прекрасным примером использования функций, которые позволяют легче читать сценарий и делать работу быстрее. Заметьте, что здесь используется sh вместо bash, чтобы сделать их полезными для более широкого круга систем. В системе Linux, вызывая bash как sh, результаты в оболочке работают в POSIX-совместимом режиме.
Man-страницы bash содержат больше информации об объединении команд, for- и while-петлях, регулярных выражений, а также примеры. Понятный Bash для системных администраторов и опытных пользователей, с упражнениями, от того же автора, как "Введение в руководство Linux", находится на http://tille.garrels.be/training/bash/. Подробное описание особенностей Bash и приложений есть в справочном руководстве "Продвинутые сценарии Bash".

Азы linux (для детей) урок 32


 /home

Эта глава о настройке вашего окружения. Теперь, когда мы знаем, как использовать редактор, можем изменить все виды файлов, что заставит нас чувствовать себя дома лучше. После изучения этой главы вы будете больше знать о следующем:
  • Обустройство среды
  • Общие установочные файлы shell
  • Конфигурация shell
  • Настройка приглашения
  • Настройка графической среды
  • Звуковые и видео приложения
  • Дисплей и оконные менеджеры
  • Как работает клиент-серверная система X
  • Язык и настойки шрифта
  • Установка нового программного обеспечения
  • Обновление существующих пакетов

Как мы уже упоминали, навести беспорядок в системе достаточно легко. Поэтому не следует пренебрегать тем, что позволяет сохранять рабочее место опрятным. Если вы научитесь этому с самого начала, то приобретете хорошую привычку, которая поможет вам сэкономить время при программировании в системе Linux (UNIX) или при решении задач управления системой. Здесь приведены несколько способов сделать себе жизнь легче:
  • Создайте каталог bin для ваших файлов программ и скриптов.
  • Организуйте неисполняемые файлы в подходящие каталоги и создайте так много каталогов, как вам требуется. Например, могут быть отдельные каталоги для изображений, документов, проектов, загруженных файлов, электронных таблиц, личных файлов, и так далее.
  • Делайте каталоги личными с помощью команды chmod 700 dirname.
  • Давайте вашим файлам осмысленные имена, такие как Жалоба премьер-министру 050302, а не письмо1.

Создайте пространство

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

Опустошение файлов

Иногда содержание файла может вас не интересовать, но вам нужно имя файла в качестве маркера (например, вам просто необходим файл-метка, напоминание о том, что файл был там или должен быть через некоторое время в будущем). Перенаправление вывода "нулевой" команды в оболочках Bourne и Bash как раз это сделает:
andy:~> cat wishlist > placeholder

andy:~> ls -la placeholder
-rw-rw-r--    1 andy   andy       200 Jun 12 13:34 placeholder

andy:~>  > placeholder

andy:~> ls -la placeholder

-rw-rw-r--    1 andy   andy         0 Jun 12 13:35 placeholder
Процесс уменьшения существующего файла в файл с тем же именем, но размер которого равен нулю байтов, называется усечением.
Также создать новый пустой файл можно с помощью команды touch. Использование touch на существующий файл обновит только его метку. Для выяснения деталей посмотрите info-страницу для touch.
Для получения "почти" пустого файла используйте команду tail. Допустим, список пожеланий пользователя andy становится довольно длинным, т.к. он всегда добавляет материал в конец, но никогда не удаляет то, что он уже получил. Теперь он хочет только сохранить последние пять пунктов:
andy:~> tail -5 wishlist > newlist

andy:~> cat newlist > wishlist

andy:~> rm newlist

Подробнее о log-файлах

Некоторые программы Linux настойчиво требуют записи различных выходных данных в файл журнала (log-файл). Обычно существуют установки только для журналов ошибок, или журналировать минимальное количество информации, например, установка уровня отладки программы. Но даже в этом случае, вы можете не волноваться о файле журнала. Здесь несколько способов, чтобы избавиться от них или, по крайней мере, несколько ограничить их размер:
  • Если вы уверены, что log-файл вам больше не потребуется, попробуйте удалить его, когда программа не запущена. Некоторые программы могут даже обнаружить после перезагрузки, что файла журнала нет и не будут создавать его снова.
  • Если после удаления log-файла программа создает его снова, прочитайте документацию к этой программе в поисках варианта команды, которая исключит создание лог-файла.
  • Попробуйте сделать log-файлы меньше за счет того, что будет вводится только информация, имеющая отношение к вам, или только имеющая значение.
  • Попробуйте заменить файл журнала символической ссылкой /dev/null; если вам повезет, программа не будет жаловаться. Не делайте такого с лог-файлами программ, которые запускаются при загрузке системы, или программами, которые работают от хрона (см. Главу 4, Процессы). Эти программы могут заменить символическую ссылку небольшим файлом, который начнет расти снова.

Почта

Регулярно очищайте ваш почтовый ящик, создавайте подкаталоги и автоматически перенаправляйте используемый procmail (см. info-страницы) или фильтры от предпочитаемого вами приложения для чтения почты. Если у вас есть папка-корзина, то регулярно очищайте ее.
Для перенаправления почты используйте файл .forward в вашем домашнем каталоге. Почтовый сервис Linux ищет именно этот файл для локальной доставки. Содержание файла определяет то, что почтовая система должна делать с вашей почтой. Он может содержать одну строку, содержащую полный адрес электронной почты. В таком случае система будет отправлять все письма на этот адрес. Например, при аренде места для сайта, вы можете направлять почту, предназначенную для веб-мастера на свой аккаунт, чтобы не использовать место на диске. Файл .forward вебмастера может выглядеть следующим образом:
webmaster@www ~/> cat .forward
mike@pandora.be
Использование пересылки почты также полезно, т.к. освобождает вас от необходимости проверять несколько почтовых ящиков. Вы можете сделать так, чтобы каждый адрес указывал на основную почту, которую вам удобней использовать.
Вы можете обратиться к системному администратору, чтобы он определил направления для вас в локальный файл почтовых псевдонимов, например, когда аккаунт закрывается, но электронная почта пока остается активной.

Экономия пространства ссылкой

Когда нескольким пользователям необходимо иметь доступ к одному и тому же файлу или программе, когда исходное имя файла слишком длинное или его слишком трудно запомнить, используйте символическую ссылку вместо создания отдельной копии для каждого пользователя или назначения.
Множественные символические ссылки могут иметь различные названия, например, ссылку можно назвать monfichier в одной пользовательской директории и mylink в другой. Несколько ссылок (с разными именами) на один и тот же файл может быть в одном и том же каталоге. Часто это можно наблюдать в каталоге /lib с помощью команды
ls -l /lib
Вы увидите, что в этом каталоге очень много ссылок, указывающих на одинаковые файлы. Они создаются для программ, ищущих какое-нибудь определенное название, в результате ссылки указывают на правильные/текущие название библиотек, которые требуются под другими именами.

Ограничение размера файлов

Оболочка содержит встроенную команду для ограничения размера файлов, ulimit, которая также может быть использована для отображения ограничений на системные ресурсы:
cindy:~> ulimit -a
core file size (blocks)     0
data seg size (kbytes)      unlimited
file size (blocks)          unlimited
max locked memory (kbytes)  unlimited
max memory size (kbytes)    unlimited
open files                  1024
pipe size (512 bytes)       8
stack size (kbytes)         8192
cpu time (seconds)          unlimited
max user processes          512
virtual memory (kbytes)     unlimited
Cindy не разработчик и не заботится об основных дампах, которые содержат информацию об отладке программы. Если вам нужны основные дампы, вы можете установить их размер с помощью команды ulimit. В info-страницах bash дается более подробное объяснение.
Core файл?
Файл core или основной дамп иногда создается, когда не все так хорошо с программой во время ее выполнения. Файл core содержит копию памяти системы во время того, когда произошла ошибка.

Сжатые файлы

Сжатые файлы весьма полезны, поскольку они занимают меньше места на жестком диске. Еще одним преимуществом является то, что они занимают меньше пропускной способности при отправке их по сети. Многие файлы, такие как man-страницы, в системе хранятся в сжатом виде. Тем не менее, чтобы получить информацию их надо распаковать; как и сжатие это занимает довольно много времени. Вряд ли вам захочется распаковывать страницу, например, описывающую опции команды, а затем сжимать ее снова. Большинство людей, кроме того, забывают удалить лишнее после того, как они нашли необходимую им информацию.
Поэтому есть инструменты, которые создают сжатые файлы, но распаковывают их только в память. Фактически сжатый файл остается на диске как есть. Большинство систем поддержки zgrep, zcat, bzless и других членов z-семейства предотвращают ненужные действия по распаковке/сжатию. Посмотрите в ваш каталог исполняемых файлов системы, а также info-страницы.
См. Главу 9, Основные методы резервного копирования для дополнительной информации по существующему сжатию файлов и примеры создания архивов.

Азы linux (для детей) урок 31

Глава 6. Текстовые редакторы

Какой редактор лучше использовать?

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

GNU Emacs

Emacs является расширяемым, настраиваемым, самодокументируемым, отображающим в реальном времени редактором, известным во многих UNIX и других системах. Редактируемый текст отображается на экране и обновляется автоматически при вводе команд. Это и есть редактор реального времени, т.к. экран обновляется очень часто, обычно после каждого символа или пары введенных вами символов. Это минимизирует то количество информации, которую вы должны держать в голове при редактировании. Emacs называется продвинутым, т.к. он предоставляет возможности, выходящие за рамки простой вставки и удаления: контроль субпроцессов; автоматический отступ в программном коде; просмотр двух или более файлов за один раз; редактирование форматированного текста; и "разбирается" в значениях символов, слов, строк, предложений, абзацев и страниц, также как в выражениях и комментариях ряда языков программирования.
Самодокументируемый означает, что в любой момент вы можете ввести специальную комбинацию Ctrl + H, чтобы узнать, какие у вас есть опции. Вы можете также использовать это для выяснения, что делает какая-нибудь команда, или найти все команды, которые относятся к какой-нибудь теме. Настраиваемый означает, что вы достаточно легко можете изменить определения команд Emacs. Например, если вы используете язык программирования, в котором комментарии начинаются с "<**" и заканчиваются "**>", то можете сообщить Emacs команды манипуляции с комментарием при использовании этих строк. Другим видом настройки является перестройка набора команд. Например, если вы предпочитаете четыре основные команды движения курсора (вверх, вниз, влево и вправо) на клавишах клавиатуры, то существует способ переопределить клавиши.
Расширяемый означает, что вы можете выйти за рамки простой настройки и писать совершенно новые команды, программы на языке Lisp; интерпретатор Lisp входит в состав Emacs. Emacs является онлайн-расширяемой системой, это означает, что он разделен на множество функций, которые вызывают друг друга, и любая из которых может быть переопределена в середине сеанса редактирования. Почти любая часть Emacs может быть заменена без создания отдельной копии всего Emacs. Большинство команд редактирования Emacs уже написаны на Lisp; за некоторыми исключениями могли бы быть написаны в Lisp, но написанный на C для повышения эффективности. Хотя только программист может написать расширение, кто-нибудь может использовать его позже.
При запуске под X Window System (запускается как xemacs) Emacs предоставляет собственные меню и удобные привязки к кнопкам мыши. Но Emacs может обеспечить многие из преимуществ оконной системы исключительно в текстовом терминале. Например, вы можете просматривать или редактировать несколько файлов одновременно, перемещать текст между файлами и редактировать файлы во время работы команд оболочки.

Vi(m)

Vim означает "Vi IMproved" ("Vi Улучшенный"). Раньше считалось "Vi IMitation" ("Vi Подражание"), но существует так много улучшений, что изменение названия стало необходимостью. Vim является текстовым редактором, который включает в себя почти все команды от UNIX программы vi и множество новых.
Команды в редакторе vi вводятся только с помощью клавиатуры; в этом есть преимущество, т.к. ваши пальцы могут оставаться на клавиатуре, а глаза на экране, вместо того, чтобы перемещать руку несколько раз на мышь. Для тех, кому это нравится, могут быть активированы поддержка мыши и GUI версия с полосами прокрутки и меню.
В этой книге при редактировании файлов мы будем ссылаться на vi или vim, а вы, конечно, можете использовать редактор по вашему выбору. Тем не менее, мы рекомендуем, по крайней мере, изучить основы vi, потому что это стандартный текстовый редактор почти на всех системах UNIX, в то время как emacs может быть дополнительным пакетом. Могут быть небольшие различия между различными компьютерами и терминалами, но главным остается то, что если вы можете работать с vi, то сможете выжить в любой системе UNIX.
Помимо команды vim, пакеты vIm могут также предоставлять gvim, Gnome-версию vim. Начинающие пользователи могут найти, что он проще в использовании, так как в меню предоставляется помощь, на случай, если вы забыли или не знаете, как выполнять определенную задачу редактирования, используя стандартные команд vim.

Использование редактора Vim


Два режима

Редактор vi очень мощный инструмент и содержит очень обширное встроенное руководство, которое можно открыть используя команду :help, когда программа запущена (вместо использования man или info, которые не содержат так много информации). Здесь мы обсудим только самые основы, чтобы вы смогли начать.
Тем, что вводит начинающих пользователей vi в заблуждение, является то, что он может работать в двух режимах: режиме команд и режиме вставки. Редактор всегда запускается в командном режиме. Команды перемещают вас по тексту, осуществляют поиск, замену, маркировку блоков и выполняют другие задачи редактирования, некоторые команды переключают редактор в режим вставки.
Все это означает, что у каждой клавиши есть не одно, а, вероятно, два значения: она может либо представлять команду для редактора в командном режиме, или символ, который вам требуется в тексте в режиме вставки.
Произношение.
Это произносится как "vee-eye".

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

Перемещение по тексту

Обычно перемещение по тексту возможно с помощью клавиш навигации. Если нет, попробуйте:
  • h для перемещения курсора влево
  • i для его перемещения в право
  • k для движения вверх
  • j для движения вниз
Shift-G быстро переместить в конец документа.

Основные операции

Вот наиболее используемые команды vi:
  • n dd удалит n линий, начиная с текущей позиции курсора.
  • n dw удалит n слов с правой стороны от курсора.
  • x удалит символ, на котором стоит курсор
  • :n переход к линии n файла.
  • :w сохранит (запишет) файл.
  • :q осуществит выход из редактора.
  • :q! принудительный выход, когда требуется выйти из файла, содержащего несохраненные изменения.
  • :wq сохранение и выход.
  • :w newfile сохранение текста в newfile.
  • :wq! переопределяет разрешение «только для чтения» (если у вас есть разрешение на переопределение разрешений, например, когда вы используете учетную запись root).
  • /astring будет искать строку в файле и установит курсор на первое соответствие ниже его позиции.
  • / будет выполнять тот же поиск снова, перемещения курсор к следующему соответствию.
  • :1, $s/word/anotherword/g заменит word на anotherword во всём файле.
  • yy скопирует блок текста.
  • n p вставит его n раз.
  • :recover восстановит файл после внезапного сбоя.

Команды, которые переключаются редактор в режим вставки

  • a добавление: перемещает курсор на одну позицию вправо перед включением режима вставки.
  • i вставка.
  • o вставка пустой строки под текущей позицией курсора и перемещение курсора в эту строку.
Нажатие клавиши Esc переключает обратно в командный режим. Если вы не уверены, в каком режиме находитесь по причине использования очень старой версии, где vi не отображает сообщение "INSERT", нажмите Esc, и вы будете уверены, что вернулись в командный режим. Вполне возможно, если вы уже находитесь в командном режиме, система даст небольшое предупреждение при нажатии Esc с помощью звукового сигнала или визуально (вспышка на экране). Это нормальное поведение.

Простой способ

Вместо чтения текста, что довольно скучно, вы можете использовать vimtutor для изучения ваших первых команд Vim. Это тридцати минутный учебник, который рассказывает о самой основной функциональности Vim в восьми простых упражнениях. Хотя вы и не узнаете все о Vim за полчаса, это руководство предоставит описание достаточного количества команд, после чего вы сможете с легкостью использовать Vim в качестве универсального редактора.
В UNIX и MS Windows, если Vim был правильно установлен, вы можете запустить эту программу из shell или командой строки, введя команду vimtutor. Это создаст копию файла учебника, так что вы можете редактировать его без риска повреждения оригинала. Есть несколько версий перевода руководства. Чтобы узнать, доступен ли ваш язык, используйте двухбуквенный код языка. Для французского это будет vimtutor fr (если он установлен в системе).

/Для офисных целей служат такие пакеты как

Системные и пользовательские файлы конфигурации

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

Но я хочу графический текстовый редактор!

Если вы и правда настаиваете, попробуйте gedit, kedit, kwrite или xedit; эти программы создают только текстовые файлы, в чем мы и будем нуждаться. Если вы собираетесь делать что-нибудь серьезное, то все-таки лучше использовать vim или emacs.
Приемлемой альтернативой является gvim, версия vim для Gnome. Для этого необходимо использовать команду vi, но если вы затрудняетесь, то можете посмотреть их в меню.

Упражнения

Азы linux (для детей) урок 30

Перенаправление ввода-вывода (I/O) (зпключение)
В этой главе мы узнали, как команды могут быть связаны друг с другом, и как вывод одной команды может быть использован в качестве ввода для другой.
Перенаправление ввода/вывода — обычная задача на машинах UNIX и Linux. Этот мощный механизм позволяет гибко использовать блоки, из которых сделан UNIX.
Наиболее часто используемыми перенаправлениями являются > и |. См. Приложение C, "Особенности Shell" для обзора команд перенаправления и других конструкций shell.
Команда Значение
date Отображает дату и время
set Настройка опций оболочки
sort Сортирует строки текста
uniq Удаляет повторяющиеся строки из отсортированного файла



Азы linux (для детей) урок 29


Расширенные свойства перенаправлени


Существует три типа I/O (ввода-вывода), которые имеют свои собственные идентификаторы, называемые дескрипторами файла:
  • стандартный ввод: 0
  • стандартный вывод: 1
  • стандартная ошибка: 2
В следующих описаниях, если номер дескриптора файла не указан, и первый символ перенаправления оператор <, перенаправление ссылается на стандартный ввод (дескриптор файла 0). Если первый символ перенаправления оператор >, перенаправление ссылается на стандартный вывод (дескриптор файла 1).
Некоторые практические примеры внесут больше ясности:
ls > dirlist 2>&1
направит как стандартный вывод, так и стандартную ошибку в файл dirlist, в то время как команда
ls 2>&1 > dirlist
направит только стандартный вывод в dirlist. Это может быть полезным вариантом для программистов.
Существует сложность: не следует путать использование амперсанда здесь с использованием его в разделе "Интерактивные процессы", где амперсанд используется для запуска процесса в фоновом режиме. В данном случае он просто служит признаком того, что число, которое следует за ним, является не именем файла, а местом, на которое указывается потоку данных. Также отметим, что символ "больше, чем" не должен быть отделен пробелами от номера дескриптора файла. Если он будет отделен, мы снова укажем на вывод в файл. Пример ниже демонстрирует это:
[nancy@asus /var/tmp]$ ls 2> tmp

[nancy@asus /var/tmp]$ ls -l tmp
-rw-rw-r--  1 nancy nancy 0 Sept  7 12:58 tmp

[nancy@asus /var/tmp]$ ls 2 > tmp
ls: 2: No such file or directory
Первая команда, которую выполняет nancy, правильна (даже несмотря на отсутствие ошибок, и поэтому файл, в который перенаправлялась стандартная ошибка пуст). Вторая команда предполагает, что 2 - это имя файла, которого в данном случае нет, поэтому отображается ошибка.
Все эти особенности подробно описаны в info-страницах Bash.

Примеры

Анализ ошибок

Если ваш процесс порождает много ошибок, есть способ тщательно их изучить:
command 2>&1 | less
Такое часто используется при создании нового программного обеспечения с использованием команды make, так как здесь:
andy:~/newsoft> make all 2>&1 | less
--output ommitted--

Отделение стандартного вывода от стандартной ошибки

Конструкции подобные этим часто используется программистами, в результате вывод отображается в одном окне терминала, а ошибки в другом. Сначала выясняется, какой псевдо терминал вы используете выдачей команды tty.
andy:~/newsoft> make all 2> /dev/pts/7

Одновременная запись в вывод и в файлы

Вы можете использовать команду tee для копирования ввода на стандартный вывод и один или несколько выходных файлов за один раз. Использование опции -a c tee в результате добавляет ввод в файл(ы). Эта команда полезна, если вы хотите как увидеть, так и сохранить вывод. Операторы > и >> не позволяют выполнить оба действия одновременно.
Этот инструмент обычно называется подачей на конвейер (|), что демонстрируется в следующем примере:
mireille ~/test> date | tee file1 file2
Thu Jun 10 11:10:34 CEST 2004

mireille ~/test> cat file1
Thu Jun 10 11:10:34 CEST 2004

mireille ~/test> cat file2
Thu Jun 10 11:10:34 CEST 2004

mireille ~/test> uptime | tee -a file2
 11:10:51 up 21 days, 21:21, 57 users,  load average: 0.04, 0.16, 0.26

mireille ~/test> cat file2
Thu Jun 10 11:10:34 CEST 2004
 11:10:51 up 21 days, 21:21, 57 users,  load average: 0.04, 0.16, 0.26
 

Фильтры

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

Дополнительная информация о grep

Как мы уже видели в разделе "Команда grep", grep сканирует строку вывода через строку поиска по определенным шаблонам. Все строки, содержащие шаблон будут распечатаны на стандартном выводе. Такое поведение может быть отменено путем использования опции -v.
Некоторые примеры: допустим, мы хотим знать, какие файлы в определенной директории были изменены в феврале:
jenny:~> ls -la | grep Feb Команда grep, как и большинство команд, учитывает регистр. Используйте опцию -i, чтобы не учитывать различие между верхним и нижним регистром. Также доступны многие расширения GNU, например --color, который полезен для подсветки терминов поиска в длинных строках, и --after-context, который печатает число строк после последней совпавшей строки. Вы можете оформить рекурсивных grep, который ищет во всех подкаталогах встречающихся каталогов, с помощью опции -r. Как обычно, опции могут быть объединены.
Регулярные выражения могут быть использованы для более подробной детализации совпадений, которые вы хотите выбрать из всех строк ввода. Лучшим способом познакомиться с регулярными выражениями является чтение документации по grep. Отличная глава включена в info-страницу grep. Поскольку обсуждение вводов и выводов регулярных выражений завело бы нас слишком далеко, настоятельно рекомендуется начать с документации, если вы хотите знать о них больше.
Поиграйте немного с grep, это займет у вас какое-то время для изучения этой самой базовой, но очень мощной команды фильтрации. Упражнения в конце этой главы помогут вам начать работу, см. раздел 5.5. "Упражнения".

Фильтрация вывода

Команда sort по умолчанию сортирует строки в алфавитном порядке:
thomas:~> cat people-I-like | sort Auntie Emmy Boyfriend Dad Grandma Mum My boss Но есть множество другого, что sort может делать. Просмотр размера файла, например. С помощью этой команды, содержимое каталога сортируется от наименьших файлов в начале, до самых больших в конце:
ls -la | sort -nk 5
Старый синтаксис sort.
Вы можете получить тот же результат с ls -la | sort +4n, но это старая форма, которая не соответствует текущим стандартам.
Команда sort также используется в сочетании с программой uniq (или sort -u) для сортировки вывода и отфильтровывания двойных записей:
thomas:~> cat itemlist 1 4 2 5 34 567 432 567 34 555 thomas:~> sort itemlist | uniq 1 2 34 4 432 5 555 567

Азы linux (для детей) урок 28


Глава 5. Перенаправление ввода-вывода (I/O)

В этой главе подробно описываются мощные механизмы UNIX, связанные с перенаправлением ввода, вывода и ошибок. Темы включают:
  • Стандартные ввод, вывод и ошибки
  • Операторы перенаправления
  • Как использовать выходные данные одной команды в качестве входных данных другой
  • Как отправить вывод команды в файл для последующего использования
  • Как добавить вывод множества команд в файл
  • Перенаправления ввода
  • Обработка сообщений стандартных ошибок
  • Комбинирование перенаправления потоков ввода, вывода и ошибок
  • Выходные фильтры

Что такое стандартный ввод и стандартный вывод?

Большинство команд Linux считывают с ввода, которым может быть файл или другой атрибут команды, и записывают в вывод. По умолчанию ввод принимается с клавиатуры, а вывод отображается на экране. Клавиатура является вашим стандартным устройством ввода (stdin), а экран или конкретное окно терминала — стандартным устройством вывода (stdout).
Однако, поскольку Linux - гибкая система, эти настройки по умолчанию не обязательны к применению. Стандартный вывод, например, на сильно загруженном сервере может быть направлен на принтер.

Операторы перенаправления

Перенаправление вывода с > и |

Когда-нибудь вам захочется отправить вывод команды в файл, или вам может потребоваться применить другую команду к выводу первой. Это явление известно как перенаправление вывода. Перенаправление производится с использованием либо ">" (символ "больше чем"), либо с помощью оператора "|" (канал), который направляет стандартный вывод одной команды к другой команде в качестве стандартного ввода.
Как мы видели раньше, команда cat объединяет файлы и отправляет их все вместе на стандартный вывод. При перенаправлении этого вывода в файл он будет создан или перезаписан, если он уже существует, так что будьте аккуратнее.
nancy:~> cat test1
some words

nancy:~> cat test2
some other words

nancy:~> cat test1 test2 > test3

nancy:~> cat test3
some words
some other words
Не перезаписывайте!
Будьте осторожны, чтобы не перезаписать существующие (важные) файлы при перенаправлении вывода. Многие оболочки, в том числе и Bash, имеют встроенную функцию для защиты вас от этого риска: noclobber. См. info-страницы для получения дополнительной информации. В Bash возможно вам захочется добавить команду set -o noclobber в ваш файл конфигурации .bashrc в целях предотвращения случайной перезаписи файлов.
Если перенаправить в файл «ничего», то он станет пустым:
nancy:~> ls -l list
-rw-rw-r--    1 nancy   nancy     117 Apr  2 18:09 list

nancy:~> > list

nancy:~> ls -l list
-rw-rw-r--    1 nancy   nancy       0 Apr  4 12:01 list
Этот процесс называется усечением.
Такое же перенаправление на несуществующий файл создаст новый пустой файл с заданным именем:
nancy:~> ls -l newlist
ls: newlist: No such file or directory

nancy:~> > newlist

nancy:~> ls -l newlist
-rw-rw-r--  1 nancy   nancy	    0 Apr  4 12:05 newlist
В Главе 7, Дом, сладкий /home дается еще несколько примеров использования подобного способа переадресации.
Далее идут некоторые примеры использования конвейера команд.
Чтобы найти слово в каком-то тексте, отображаются все строки, соответствующие "pattern1", а также исключаются строки, соответствующие "pattern2":
grep pattern1 file | grep -v pattern2
Отображение вывода каталога с перелистыванием одной страницы за раз:
ls -la | less
Нахождение файла в каталоге:
ls -l | grep part_of_file_name

Перенаправление ввода

В другом случае вам может понадобиться файл, который послужит вводом для команды, которая обычно не принимает файл в качестве параметра. Такое перенаправление ввода осуществляется с помощью оператора "<" (символ "меньше, чем").
Ниже приведен пример отправки кому-то файла с использованием перенаправления ввода.
andy:~> mail mike@somewhere.org < to_do
Если пользователь mike существует в данной системе, вам не нужно вводить полный адрес. Если вы хотите достать кого-то в Интернете, введите полный адрес в качестве аргумента mail.
По началу это читается немного сложнее, чем cat file | mail someone, но это, без сомнения, гораздо более удобный способ использования имеющихся инструментов.

Объединение перенаправлений

В следующем примере объединяются входное и выходное перенаправление. Файл text.txt сначала проверяется на наличие орфографических ошибок, а вывод перенаправляется в файл журнала ошибок:
spell < text.txt > error.log
Следующая команда выводит список всех команд, которые вы можете передать на рассмотрение другому файлу при использовании less:
mike:~> less --help | grep -i examine
  :e [file]      Examine a new file.
  :n          *  Examine the (N-th) next file from the command line.
  :p          *  Examine the (N-th) previous file from the command line.
  :x          *  Examine the first (or N-th) file from the command line.
Опция -i используется для поиска без учета регистра - вспомните, что системы UNIX очень чувствительны к регистру.
Если вы хотите сохранить вывод этой команды на будущее, перенаправьте вывод в файл:
mike:~> less --help | grep -i examine > examine-files-in-less

mike:~> cat examine-files-in-less
  :e [file]      Examine a new file.
  :n          *  Examine the (N-th) next file from the command line.
  :p          *  Examine the (N-th) previous file from the command line.
  :x          *  Examine the first (or N-th) file from the command line.
Вывод одной команды может быть передан другой команде фактически столько раз, сколько вам потребуется, но только до тех пор, пока эти команды читают со стандартного ввода и отправляют результат на стандартный вывод. Иногда этого не происходит, в таком случае могут существовать специальные опции, которые отдают распоряжение таким командам, делая их поведение соответствующим стандартным установкам; так что читайте документацию (man и info-страницы) используемым вами командам, если вам приходится сталкиваться с ошибками.
Опять же, убедитесь, что вы не используете имена существующих файлов, которые вам все еще нужны. Перенаправление вывода в существующий файл заменит его содержимое.

Оператор >>

Вместо перезаписи данных файла, вы можете также добавить текст в существующий файл с помощью двух следующих друг за другом символов "больше, чем".
Пример:
mike:~> cat wishlist
more money
less work

mike:~> date >> wishlist

mike:~> cat wishlist
more money
less work
Thu Feb 28 20:23:07 CET 2002
Команда date, как правило, выводит результат на экран, но теперь добавляется к файлу wishlist.