Как было показано в предыдущей лекции (1), основное средство общения с Linux - системная клавиатура и экран монитора, работающий в
[methody@localhost methody]$ data -bash: data: command not found [methody@localhost methody]$ date Вск Сен 12 13:59:36 MSD 2004
Вначале Мефодий ошибся, и вместо команды date написал data. В ответ он получил сообщение об ошибке, поскольку такой команды система не понимает. Затем (этого не видно в примере, но случилось именно так!) он снова набрал data, но вовремя одумался и, нажав клавишу Backspace, удалил последнее "a", вместо которого ввел "e", превратив data в date. Такая команда в системе есть, и на экране возникла текущая дата.
Диалог машины и пользователя неспроста выглядит как обмен текстами. Именно письменную речь используют люди для постановки и описания решения задач в заранее определенном, формализованном виде. Поэтому и задача управления системой может целиком быть представлена и решена в виде формализованного текста - программы. При этом машине отводится роль аккуратного исполнителя программы, а человеку - роль автора. Кроме того, человек анализирует текст, получаемый от системы: запрошенную им информацию и текст сообщения - текст, описывающий состояние системы в процессе решения задачи (например, сообщение об ошибке "command not found").
xterm
или ssh ). Наконец,
Для приема и передачи текста
Команды, подаваемые с клавиатуры с помощью Ctrl, как и символы, передаваемые при этом системе, принято обозначать знаком " ^ ", после которого следует имя клавиши, нажимаемой вместе с Ctrl: например, одновременное нажатие Ctrl и " А " обозначается " ^A ".
Так, для завершения работы программы cat, которая построчно считывает данные с клавиатуры и выводит их на ^C " или " ^D ":
[methody@localhost methody]$ cat Any Text Any Text ^C [methody@localhost methody]$ cat Any Text agaim^[[Dn Any Text again ^D [methody@localhost methody]$
Одну строчку вида "Any Tex..." Мефодий вводит с клавиатуры (что отображается на экране), и после того, как Мефодий нажмет Enter, она немедленно выводится программой cat (что тоже отображается на экране). С каждой последующей строкой программа cat поступила бы аналогично, но в примере Мефодий оба раза завершил работу программы, в первом случае нажав ", ^C ", а во втором - " ^D ". Команды оказали одинаковый эффект, но работают они по-разному: " ^C " посылает программе, которая считывает с клавиатуры ^D " сообщает ей, что ввод данных с клавиатуры закончен и можно продолжать работу (поскольку программа cat больше ничего не делает, она завершается самостоятельно, естественным путем). Можно считать, что " ^C " - это сокращение от "Cancel", а " ^D " - от "Done".
В примере не показано, как, набирая первый cat, Мефодий вновь ошибся и написал ccat вместо cat. Чтобы исправить положение, он воспользовался клавишами со стрелочками: с помощью клавиши " Стрелка влево " подвел курсор к одному из " c " и нажал Backspace, а затем Enter. В режиме ввода команды это ему удалось, а при передаче данных программе cat клавиша " Стрелка влево " не сдвинула курсор, а передала целую последовательность символов: " ^[ ", " [ " и " D ". Дело в том, что на клавиатуре может быть так много разных нетекстовых клавиш, что на них не хватает ограниченного количества разных Escape, т. е. " ^[ "), за которым следует строго определенное число обычных символов (для клавиши Стрелка влево - " [ " и " D ").
То же самое можно сказать и о выводе Any Text agaim^[[Dn " в выдаче cat: " ^[[D " при выводе на
(рис 2.1) Интерфейс командной строки. Взаимодействие пользователя с компьютером посредством терминала.Требования к
Ограничения на интерфейс напрямую не сказываются на эффективности работы пользователя в системе. Однако чем меньше требований к интерфейсу, тем важнее разумно его организовать. Любое взаимодействие может быть описано с трех точек зрения: во-первых, какую задачу решает пользователь ( что он хочет от системы); во-вторых, как он формулирует задачу в доступном пониманию системы виде; в-третьих, какими средствами он пользуется при взаимодействии с системой. В частности, текстовый интерфейс удобно рассматривать с точки зрения предоставляемого им языка общения с машиной: во-первых, описанием этого языка задается диапазон решаемых с его помощью задач, а во-вторых, слова этого компьютерного языка (называемые в программировании операторами ) предоставляют способ решения пользовательских задач (в виде небольших программ-сценариев). Команды, помогающие пользователю быстро и эффективно обмениваться с машиной предложениями на этом языке, и будут третьей составляющей интерфейса
Основная среда взаимодействия с Linux -
[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!
Команда 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
В большинстве случаев при разборе
Пока же Мефодий решил, что узнал о man и info.
Работать с Linux, не заглядывая в документацию, практически невозможно. На это способны только седые аксакалы, у которых все нужные знания не то что в голове - в кончиках пальцев, и новички. Всем прочим настоятельно рекомендуем, приступая к работе, а тем более - к изучению Linux, пользоваться всеми доступными
Все
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:
. . .
Страница man запускает программу постраничного просмотра текстов - less. Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать " q " (Quit). Перелистывать страницы можно и клавишами Page Up/Page Down, для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад - стрелку вверх. Переход на начало и конец текста выполняется по командам " g " и " G " соответственно (Go). Полный список того, что можно делать с текстом в less, выводится по команде " H " (Help).
Страница cal. В поле NAME содержится краткое описание объекта (такое, чтобы его назначение было понятно с первого взгляда). В поле дается формализованное описание способов использования объекта (в данном случае - того, как и с какими параметрами запускать команду 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). . . .
До этого поля Мефодий добрался с помощью уже известной команды " G ". Не то чтобы ему неинтересно было читать man, скорее наоборот: им двигала любознательность. В поле SEE ALSO обнаружились ссылки на less, groff (программе форматирования страницы man, а также по двум сопутствующим командам с такими говорящими названиями
[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
. . .
На этот раз Мефодию повезло: команда не делает ничего разрушительного. Как и команда ищет подстроку в некоторой базе данных, состоящей из полей NAME всех страниц помощи в системе. Различие между ними в том, что - только среди имен объектов (в левых частях полей NAME ), а - по всей базе. В результате у получается список кратких описаний объектов с именами, включающими искомое слово, а у - список, в котором это слово упоминается. Для того, чтобы это узнать, все равно пришлось один раз прочесть документацию.
В системе может встретиться несколько объектов разного типа, но с одинаковым названием. Часто совпадают, например, имена
[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
Описания объектов, выводимые , отличаются числом в скобках - номером раздела. В системе
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
Вот названия разделов в переводе на русский:
В частности, пример с 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) . . .
Если в качестве первого параметра man использовать " -a ", будут последовательно выданы все less(1), passwd(5) и т. д.
Другой источник информации о Linux и составляющих ее программах - справочная подсистема info. Страница
[methody@localhost methody]$ info info File: info.info, Node: Top, Next: Getting Started, Up: (dir) Info: An Introduction . . . * Menu: * Getting Started:: Getting started using an Info reader. * Expert Info:: Info commands for experts. * Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. . . . --zz-Info: (info.info.bz2)Top, строк: 24 --All------------ Welcome to Info version 4.6. Type ? for help, m for menu item.
Программа info использует весь экран: на большей его части она показывает текст документа, а первая и две последних строки служат для ориентации в его структуре.
Одна или несколько страниц, которые можно перелистывать клавишей Пробел или Page Up/Page Down - это
info, можно просматривать и подряд, один за другим (с помощью команд " n ", Next, и " p ", Previous), однако это используется нечасто. В верхней строке экрана info показывает имя текущего Top и имя верхнего dir ) означают, что просматривается корневой / ").
Команде info можно указывать в параметрах всю цепочку
[methody@localhost methody]$ info info "Getting Started" Help-Q File: info.info, Node: Help-Q, Prev: Help-Int, Up: Getting Started Quitting Info . . .
Сам ли Мефодий это придумал, или подсказал кто, но совершенно правильно было заключить в кавычки имя info искала info -> Getting Started -> Help-Q ". Если бы команда имела вид info info Getting Started Help-Q, то "адрес" получился бы неправильный: " info -> Getting -> Started -> Help-Q ". Ничего таинственного в этом нет, и уже к концу лекции станет понятно, в чем здесь дело (см. раздел "Слова и
Оказывается, использование кавычек Мефодий придумал не сам: спросил у товарища, опытного пользователя Linux по фамилии Гуревич. Гуревич охотно показал, где ставить кавычки, а вот объяснять, что они делают, отказался: "Там отличное
Слова Гуревича - практически дословный перевод этой фразы, так что ее смысл и происхождение очевидны. Linux рассчитан в основном на тех, кто хочет знать, как им пользоваться.
Это не значит, что из EXAMPLES, которое как раз и содержит примеры использования команды в разных условиях. Однако все это призвано не научить, а раскрыть смысл, пояснить сказанное в других полях. Мефодий нашел описание работы двойных кавычек в sh, однако понял из него далеко не все - главным образом, потому, что встретил слишком много незнакомых терминов.
Система info может содержать больше, чем man, поэтому в нее часто включают и учебники (принято называть учебник термином "tutorial"), и "howto" (примеры постановки и решения типовых задач), и даже статьи по теме. Таким образом, info-документ может стать, в отличие от страницы info.
Если некоторый объект системы не имеет документации ни в формате man, ни в формате info, это нехорошо. В этом случае можно надеяться, что при нем есть сопроводительная документация, не имеющая, увы, ни стандартного формата, ни тем более ссылок на
Документация в подавляющем большинстве случаев пишется на простом английском языке. Если английский - не родной язык для автора документации, она будет только проще. Традиция писать по-английски идет от немалого вклада США в развитие компьютерной науки вообще и Linux в частности. Кроме того, английский становится языком международного общения во всех областях, не только в компьютерной. Необходимость писать на языке, который будет более или менее понятен большинству пользователей, объясняется постоянным развитием Linux. Дело не в том, что страницу
Работая в системе и изучая man и info, числа и т. п. Другие параметры собственного смысла не имеют, их значение можно истолковать, лишь зная, к какой команде они относятся. Например, параметр " -a " можно передать не только команде man, но и команде who, и команде last, при этом значить для них он будет разное. Такого рода параметры называются модификаторами выполнения или
[methody@localhost methody]$ date Вск Сен 19 23:01:17 MSD 2004 [methody@localhost methody]$ date -u Вск Сен 19 19:01:19 UTC 2004
Для решения разных задач одни и те же действия необходимо выполнять слегка по-разному. Например, для синхронизации работ в разных точках земного шара лучше использовать единое для всех время (по Гринвичу), а для организации собственного рабочего дня - местное время (с учетом сдвига по часовому поясу и разницы зимнего и летнего времени). И то, и другое время показывает команда date, только для работы по Гринвичу ей нужен дополнительный параметр- -u " (он же " --universal ").
Для формата - ", это - - ", как правило, следует один символ, чаще всего - буква, обозначающая действие или свойство, которое этот
[methody@localhost methody]$ who -m
methody tty1 Sep 20 13:56 (localhost)
[methody@localhost methody]$ cal -m
Сентября 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
Во-вторых, для who поддерживает один нестандартный набор параметров: who am i делает то же, что и who -m.cal -m " - это команда выдать календарь, считая первым днем понедельник ("Monday"), как это принято в России.
В-третьих,
[methody@localhost methody]$ info info "Expert info" Cross-refs Help-Cross -o text
info: Запись ноды (info.info.bz2)Help-Cross...
info: Завершено.
[methody@localhost methody]$ cat text -n
1 File: info.info, Node: Help-Cross, Up: Cross-refs
2
3 The node reached by the cross reference in Info
4 ------------------------------------------------
. . .
Здесь info запустилась не в качестве интерактивной программы, а как обработчик info-документа. Результат работы - текст info .
text. А программа cat вывела содержимое этого файла на
Теперь стало более или менее понятно, что означают неудобочитаемые строки в поле -smjy13 ] из cal (5) говорит о том, что команду можно запускать с необязательными -s ", " -m ", " -j ", " -y ", " -1 " и " -3 ".
В-четвертых, есть некоторые менее жесткие, но популярные договоренности о значении -h " ("Help") обычно (но, увы, не всегда) заставляет команды выдать краткую справку (нечто похожее на , иногда с короткими пояснениями). Если указать " - " вместо имени выходного файла в соответствующем -o "),
вывод будет производиться на - ". Для этого нужно использовать -- ":
[methody@localhost methody]$ info -o -filename-with- info: Запись ноды (dir)Top... info: Завершено. [methody@localhost methody]$ head -1 -filename-with- head: invalid option -- f Попробуйте `head --help' для получения более подробного описания. [methody@localhost methody]$ head -1 -- -filename-with- File: dir Node: Top This is the top of the INFO tree
Здесь Мефодий сначала создал файл -filename-with-, а потом пытался посмотреть его первую строку (команда head -количество_строк имя_файла выводит первые количество_строк из указанного файла). -- " (первый " - " - признак - " или нет. Только после " -- " head согласилась с тем, что -filename-with- - это имя файла.
s " или " o ") используются очень часто, и могли бы служить сокращением сразу нескольких команд, а некоторые (например, " z ") - редко, под них и название-то осмысленное трудно придумать. На такой случай существует другой, полнословный формат: - ", за которыми следует полное имя обозначаемой им сущности. Таков, например, --help " (аналог " -h "):
[methody@localhost methody]$ head --help
Использование: head [КЛЮЧ]... [ФАЙЛ]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header
giving the file name.
With no FILE, or when FILE is -, read standard input.
Аргументы, обязательные для длинных ключей, обязательны
и для коротких.
-c, --bytes=[-]N print the first N bytes of each file;
with the leading '-', print all but
the last N bytes of each file
-n, --lines=[-]N print the first N lines instead of
the first 10;
the leading '-', print all but
the last N lines of each file
-q, --quiet, --silent не печатать заголовки с
именами файлов
-v, --verbose всегда печатать заголовки с
именами файлов
--help показать эту справку и выйти
--version показать информацию о версии и выйти
N may have a multiplier suffix: b 512, k 1024, m 1024*1024.
Об ошибках сообщайте по адресу.
Мефодий сделал то, о чем просила его head. Обращает на себя внимание то, что некоторые head имеют и
В Linux нет отдельного объекта под именем "система". Система - она на то и система, чтобы состоять из многочисленных компонентов, взаимодействующих друг с другом. Главный из системных компонентов - пользователь. Это он командует машиной, а та его команды выполняет. В
Из этого несложно заключить, что обрабатывать эти команды, превращать их в последовательность
Таким образом, упомянутые выше правила разбора logout или ^D ", который для shell значит то же, что и для других программ: больше с
Конечно, bash превосходит sh во всем, особенно в возможностях редактирования sh и bash в системе может быть установлен "The Z Shell", zsh, самый мощный на сегодня tcsh, обновленная и тоже очень мощная версия старой оболочки "C Shell", синтаксис команд которой похож на язык программирования Си.
Когда Гуревич добавлял учетную запись Мефодия в систему, он не стал спрашивать, какой login shell ), - это часть пользовательской учетной записи, которую пользователь может изменить командой chsh (change shell).
Какая бы задача, связанная с управлением системой, ни стояла перед пользователем Linux, она должна иметь решение в терминах
(рис 2.2) Интерфейс командной строки. Издание второе, переработанное и дополненное. Взаимодействие пользователя с компьютером посредством терминала и оболочки.[methody@localhost methody]$ apropos s . . . (четыре с половиной тысячи строк!)
Одного неудачного запуска Мефодию было достаточно для того, чтобы понять: команд в Linux очень много. Ему пришло в голову, что никакая программа - пусть даже и оболочка - не может самостоятельно разбираться во всех задокументированных командах. Кроме того, Гуревич называл большинство команд
В действительности собственных команд в echo, существуют в Linux в виде отдельных
[methody@localhost methody]$ type info
info is /usr/bin/info
[methody@localhost methody]$ type echo
echo is a shell builtin
[methody@localhost methody]$ type -a echo
echo is a shell builtin
echo is /bin/echo
[methody@localhost methody]$ type -a -t echo
builtin
file
[methody@localhost methody]$ type -a -t date
file
[methody@localhost methody]$ type -at cat
file
В bash тип команды можно определить с помощью команды type. bash называются bash, даже несмотря на то, что они имеются в виде echo ). Работает -a " ("all", конечно), заставляет type вывести все возможные варианты интерпретации команды, а -t " - вывести тип команды вместо
По совету Гуревича Мефодий сгруппировал -at " вместо " -a -t ". Многие
При разборе
Первое слово в тройке передается команде как первый параметр, второе - как второй и т. д. Для того чтобы
[methody@localhost methody]$ echo One Two Three
One Two Three
[methody@localhost methody]$ echo One "Two Three"
One Two Three
[methody@localhost methody]$ echo 'One
>
> Ой. И что дальше?
> А, кавычки забыл!'
One
Ой. И что дальше?
А, кавычки забыл!
[methody@localhost methody]$
В первом случае команде echo было передано три параметра - " One ", " Two " и " Three ". Она их и вывела, разделяя пробелом. Во втором случае параметров было два: " One " и " Two Three ". В результате эти два параметра были также выведены через пробел. В третьем случае параметр был всего один - от открывающего апострофа " 'One '" до закрывающего ...забыл!' ". Все время ввода bash услужливо выдавал Мефодию подсказку " > " - в знак того, что набор
Как было показано в предыдущей лекции (1), основное средство общения с Linux - системная клавиатура и экран монитора, работающий в
[methody@localhost methody]$ data -bash: data: command not found [methody@localhost methody]$ date Вск Сен 12 13:59:36 MSD 2004
Вначале Мефодий ошибся, и вместо команды date написал data. В ответ он получил сообщение об ошибке, поскольку такой команды система не понимает. Затем (этого не видно в примере, но случилось именно так!) он снова набрал data, но вовремя одумался и, нажав клавишу Backspace, удалил последнее "a", вместо которого ввел "e", превратив data в date. Такая команда в системе есть, и на экране возникла текущая дата.
Диалог машины и пользователя неспроста выглядит как обмен текстами. Именно письменную речь используют люди для постановки и описания решения задач в заранее определенном, формализованном виде. Поэтому и задача управления системой может целиком быть представлена и решена в виде формализованного текста - программы. При этом машине отводится роль аккуратного исполнителя программы, а человеку - роль автора. Кроме того, человек анализирует текст, получаемый от системы: запрошенную им информацию и текст сообщения - текст, описывающий состояние системы в процессе решения задачи (например, сообщение об ошибке "command not found").
xterm
или ssh ). Наконец,
Для приема и передачи текста
Команды, подаваемые с клавиатуры с помощью Ctrl, как и символы, передаваемые при этом системе, принято обозначать знаком " ^ ", после которого следует имя клавиши, нажимаемой вместе с Ctrl: например, одновременное нажатие Ctrl и " А " обозначается " ^A ".
Так, для завершения работы программы cat, которая построчно считывает данные с клавиатуры и выводит их на ^C " или " ^D ":
[methody@localhost methody]$ cat Any Text Any Text ^C [methody@localhost methody]$ cat Any Text agaim^[[Dn Any Text again ^D [methody@localhost methody]$
Одну строчку вида "Any Tex..." Мефодий вводит с клавиатуры (что отображается на экране), и после того, как Мефодий нажмет Enter, она немедленно выводится программой cat (что тоже отображается на экране). С каждой последующей строкой программа cat поступила бы аналогично, но в примере Мефодий оба раза завершил работу программы, в первом случае нажав ", ^C ", а во втором - " ^D ". Команды оказали одинаковый эффект, но работают они по-разному: " ^C " посылает программе, которая считывает с клавиатуры ^D " сообщает ей, что ввод данных с клавиатуры закончен и можно продолжать работу (поскольку программа cat больше ничего не делает, она завершается самостоятельно, естественным путем). Можно считать, что " ^C " - это сокращение от "Cancel", а " ^D " - от "Done".
В примере не показано, как, набирая первый cat, Мефодий вновь ошибся и написал ccat вместо cat. Чтобы исправить положение, он воспользовался клавишами со стрелочками: с помощью клавиши " Стрелка влево " подвел курсор к одному из " c " и нажал Backspace, а затем Enter. В режиме ввода команды это ему удалось, а при передаче данных программе cat клавиша " Стрелка влево " не сдвинула курсор, а передала целую последовательность символов: " ^[ ", " [ " и " D ". Дело в том, что на клавиатуре может быть так много разных нетекстовых клавиш, что на них не хватает ограниченного количества разных Escape, т. е. " ^[ "), за которым следует строго определенное число обычных символов (для клавиши Стрелка влево - " [ " и " D ").
То же самое можно сказать и о выводе Any Text agaim^[[Dn " в выдаче cat: " ^[[D " при выводе на
(рис 2.1) Интерфейс командной строки. Взаимодействие пользователя с компьютером посредством терминала.Требования к
Ограничения на интерфейс напрямую не сказываются на эффективности работы пользователя в системе. Однако чем меньше требований к интерфейсу, тем важнее разумно его организовать. Любое взаимодействие может быть описано с трех точек зрения: во-первых, какую задачу решает пользователь ( что он хочет от системы); во-вторых, как он формулирует задачу в доступном пониманию системы виде; в-третьих, какими средствами он пользуется при взаимодействии с системой. В частности, текстовый интерфейс удобно рассматривать с точки зрения предоставляемого им языка общения с машиной: во-первых, описанием этого языка задается диапазон решаемых с его помощью задач, а во-вторых, слова этого компьютерного языка (называемые в программировании операторами ) предоставляют способ решения пользовательских задач (в виде небольших программ-сценариев). Команды, помогающие пользователю быстро и эффективно обмениваться с машиной предложениями на этом языке, и будут третьей составляющей интерфейса
Основная среда взаимодействия с Linux -
[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!
Команда 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
В большинстве случаев при разборе
Пока же Мефодий решил, что узнал о man и info.
Работать с Linux, не заглядывая в документацию, практически невозможно. На это способны только седые аксакалы, у которых все нужные знания не то что в голове - в кончиках пальцев, и новички. Всем прочим настоятельно рекомендуем, приступая к работе, а тем более - к изучению Linux, пользоваться всеми доступными
Все
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:
. . .
Страница man запускает программу постраничного просмотра текстов - less. Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать " q " (Quit). Перелистывать страницы можно и клавишами Page Up/Page Down, для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад - стрелку вверх. Переход на начало и конец текста выполняется по командам " g " и " G " соответственно (Go). Полный список того, что можно делать с текстом в less, выводится по команде " H " (Help).
Страница cal. В поле NAME содержится краткое описание объекта (такое, чтобы его назначение было понятно с первого взгляда). В поле дается формализованное описание способов использования объекта (в данном случае - того, как и с какими параметрами запускать команду 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). . . .
До этого поля Мефодий добрался с помощью уже известной команды " G ". Не то чтобы ему неинтересно было читать man, скорее наоборот: им двигала любознательность. В поле SEE ALSO обнаружились ссылки на less, groff (программе форматирования страницы man, а также по двум сопутствующим командам с такими говорящими названиями
[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
. . .
На этот раз Мефодию повезло: команда не делает ничего разрушительного. Как и команда ищет подстроку в некоторой базе данных, состоящей из полей NAME всех страниц помощи в системе. Различие между ними в том, что - только среди имен объектов (в левых частях полей NAME ), а - по всей базе. В результате у получается список кратких описаний объектов с именами, включающими искомое слово, а у - список, в котором это слово упоминается. Для того, чтобы это узнать, все равно пришлось один раз прочесть документацию.
В системе может встретиться несколько объектов разного типа, но с одинаковым названием. Часто совпадают, например, имена
[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
Описания объектов, выводимые , отличаются числом в скобках - номером раздела. В системе
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
Вот названия разделов в переводе на русский:
В частности, пример с 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) . . .
Если в качестве первого параметра man использовать " -a ", будут последовательно выданы все less(1), passwd(5) и т. д.
Другой источник информации о Linux и составляющих ее программах - справочная подсистема info. Страница
[methody@localhost methody]$ info info File: info.info, Node: Top, Next: Getting Started, Up: (dir) Info: An Introduction . . . * Menu: * Getting Started:: Getting started using an Info reader. * Expert Info:: Info commands for experts. * Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. . . . --zz-Info: (info.info.bz2)Top, строк: 24 --All------------ Welcome to Info version 4.6. Type ? for help, m for menu item.
Программа info использует весь экран: на большей его части она показывает текст документа, а первая и две последних строки служат для ориентации в его структуре.
Одна или несколько страниц, которые можно перелистывать клавишей Пробел или Page Up/Page Down - это
info, можно просматривать и подряд, один за другим (с помощью команд " n ", Next, и " p ", Previous), однако это используется нечасто. В верхней строке экрана info показывает имя текущего Top и имя верхнего dir ) означают, что просматривается корневой / ").
Команде info можно указывать в параметрах всю цепочку
[methody@localhost methody]$ info info "Getting Started" Help-Q File: info.info, Node: Help-Q, Prev: Help-Int, Up: Getting Started Quitting Info . . .
Сам ли Мефодий это придумал, или подсказал кто, но совершенно правильно было заключить в кавычки имя info искала info -> Getting Started -> Help-Q ". Если бы команда имела вид info info Getting Started Help-Q, то "адрес" получился бы неправильный: " info -> Getting -> Started -> Help-Q ". Ничего таинственного в этом нет, и уже к концу лекции станет понятно, в чем здесь дело (см. раздел "Слова и
Оказывается, использование кавычек Мефодий придумал не сам: спросил у товарища, опытного пользователя Linux по фамилии Гуревич. Гуревич охотно показал, где ставить кавычки, а вот объяснять, что они делают, отказался: "Там отличное
Слова Гуревича - практически дословный перевод этой фразы, так что ее смысл и происхождение очевидны. Linux рассчитан в основном на тех, кто хочет знать, как им пользоваться.
Это не значит, что из EXAMPLES, которое как раз и содержит примеры использования команды в разных условиях. Однако все это призвано не научить, а раскрыть смысл, пояснить сказанное в других полях. Мефодий нашел описание работы двойных кавычек в sh, однако понял из него далеко не все - главным образом, потому, что встретил слишком много незнакомых терминов.
Система info может содержать больше, чем man, поэтому в нее часто включают и учебники (принято называть учебник термином "tutorial"), и "howto" (примеры постановки и решения типовых задач), и даже статьи по теме. Таким образом, info-документ может стать, в отличие от страницы info.
Если некоторый объект системы не имеет документации ни в формате man, ни в формате info, это нехорошо. В этом случае можно надеяться, что при нем есть сопроводительная документация, не имеющая, увы, ни стандартного формата, ни тем более ссылок на
Документация в подавляющем большинстве случаев пишется на простом английском языке. Если английский - не родной язык для автора документации, она будет только проще. Традиция писать по-английски идет от немалого вклада США в развитие компьютерной науки вообще и Linux в частности. Кроме того, английский становится языком международного общения во всех областях, не только в компьютерной. Необходимость писать на языке, который будет более или менее понятен большинству пользователей, объясняется постоянным развитием Linux. Дело не в том, что страницу
Работая в системе и изучая man и info, числа и т. п. Другие параметры собственного смысла не имеют, их значение можно истолковать, лишь зная, к какой команде они относятся. Например, параметр " -a " можно передать не только команде man, но и команде who, и команде last, при этом значить для них он будет разное. Такого рода параметры называются модификаторами выполнения или
[methody@localhost methody]$ date Вск Сен 19 23:01:17 MSD 2004 [methody@localhost methody]$ date -u Вск Сен 19 19:01:19 UTC 2004
Для решения разных задач одни и те же действия необходимо выполнять слегка по-разному. Например, для синхронизации работ в разных точках земного шара лучше использовать единое для всех время (по Гринвичу), а для организации собственного рабочего дня - местное время (с учетом сдвига по часовому поясу и разницы зимнего и летнего времени). И то, и другое время показывает команда date, только для работы по Гринвичу ей нужен дополнительный параметр- -u " (он же " --universal ").
Для формата - ", это - - ", как правило, следует один символ, чаще всего - буква, обозначающая действие или свойство, которое этот
[methody@localhost methody]$ who -m
methody tty1 Sep 20 13:56 (localhost)
[methody@localhost methody]$ cal -m
Сентября 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
Во-вторых, для who поддерживает один нестандартный набор параметров: who am i делает то же, что и who -m.cal -m " - это команда выдать календарь, считая первым днем понедельник ("Monday"), как это принято в России.
В-третьих,
[methody@localhost methody]$ info info "Expert info" Cross-refs Help-Cross -o text
info: Запись ноды (info.info.bz2)Help-Cross...
info: Завершено.
[methody@localhost methody]$ cat text -n
1 File: info.info, Node: Help-Cross, Up: Cross-refs
2
3 The node reached by the cross reference in Info
4 ------------------------------------------------
. . .
Здесь info запустилась не в качестве интерактивной программы, а как обработчик info-документа. Результат работы - текст info .
text. А программа cat вывела содержимое этого файла на
Теперь стало более или менее понятно, что означают неудобочитаемые строки в поле -smjy13 ] из cal (5) говорит о том, что команду можно запускать с необязательными -s ", " -m ", " -j ", " -y ", " -1 " и " -3 ".
В-четвертых, есть некоторые менее жесткие, но популярные договоренности о значении -h " ("Help") обычно (но, увы, не всегда) заставляет команды выдать краткую справку (нечто похожее на , иногда с короткими пояснениями). Если указать " - " вместо имени выходного файла в соответствующем -o "),
вывод будет производиться на - ". Для этого нужно использовать -- ":
[methody@localhost methody]$ info -o -filename-with- info: Запись ноды (dir)Top... info: Завершено. [methody@localhost methody]$ head -1 -filename-with- head: invalid option -- f Попробуйте `head --help' для получения более подробного описания. [methody@localhost methody]$ head -1 -- -filename-with- File: dir Node: Top This is the top of the INFO tree
Здесь Мефодий сначала создал файл -filename-with-, а потом пытался посмотреть его первую строку (команда head -количество_строк имя_файла выводит первые количество_строк из указанного файла). -- " (первый " - " - признак - " или нет. Только после " -- " head согласилась с тем, что -filename-with- - это имя файла.
s " или " o ") используются очень часто, и могли бы служить сокращением сразу нескольких команд, а некоторые (например, " z ") - редко, под них и название-то осмысленное трудно придумать. На такой случай существует другой, полнословный формат: - ", за которыми следует полное имя обозначаемой им сущности. Таков, например, --help " (аналог " -h "):
[methody@localhost methody]$ head --help
Использование: head [КЛЮЧ]... [ФАЙЛ]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header
giving the file name.
With no FILE, or when FILE is -, read standard input.
Аргументы, обязательные для длинных ключей, обязательны
и для коротких.
-c, --bytes=[-]N print the first N bytes of each file;
with the leading '-', print all but
the last N bytes of each file
-n, --lines=[-]N print the first N lines instead of
the first 10;
the leading '-', print all but
the last N lines of each file
-q, --quiet, --silent не печатать заголовки с
именами файлов
-v, --verbose всегда печатать заголовки с
именами файлов
--help показать эту справку и выйти
--version показать информацию о версии и выйти
N may have a multiplier suffix: b 512, k 1024, m 1024*1024.
Об ошибках сообщайте по адресу.
Мефодий сделал то, о чем просила его head. Обращает на себя внимание то, что некоторые head имеют и
В Linux нет отдельного объекта под именем "система". Система - она на то и система, чтобы состоять из многочисленных компонентов, взаимодействующих друг с другом. Главный из системных компонентов - пользователь. Это он командует машиной, а та его команды выполняет. В
Из этого несложно заключить, что обрабатывать эти команды, превращать их в последовательность
Таким образом, упомянутые выше правила разбора logout или ^D ", который для shell значит то же, что и для других программ: больше с
Конечно, bash превосходит sh во всем, особенно в возможностях редактирования sh и bash в системе может быть установлен "The Z Shell", zsh, самый мощный на сегодня tcsh, обновленная и тоже очень мощная версия старой оболочки "C Shell", синтаксис команд которой похож на язык программирования Си.
Когда Гуревич добавлял учетную запись Мефодия в систему, он не стал спрашивать, какой login shell ), - это часть пользовательской учетной записи, которую пользователь может изменить командой chsh (change shell).
Какая бы задача, связанная с управлением системой, ни стояла перед пользователем Linux, она должна иметь решение в терминах
(рис 2.2) Интерфейс командной строки. Издание второе, переработанное и дополненное. Взаимодействие пользователя с компьютером посредством терминала и оболочки.[methody@localhost methody]$ apropos s . . . (четыре с половиной тысячи строк!)
Одного неудачного запуска Мефодию было достаточно для того, чтобы понять: команд в Linux очень много. Ему пришло в голову, что никакая программа - пусть даже и оболочка - не может самостоятельно разбираться во всех задокументированных командах. Кроме того, Гуревич называл большинство команд
В действительности собственных команд в echo, существуют в Linux в виде отдельных
[methody@localhost methody]$ type info
info is /usr/bin/info
[methody@localhost methody]$ type echo
echo is a shell builtin
[methody@localhost methody]$ type -a echo
echo is a shell builtin
echo is /bin/echo
[methody@localhost methody]$ type -a -t echo
builtin
file
[methody@localhost methody]$ type -a -t date
file
[methody@localhost methody]$ type -at cat
file
В bash тип команды можно определить с помощью команды type. bash называются bash, даже несмотря на то, что они имеются в виде echo ). Работает -a " ("all", конечно), заставляет type вывести все возможные варианты интерпретации команды, а -t " - вывести тип команды вместо
По совету Гуревича Мефодий сгруппировал -at " вместо " -a -t ". Многие
При разборе
Первое слово в тройке передается команде как первый параметр, второе - как второй и т. д. Для того чтобы
[methody@localhost methody]$ echo One Two Three
One Two Three
[methody@localhost methody]$ echo One "Two Three"
One Two Three
[methody@localhost methody]$ echo 'One
>
> Ой. И что дальше?
> А, кавычки забыл!'
One
Ой. И что дальше?
А, кавычки забыл!
[methody@localhost methody]$
В первом случае команде echo было передано три параметра - " One ", " Two " и " Three ". Она их и вывела, разделяя пробелом. Во втором случае параметров было два: " One " и " Two Three ". В результате эти два параметра были также выведены через пробел. В третьем случае параметр был всего один - от открывающего апострофа " 'One '" до закрывающего ...забыл!' ". Все время ввода bash услужливо выдавал Мефодию подсказку " > " - в знак того, что набор
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.