Компания IBM
Опубликован: 22.06.2005 | Доступ: свободный | Студентов: 30364 / 6719 | Оценка: 4.27 / 3.93 | Длительность: 26:36:00
ISBN: 978-5-9556-0029-1
Лекция 2:

Терминал и командная строка

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

Командная строка

Основная среда взаимодействия с Linux - командная строка. Суть ее в том, что каждая строка, передаваемая пользователем системе, - это команда, которую та должна выполнить. Пока не нажата кнопка Enter, строку можно редактировать, затем она отсылается системе:

[methody@localhost methody]$ cal
        Сентября 2004
Вс     Пн     Вт     Ср     Чт     Пт     Сб 
                      1      2      3      4
 5      6      7      8      9     10     11
12     13     14     15     16     17     18
19     20     21     22     23     24     25
26     27     28     29     30
[methody@localhost methody]$ echo Hello, world!
Hello, world!
2.3. Команды echo и cal

Команда cal выводит календарь на текущий месяц, а команда echo просто выводит на терминал все, что следовало в командной строке после нее. Получается, что одну и ту же команду можно использовать с разными параметрами (или аргументами ), причем параметры эти изменяют поведение команды. Здесь Мефодий захотел посмотреть календарь за март 2005 года, для чего и передал команде cal два параметра - 3 и 2005:

[methody@localhost methody]$ cal 3 2005
        Марта 2005
Вс     Пн     Вт     Ср     Чт     Пт     Сб 
               1      2      3      4      5
 6      7      8      9     10     11     12
13     14     15     16     17     18     19
20     21     22     23     24     25     26
27     28     29     30     31
2.4. Команда cal с параметрами

В большинстве случаев при разборе командной строки первое слово считается именем команды, а остальные - ее параметрами. Более подробно о разборе командной строки и работе с ней рассказано в разделе " Интерпретатор командной строки (shell)" и в лекции 7.

Подсистема помощи

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

Работать с Linux, не заглядывая в документацию, практически невозможно. На это способны только седые аксакалы, у которых все нужные знания не то что в голове - в кончиках пальцев, и новички. Всем прочим настоятельно рекомендуем, приступая к работе, а тем более - к изучению Linux, пользоваться всеми доступными руководствами.

Все утилиты, все демоны Linux, все функции ядра и библиотек, структура большинства конфигурационных файлов, наконец, многие умозрительные, но важные понятия системы описаны либо в руководствах, либо в info-страницах, либо, на худой конец, в несистематизированной сопроводительной документации. Поэтому от пользователя системы не требуется заучивать все возможные варианты взаимодействия с ней. Достаточно понимать основные принципы ее устройства и уметь находить справочную информацию. Эйнштейн говорил так: "Зачем запоминать то, что всегда можно посмотреть в справочнике?"

Страницы руководства (man)

Больше всего полезной информации содержится в страницах руководства (manpages), для краткости мы будем называть их просто " руководство ". Каждая страница посвящена какому-нибудь одному объекту системы. Для того чтобы посмотреть страницу руководства, нужно дать команду системе man объект:

[methody@localhost methody]$ man cal
CAL(1)       BSD General Commands Manual   CAL(1)
    NAME
        cal - displays a calendar
    SYNOPSIS
        cal [-smjy13] [[month] year]
    DESCRIPTION
        Cal displays a simple calendar. If arguments
        are not specified, the current month is 
        displayed. 
        The options are as follows:
. . .
2.5. Просмотр страницы руководства

Страница руководства занимает, как правило, больше одной страницы экрана. Для того чтобы читать было удобнее, man запускает программу постраничного просмотра текстов - less. Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать " q " (Quit). Перелистывать страницы можно и клавишами Page Up/Page Down, для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад - стрелку вверх. Переход на начало и конец текста выполняется по командам " g " и " G " соответственно (Go). Полный список того, что можно делать с текстом в less, выводится по команде " H " (Help).

Страница руководства состоит из полей - стандартных разделов, с разных сторон описывающих заинтересовавший Мефодия объект - команду cal. В поле NAME содержится краткое описание объекта (такое, чтобы его назначение было понятно с первого взгляда). В поле SYNOPSIS дается формализованное описание способов использования объекта (в данном случае - того, как и с какими параметрами запускать команду cal ). Как правило, в квадратные скобки в этом поле заключены необязательные параметры команды, которые можно ей передать, а можно и опустить. Например, строка " [[month] year] " означает, что в этом месте командной строки параметров у команды может не быть вообще, может быть указан год или пара - месяц и год. Наконец, текст в поле DESCRIPTION - это развернутое описание объекта, достаточное для того, чтобы им воспользоваться.

Одно из самых важных полей руководства находится в конце текста. Если в процессе чтения NAME или DESCRIPTION пользователь понимает, что не нашел в руководстве того, что искал, он может захотеть посмотреть, а есть ли другие руководства или иные источники информации по той же теме. Список таких источников содержится в поле SEE ALSO:

[methody@localhost methody]$ man man
. . .
SEE ALSO
  apropos(1), whatis(1), less(1), groff(1), man.conf(5).
