Добавить в цитаты Настройки чтения

Страница 13 из 113

info — вывод записи из справочного руководства Info

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

File: coreutils.info, Node: ls invocation, Next: dir invocation, Up:

Directory listing

10.1 `ls': List directory contents

==================================

The `ls' program lists information about files (of any type, including

directories). Options and file arguments can be intermixed arbitrarily, as

usual.

For non-option command-line arguments that are directories, by default `ls'

lists the contents of directories, not recursively, and omitting files with

names begi

lists just the filename. If no non-option argument is specified, `ls' operates

on the current directory, acting as if it had been invoked with a single

argument of `.'.

By default, the output is sorted alphabetically, according to the

--zz-Info: (coreutils.info.gz)ls invocation, 63 lines --Top----------5

Программа info читает info-файлы, организованные в древовидную структуру, каждый из которых содержит отдельную тему. Info-файлы включают гиперссылки, с помощью которых можно перемещаться от узла к узлу. Гиперссылку можно узнать по начальному символу звездочки. Гиперссылки активируются при установке текстового курсора на них и осуществляют переход при нажатии клавиши ENTER.

Чтобы вывести info-страницу, введите команду info и добавьте после нее необязательное имя интересующей программы. В табл. 5.2 перечислены команды, которые можно использовать для управления программой во время чтения info-страницы.

Таблица 5.2. Команды программы info

Команда

Действие

?

Вывести справку

Page Up или Backspace

Вывести предыдущую страницу

Page Down или ПРОБЕЛ

Вывести следующую страницу

n

Вперед (next) — вывести следующий узел

p

Назад (previous) — вывести предыдущий узел

u

Вверх (up) — вывести узел, родительский по отношению к текущему, обычно меню

ENTER

Перейти по гиперссылке, находящейся на позиции курсора

q

Завершить (quit)

Большинство программ из числа обсуждавшихся до сих пор, является частью пакета coreutils проекта GNU, поэтому о них можно получить дополнительную информацию командой

[[email protected]/* */ ~]$ info coreutils

Она выведет страницу с меню, состоящим из гиперссылок на документацию для каждой программы, входящей в состав пакета coreutils.

README и другие файлы с описанием программ

Многие программные пакеты, установленные в вашей системе, включают файлы с документацией, размещаемые в каталоге /usr/share/doc. Большинство из них имеют простой текстовый формат и могут просматриваться с помощью less. Некоторые файлы имеют формат HTML и могут просматриваться с помощью веб-браузера. Можно также встретить файлы с расширением .gz. Это сжатые файлы, обработанные программой-архиватором gzip. Пакет gzip включает специальную версию less с именем zless, которая выводит содержимое текстовых файлов, сжатых архиватором gzip.

Создание собственных команд с помощью alias

А теперь проведем первый опыт по программированию! У нас есть возможность создавать собственные команды с помощью команды alias. Но прежде чем начать, познакомимся с одной маленькой хитростью командной строки. Она позволяет уместить в одной строке несколько команд, для чего нужно просто отделить их друг от друга точкой с запятой:

команда1; команда2; команда3...



Следующий пример демонстрирует этот прием:

[[email protected]/* */ ~]$ cd /usr; ls; cd -

bin  games    kerberos  lib64    local  share  tmp

etc  include  lib       libexec  sbin   src

/home/me

[[email protected]/* */ ~]$

Как видите, мы поместили три команды в одну строку. Первая выполняет переход в каталог /usr, вторая выводит его содержимое, и третья осуществляет возврат в предыдущий каталог (команда cd -), поэтому по завершении мы оказываемся там же, где и были. Давайте теперь с помощью alias превратим эту последовательность в новую команду. Первое, что мы должны сделать, — придумать имя для новой команды. Пусть это будет test. Но прежде чем продолжить, хорошо бы проверить, не занято ли уже имя test. Для этого воспользуемся командой type:

[[email protected]/* */ ~]$ type test

test встроена в оболочку

Ой! Имя test уже занято. Попробуем foo:

[[email protected]/* */ ~]$ type foo

bash: type: foo: не найден

Отлично! Имя foo свободно. Теперь создадим наш псевдоним:

[[email protected]/* */ ~]$ alias foo='cd /usr; ls; cd -'

Обратите внимание на структуру этой команды:

alias имя='строка'

За командой alias следует имя, сразу за которым (то есть без пробелов) следует знак «равно» и строка в кавычках, описывающая действие, присваиваемое имени. После определения псевдонима его можно подставлять везде вместо команды.

Давайте попробуем:

[[email protected]/* */ ~]$ foo

bin  games    kerberos  lib64    local  share  tmp

etc  include  lib       libexec  sbin   src

/home/me

[[email protected]/* */ ~]$

Тип псевдонима определяется с помощью команды type:

[[email protected]/* */ ~]$ type foo

foo является алиасом для `cd /usr; ls; cd -'

А удаляется псевдоним с помощью команды unalias:

[[email protected]/* */ ~]$ unalias foo

[[email protected]/* */ ~]$ type foo

bash: type: foo: не найден

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

[[email protected]/* */ ~]$ type ls

ls является алиасом для `ls --color=tty'

Если вызвать команду alias без аргументов, она выведет список всех псевдонимов в окружении. Ниже приводятся несколько псевдонимов, объявляемых в дистрибутиве Fedora по умолчанию. Попробуйте понять, что они делают:

[[email protected]/* */ ~]$ alias

alias l.='ls -d .* --color=tty'

alias ll='ls -l --color=tty'

alias ls='ls --color=tty'

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

Навестите старых друзей

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

2 Некоторые разделы справки Linux переведены на русский язык, а некоторые — нет. Для переведенных разделов мы будем приводить русский текст, выводимый системой на консоль, для непереведенных — указывать перевод в сносках. — Примеч. ред.

3 Перевод:

Делает указанный каталог DIR текущим. Если каталог DIR не указан, по умолчанию используется значение переменной $HOME. Переменная CDPATH определяет пути поиска каталога, содержащего DIR. Альтернативные имена каталогов в CDPATH отделяются друг от друга двоеточием (:). Пустое имя каталога соответствует текущему каталогу, то есть `.'. Если DIR начинается с символа «слеш» (/), переменная CDPATH не используется. Если каталог не найден и установлен параметр `cdable_vars' командной оболочки, выполняется попытка интерпретировать слово как имя переменной. Если эта переменная имеет значение, тогда команда cd использует значение этой переменной. Параметр –P требует использовать физическую структуру каталогов вместо следования по символическим ссылкам; параметр -L требует следовать по символическим ссылкам.