. . .
2.6. Поле SEE ALSO руководства

До этого поля Мефодий добрался с помощью уже известной команды " G ". Не то чтобы ему неинтересно было читать руководство по man, скорее наоборот: им двигала любознательность. В поле SEE ALSO обнаружились ссылки на руководства по less, groff (программе форматирования страницы руководства ), структуре конфигурационного файла для man, а также по двум сопутствующим командам с такими говорящими названиями "Apropos" и "whatis"2По-французки "apropos" означает "кстати", а "what is" - по-английски "что такое". , что Мефодий немедленно применяет одну команду к имени другой, даже не заглядывая в документацию. Так ни в коем случае не следует делать! А что если запущенная программа начнет с того, что сотрет все файлы в Вашем каталоге?

[methody@localhost methody]$ whatis apropos
 apropos (1) - search the whatis database for strings
[methody@localhost methody]$ man apropos
 apropos(1)                             apropos(1)
 NAME
    apropos - search the whatis database for strings
    . . .
2.7. Вызов whatis

На этот раз Мефодию повезло: команда whatis не делает ничего разрушительного. Как и команда apropos, whatis ищет подстроку в некоторой базе данных, состоящей из полей NAME всех страниц помощи в системе. Различие между ними в том, что whatis - только среди имен объектов (в левых частях полей NAME ), а apropos - по всей базе. В результате у whatis получается список кратких описаний объектов с именами, включающими искомое слово, а у apropos - список, в котором это слово упоминается. Для того, чтобы это узнать, все равно пришлось один раз прочесть документацию.

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

[methody@localhost methody]$ whatis passwd
 passwd (1) - update a user's authentication tokens(s)
 passwd (5) - password file
 passwd (8) - manual page for passwd wrapper version 1.0.5
2.8. Руководства с одинаковыми именами

Описания объектов, выводимые whatis, отличаются числом в скобках - номером раздела. В системе руководств Linux - девять разделов, каждый из которых содержит страницы руководства к объектам определенного типа. Все разделы содержат по одному руководству с именем "intro", в котором в общем виде и на примерах рассказано, какие объекты имеют отношение к данному разделу:

george@localhost:~> whatis intro
intro     (1) - Introduction to user commands
intro     (2) - Introduction to system calls
intro     (3) - Introduction to library functions
intro     (4) - Introduction to special files
intro     (5) - Introduction to file formats
intro     (6) - Introduction to games
intro     (7) - Introduction to conventions and 
                miscellany section
intro     (8) - Introduction to administration and 
                privileged commands
intro     (9) - Introduction to kernel interface
2.9. Руководства intro

Вот названия разделов в переводе на русский:

  1. Команды пользователя.
  2. Системные вызовы (пользовательские функции ядра Linux; руководства рассчитаны на программиста, знающего язык Си).
  3. Библиотечные функции (функции, принадлежащие всевозможным библиотекам подпрограмм; руководства рассчитаны на программиста, знающего язык Си).
  4. Внешние устройства и работа с ними (в Linux они называются специальными файлами, см. лекцию 10).
  5. Форматы различных стандартных файлов системы (например, конфигурационных ).
  6. Игры, безделушки и прочие вещи, не имеющие системной ценности.
  7. Теоретические положения, договоренности и все, что не может быть классифицировано.
  8. Инструменты администратора (часто недоступные обычному пользователю).
  9. Интерфейс ядра ( внутренние функции и структуры данных ядра Linux, необходимые только системному программисту, исправляющему или дополняющему ядро ).

В частности, пример с passwd показывает, что в системе " Some Linux ", которую использует Мефодий, есть программа passwd (именно с ее помощью Мефодий поменял себе пароль в предыдущей лекции), файл passwd, содержащий информацию о пользователях, и администраторская программа passwd, обладающая более широкими возможностями. По умолчанию man просматривает все разделы и показывает первое найденное руководство с заданным именем. Чтобы посмотреть руководство по объекту из определенного раздела, необходимо в качестве первого параметра команды man указать номер раздела:

[methody@localhost methody]$ man 8 passwd
 PASSWD(8)     System Administration Utilities  PASSWD(8)
 . . .
[methody@localhost methody]$ man -a passwd
 PASSWD(1)     Some Linux                       PASSWD(1) . . .
 PASSWD(8)     System Administration Utilities  PASSWD(8) . . .
 PASSWD(5)     Linux Programmer's Manual        PASSWD(5) . . .
2.10. Выбор среди страниц руководства с одинаковым именем

Если в качестве первого параметра man использовать " -a ", будут последовательно выданы все руководства с заданным именем. Внутри страниц руководства принято непосредственно после имени объекта ставить в круглых скобках номер раздела, в котором содержится руководство по этому объекту: man (1), less(1), passwd(5) и т. д.

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Тимур Булатов
Тимур Булатов

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

дмитрий шремзер
дмитрий шремзер

В поле PPID (" p arent p rocess id entificator") указан идентификатор родительского процесса, т. е. процессапородившего данный. Для ps это – bash, а для bash, очевидно, login

А что тогда находится в поле CMD?