Раздел 1
ВВЕДЕНИЕ
Обзор
Первый раздел курса знакомит вас с операционной системой UNIX и Справочником пользователя UNIX System V (UNIX System V User Reference Manual). Он начинается с назначения и функциональных возможностей Операционной Системы UNIX (ОС UNIX), далее идет справочная информация, а в конце раздела - основные команды ОС UNIX.
К концу этого раздела вы уже станете пользователем системы UNIX!
ЦЕЛИ
ЦЕЛИ
Операционная система UNIX
Операционная система - это набор программ, которые управляют ресурсами компьютера и координируют его операции.
Операционная Система (ОС) UNIX - это многопользовательская диалоговая операционная система общего назначения, совместимая с рядом компьютерных систем. Диапазон этих компьютерных систем простирается от микрокомпьютеров до больших ЭВМ и суперкомпьютеров. ОС UNIX System V Release 4.0 сейчас совместима с ОС Sun, Berkely Software Distribution (BSD) и XENIX. Она также удовлетворяет международным стандартам POSIX.
Достоинства ОС UNIX:
Интерактивность (Interactive) - Когда вы просите ОС UNIX сделать что-либо (выполнить команду), система отвечает, давая знать, что команда выполнена.
Многопользовательность (Multiuser) - Вы можете войти в ОС UNIX одновременно с другими пользователями, и в то же время вам будет казаться, что вы единственный пользователь системы. Это становится возможным, потому что ЦП "разделен во времени" между пользователями. ОС UNIX обеспечивает вам безопасность и защиту от действий других пользователей, но легко позволяет вам общаться и обмениваться информацией, software и hardware ресурсами.
Многозадачность (Multitasking) - Многозадачность означает, что ОС UNIX может выполнять более одной задачи, именуемой процессом, одновременно. Один из способов выполнения нескольких процессов одновременно - перевести некоторые из них в фоновой режим. Например, ОС UNIX может вести поиск в большой базе данных в фоновом режиме в то время, как вы создаете документ. Выполнение процессов в фоновом режиме сильно экономит время, поскольку вы можете решать несколько задач одновременно.
Переносимость (Portable) - Одна из причин популярности ОС UNIX - возможность ее использования на компьютерах разного типа. ОС UNIX устанавливается на многие компьютеры с минимальными модификациями. Это означает, что вы можете расширить свои технические средства без необходимости изучения новой операционной системы или приобретения заново всего программного обеспечения. ОС UNIX переносима, потому что большая ее часть написана на языке высокого уровня Си.
Гибкость (Flexible) - Вы легко можете создать нужные вам прикладные программы с помощью подхода "строительных блоков", который соединяет утилиты в конвейер. Перенаправление ввода/вывода записывает выходную информацию из команд в файлы и/или использует сохраненную информацию как входные данные. В этом курсе обсуждается и конвейеры, и перенаправление ввода/вывода.
ОПЕРАЦИОННАЯ СИСТЕМА UNIX
Компоненты ОС UNIX
ОС UNIX состоит из трех основных частей: kernel (ядро), shell (оболочка), утилиты и прикладные программы.
Программа kernel - сердце ОС UNIX. Kernel управляет системой, планирует задания и управляет хранением и доступом к информации. Так как kernel выполняется непрерывно, она всегда находится в оперативной памяти.
Вы общаетесь с ОС UNIX посредством shell. Shell - это специальная сервисная программа, которая интерпретирует ваши команды. По мере того, как shell перерабатывает ваши команды, она передает их kernel. Kernel затем передает команды компьютеру, и они выполняются. Каждый пользователь получает для работы свою собственную shell. Помимо того, что shell есть интерфейс и интерпретатор команд, она также является языком программирования.
Некоторые shell являются стандартными для ОС UNIX System V Release 4, такие как Bourne shell (sh), shell с ограниченным доступом (rsh ), Korn shell (ksh), и интерфейс shell, который делает возможным управление заданиями - Job Control (jsh).
Многие утилиты и прикладные программы применимы для использования в ОС UNIX . Утилиты включают многие команды, доступные в ОС UNIX . Прикладные программы включают пакеты пользователей для вычислений, редактирования, управления базами данных.
КОМПОНЕНТЫ СИСТЕМЫ UNIX
Справочные материалы по ОС UNIX
Информация об ОС UNIX может быть получена из нескольких источников, таких как:
Документация по ОС UNIX
Другие публикации
Совещания
Включенная (on line) поддержка
Поддержка на местах
СПРАВОЧНЫЕ МАТЕРИАЛЫ ПО ОС UNIX
ДОКУМЕНТАЦИЯ ОС UNIX
Справочник пользователя ОС UNIX System V
Справочник пользователя (UNIX System V User's Reference Manual) - очень ценное руководство. Помните, что его можно использовать как указатель по информации о командах.
Этот справочник не был написан как учебник для новичка. Хотя он окажет вам помощь, когда вы будете делать свои первые шаги в ОС UNIX, вы оцените его тем больше, чем больше у вас появится опыта работы с UNIX.
Несколько последующих страниц объясняют организацию справочника пользователя UNIX System V и его использование.
УСТРОЙСТВО
Справочник пользователя имеет несколько секций. Первая, озаглавленная ВВЕДЕНИЕ, вкратце объясняет устройство справочника, и как начать пользоваться ОС UNIX.
Вторая секция - содержание в алфавитном порядке с описанием в одну строчку всех команд, упоминаемых в справочнике.
Третья секция - перестановочный индекс, о котором рассказывается на следующих страницах.
ЗАМЕЧАНИЕ: В этом курсе делаются ссылки на 3В2 User's reference Manual for UNIX System V, Release 4. Если вы пользуетесь более ранним изданием, то содержание справочника может слегка отличаться. Например, 3В2 User's reference Manual for UNIX System V, Release 2 содержит секцию "Игры"(6). В 3В2 User's reference Manual такой секции нет.
Перестановочный индекс (Permuted Index)
В содержании упоминаются лишь имена команд. Если вы знаете, что вы хотите сделать, но не можете вспомнить имя команды (или же вы не знаете есть ли такая команда), вам поможет перестановочный индекс. Третья секция содержит упорядоченный индекс, называемый перестановочным. Этот индекс поможет вам просмотреть информацию, имеющую отношение к ключевому слову.
Чтобы воспользоваться перестановочным индексом, подберите ключевое слово, которое описывает то, что вы хотите сделать.
ПЕРЕСТАНОВОЧНЫЙ ИНДЕКС
ПЕРЕСТАНОВОЧНЫЙ ИНДЕКС - ИНДЕКС, ОСНОВАННЫЙ НА КЛЮЧЕВОМ СЛОВЕ
КЛЮЧЕВОЕ СЛОВО- СЛОВО, ОПИСЫВАЮЩЕЕ, ЧТО ВЫ ХОТИТЕ СДЕЛАТЬ
ПРИМЕРЫ КЛЮЧЕВЫХ СЛОВ
Нахождение команды при помощи ключевого слова
Выбрав ключевое слово, откройте ваш "Справочник пользователя" на секции "Перестановочный индекс", каждая страница которой разделена на три столбца. Ключевым является первое слово второго столбца. Перестановочный индекс построен в алфавитном порядке относительно ключевых слов. Соседняя страница показывает часть перестановочного индекса с ключевым словом copy.
Первый и второй столбцы содержат описание. Оно точно такое же, как и в секции "Содержание". Ключевое слово входит в содержание.
Если вы хотите узнать больше об описываемом предмете, загляните в третий столбец. Он подскажет вам, где искать дальнейшую информацию.
В третьем столбце находится название справочной страницы руководства и номер секции. Например, если вы хотите скопировать файл, перестановочный индекс предложит вам посмотреть справочную страницу ср в первой секции.
НАХОЖДЕНИЕ КОМАНДЫ ПРИ ПОМОЩИ КЛЮЧЕВОГО СЛОВА
dd convert and copy a file ............................. dd(1M)
cpio copy file archives in and out .. cpio(1)
cp copy files ............................... cp(1)
rcp remote file copy ..................................... rcp(1)
uulog,uuname UNIX-to-UNIX system file copy uucp .............................. uucp(1C)
public UNIX-to-UNIX system file copy uuto,uupick ................... uuto(1C)
Справочная страница
В первой секции Справочника пользователя находится справочная страница для команд, упоминаемых в этом курсе и других. Если вы хотите получить новую информацию о какой-либо команде или же хотите освежить что-то в памяти, воспользуйтесь справочной страницей к этой команде.
Наверху каждой справочной страницы находится заголовок с именем страницы и номер секции (в круглых скобках). Имя справочной страницы - это имя команды. Номер указывает секцию в которой вы можете найти эту команду. В каждой секции справочные страницы расположены в алфавитном порядке. На следующей странице приводится справочная страница для команды banner .
Справочная страница состоит из следующих частей:
ИМЯ Первая часть каждой справочной страницы - ИМЯ. В ней находятся имя команды и описание ее в одну строчку, такое же, как и в содержании и в справочном индексе.
СИНТАКСИС Вторая часть справочной страницы - СИНТАКСИС. В ней содержится краткое изложение формата командной строки. Обратите внимание, что набирать команду нужно в точности как это указано.
ОПИСАНИЕ Третья часть справочной страницы - ОПИСАНИЕ. Она дает детальную информацию о формате командной строки и объясняет, что эта команда делает.
ИМЯ, СИНТАКСИС и ОПИСАНИЕ есть на каждой справочной странице. В зависимости от команды могут появляться следующие части:
ПРИМЕР - приводится пример использования команды
ФАЙЛЫ - список имен файлов, используемых командой
СМОТРИ ТАКЖЕ - указывается, где можно найти информацию по смежным вопросам
ДИАГНОСТИКА - возможные сообщения об ошибках
ПРЕДУПРЕЖДЕНИЯ - к чему нужно быть особенно внимательным
ОШИБКИ - список известных ошибок, недостатков и ловушек, связанных с командой
СПРАВОЧНАЯ СТРАНИЦА
BANNER(1) BANNER(1)
ИМЯ
banner - изготовление плакатов
СИНТАКСИС
banner строки
ОПИСАНИЕ
команда banner печатает свои аргументы (каждый до 10 символов длиной) большими буквами на стандартном выходе
СМОТРИ ТАКЖЕ
echo(1).
Синтаксис
СИНТАКСИС определяет формат командной строки и включает в себя опции, применимые в команде. Он может состоять из трех частей: команда, опции и аргументы.
При использовании СИНТАКСИСА нужно знать соответствующие соглашения.
Команда
Если в СИНТАКСИСЕ какие-то слова напечатаны ярким шрифтом (bold), то они должны быть набраны в точности такими же. Все команды напечатаны шрифтом bold, как слово banner в примере.
ОПЦИИ
Опции, применимые в данной команде, указываются в СИНТАКСИСЕ. Например, команда
spell имеет 4 опции (-v -b -x -l),
перед каждой из них ставится символ '-'. Опция, заключенная в квадратные скобки [ ], необязательна.
Можно использовать одну или несколько опций в командной строке (при условии, что они не противоречат друг другу).
Порядок опций не существенен. При использовании более одной опции вы ВСЕГДА можете разделить их,
как показано здесь:
$ command -a -b
Проверьте
формат опций в СИНТАКСИСЕ, чтобы убедиться, можно ли их группировать для данной команды. В СИНТАКСИСЕ
команды spell каждая опция указана в отдельных квадратных
скобках. Это означает, что при их использовании перед каждой нужно ставить символ '-'.
$ spell -v -b
В СИНТАКСИСЕ команды ls
все опции указаны в одних квадратных скобках. Это означает, что их можно сгруппировать все вместе после одного '-' (или '+', если так указано в СИНТАКСИСЕ). Например:
$ ls -ld
Заметим, что СИНТАКСИС команды ps содержит слово options в [ ]. Это означает, что когда используется несколько опций, вы можете группировать их после одного знака '-'.
АРГУМЕНТЫ
Часть командной строки, не напечатанная шрифтом bold и без знака '-' -- это аргументы команды.
Аргументы требуются не для всех команд. Аргументы, заключенные в квадратные скобки, необязательны.
Так в СИНТАКСИСЕ командыcal слова month и
year -- необязательные аргументы. Вы можете набрать:
$ cal<RET>
$ cal 1956<RET>
$ cal 10 1956<RET>
Если вы указываете опцию во
внутренних скобках, т.е. месяц, то вы должны указать и опцию во внешних -- год.
СИНТАКСИС
banner
строкиspell
[ -v] [ -b] [ -x] [ qq -l] [ +внутренний_файл] [файлы]ls
[ -RadLCxmlnogrtucpFbqisf1] [имена]ps
[опции]cal
[ [month] year]Если вы указываете опцию во внутренних скобках, т.е. month, то вы должны указать и опцию во внешних скобках, т.е. year.
Описание
ОПИСАНИЕ дает дополнительную информацию о том, что делают опции команды, и какими должны быть аргументы.
Следующая страница представляет пример справочной страницы для команды news. ОПИСАНИЕ дает подробное пояснение о каждой опции, указанной в СИНТАКСИСЕ.
ОПИСАНИЕ
NEWS(1) NEWS(1)
ИМЯ
news распечатка новостей
СИНТАКСИС
news [ -a][ -n][ -s][темы]
ОПИСАНИЕ
Команда news используется для осведомления пользователя о текущих событиях. По соглашению, эти события описываются в файлах директории /var/news.
Если команда запускается без указания аргументов, news распечатывает содержание всех текущих файлов директории /var/news, первым самый свежий файл, предваряя каждый файл соответствующим заголовком. Аргумент new записывает указываемое время как время модификации файла с именем .news_time во входной директории пользователя (идентичность этой директории определяется переменной $HOME); только файлы со временем, превышающим указанное, считаются "текущими".
-
а опция, которая распечатывает все файлы, вне зависимости от их даты. В этом случае записанное время не изменяется.-
n опция, которая распечатывает имена текущих файлов, а не их содержание. Записанное время не изменяется.-
s опция, которая выдает сообщение о том, сколько существует текущих файлов, не распечатывая их имена и содержание, и не изменяя записанное время.Начало сеанса в системе UNIX
Итак, вы уже узнали, что делает ОС UNIX, и как получить информацию о ее командах. Теперь вы готовы войти в систему UNIX.
Если после включения терминала в сеть появляется надпись login:, то ваш терминал правильно подключен к компьютеру.
Если же появляются другие слова, такие как DESTINATION или ACCESS INFORMATION, значит ваш компьютер соединен в рабочую сеть, и вы должны ввести соответствующую информацию доступа перед получением приглашения login:.
Если вы не видите никаких слов на терминале, то возможно ваш терминал соединен с компьютером посредством модема. В этом случае обращайтесь к системному администратору.
Если же у вас появилось приглашение login:, введите свое входное имя и нажмите <RET>. Затем вы увидите надпись Password:. Наберите ваш пароль и нажмите <RET>. Во время набора пароля вы не увидите его на экране. Это мера безопасности, которая не дает возможности другим пользователям узнать ваш пароль и войти с его помощью в систему.
Если вы сделаете какие-нибудь опечатки во время набора входного имени и пароля, то нажмите клавишу BACKSPACE и наберите снова или же нажмите <RET> и дождитесь нового приглашения login:.
Если вам не удастся войти в течение пяти попыток, ваша строка может быть прервана и тогда все ваши попытки перенаправляются в файл системного администратора под именем loginlog.
После того, как вы успешно войдете в систему, на терминале появятся несколько сообщений. На соседней странице приведены примеры возможных сообщений.
Вначале должно появится сообщение - приветствие. Оно называется сообщение дня. Поскольку сообщение определяет ваш системный администратор, оно может отличаться от приведенного в примере. Сообщение дня - один из методов системного администратора информировать всех пользователей о специальных событиях, таких как использование компьютера в соответствие с расписанием. Это сообщение возникает в начале каждого сеанса в системе.
Если вас ждут новости или почта, то появятся соответствующие сообщения. В этом курсе вы узнаете, как с ними ознакомиться.
После всех сообщений появится символ $. Shell выводит его на экран терминала всегда, когда он ждет вашу команду.
НАЧАЛО СЕАНСА В СИСТЕМЕ UNIX
login:slf<RET>
Welcome to UNIX System V.
<< сообщение дняHave a great day!
Last login: Thu Jul 12 13:36:38 on term/32
you have mail
<< сообщение о почтеnews: passwords downtime
<< сообщение о новостях$
Пароль
Когда вы впервые входили в систему, вам, наверное, пришлось ввести пароль, после того как вы вели свое входное имя. Однако системный администратор может и не установить пароль для вас, в этом случае приглашение password: не появится на экране.
Ваш пароль - средство безопасности; он защищает ваши файлы от доступа других пользователей. Если ваш системный администратор не установил пароль для вас, вы должны сделать это сами. Хорошо менять свой пароль примерно раз в месяц, даже если ваша система и не требует этого от вас.
Ниже приведен список правил, которым вы должны следовать, выбирая пароль. Пароль должен:
-
иметь по меньшей мере шесть символов, но значение имеют только первые восемь.-
содержать по меньшей мере две буквы-
содержать по меньшей мере одну цифру или специальный знак (не используйте символы @ и #; они относятся к уничтожающим символам).-
отличаться от входных имен пользователей, отличаться от сдвинутых входных имен и не быть входным именем набранным в обратном порядке.-
новый пароль должен отличаться от старого по меньшей мере тремя символами.Помните, что каждый может знать ваше входное имя, но только вы должны знать свой пароль. Не выбирайте пароль, о котором можно легко догадаться. Следует избегать использования в качестве пароля имен ваших супругов и детей. Также лучше иметь цифру где-нибудь в середине пароля, а не с краю.
Введите команду passwd для того чтобы изменить свой пароль или набрать новый.
$passwd<RET>
Changing password for slf
Old password:xxxxxxx<RET>
New password:yyyyyyy<RET>
Re-enter new password:yyyyyyy<RET>
$
ПАРОЛЬ
ПРАВИЛЬНЫЕ ПАРОЛИ
si3ster
*pow***
rams89?
НЕПРАВИЛЬНЫЕ ПАРОЛИ: ПОЧЕМУ?
Brian
J-1234
what?
Конец сеанса
Чтобы закончить сеанс, вы должны выйти из системы. Выйти можно двумя способами. Первый способ: нажать одновременно клавишу Control и букву d. Это называется control d и обозначается в справочнике ^d или <CTRL/d>. После нажатия ^d на терминале снова появится приглашение login:.
Альтернативный метод завершения сеанса - набрать слово exit и нажать <RET> после интерактивного символа $.
Если ваш терминал соединен посредством модема, вам может понадобится отключить телефон. Замечание: простое выключение терминала не заканчивает ваш сеанс в системе!
КОНЕЦ СЕАНСА
login:slf<RET>
Password:<RET>
Welcome to UNIX System V.
Have a great day!
you have mail
news: passwords downtime
$ <CTRL/d>
login:slf<RET>
Password:<RET>
Welcome to UNIX System V.
Have a great day!
you have mail
news: passwords downtime
$ exit<RET>
login:
Выводы урока
Этот урок описывает:
Назначение ОС UNIX:
Составляющие части ОС UNIX:
Справочные материалы по ОС UNIX:
Организация Справочника пользователя UNIX System V:
Как начать сеанс в ОС UNIX:
Сообщения, появляющиеся при входе в систему:
Как закончить сеанс в ОС UNIX:
Упражнение 1.1.А
ЦЕЛИ
Что нового в новостях?
Ваш системный администратор использует новости, чтобы держать вас и других пользователей в курсе всех важных событий или изменений в системе. Если появились новости, то при входе в систему вы получаете сообщение, подобное приведенному в примере 1.
Для прочтения новостей наберите:
$
news<RET>... и вы увидите все текущие новости.
Вы не будете получать сообщений о новостях, которые вы уже прочли. Если у системного администратора есть и другие новости для вас, то вы получите сообщение об этом в начале своего следующего сеанса в системе.
Если вы не хотите знакомиться со всеми новостями сразу или же вы хотите просмотреть еще раз какой-нибудь раздел новостей, вам лишь нужно указать имя этого раздела после слова news. Например:
$
news mona5<RET>... и на экране появляются только новости из раздела mona5.
Чтобы перечитать все новости (и новые, и старые), наберите:
$ news -a<RET>
ЧТО НОВОГО В НОВОСТЯХ?
ПРИМЕР 1:
login:sl<RET>
Password:<RET>
Welcome to UNIX System V
news: mona5
$
ПРИМЕР 2:
$news<RET>
mona5 (root) Fri Aug 19 10:19:20 1989
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для "mona5" должны отправляться "jo5".
$
ПРИМЕР 3:
$news mona5<RET>
mona5 (root) Fri Aug 19 10:19:20 1989
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для "mona5" должны отправляться "jo5".
$
ПРИМЕР 4:
$news -a<RET>
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для "mona5" должны отправляться "jo5".
printer1 (root) Thu Aug 18 09:46:48 1989
The printer1 is now available and working on mona5.
$
Команда cal.
Команда cal выводит на экран календарь нужного вам года. Синтаксис команды cal в "Справочнике пользователя" выглядит так:
СИНТАКСИС
cal
[[month]year]Аргументы команды cal необязательны. Аргумент месяц (month) - это число от 1 (янв.) до 12 (дек.). Аргумент год (year) - это число от 1 до 9999. На экран выводятся:
Текущий месяц текущего года, если аргумент не указывается.
12 месяцев указанного года, если указывается год.
Нужный месяц нужного года, если указывается и месяц, и год.
$cal<RET>
$cal 6 1989<RET>
May 1989 June 1989 |
$
$В сентябре 1752 года 11 дней были пропущены в связи с переходом на високосный календарь. Поэтому выполнение команды cal будет таким:
$
cal 9 1752<RET>
September 1752 S M Tu W Th F S |
$
КОМАНДА CAL
$cal 1988<RET>
1988
Jan Feb Mar |
Jul Aug Sep |
Oct Nov Dec
S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S
1 1 2 3 4 5 1 2 3
2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
30 31
$
Отправка почты другим пользователям системы UNIX
Пользователи ОС UNIX могут обмениваться через компьютер сообщениями друг с другом. Такой способ обмена информацией называется электронной почтой (email) или mail.
Команда mailx позволяет вам посылать и принимать почту от других пользователей ОС UNIX. (Команда mailx, введенная в версии UNIX System V Release 2, имеет больше возможностей, чем старая команда mail.)
Для отправки почты наберите команду mailx и несколько входных имен. Например:
$
mailx student1 student2 student3<RET>После чего система запрашивает Subject:. Вы НЕ ДОЛЖНЫ начинать набор своего сообщения в этом месте. Subject запрашивает тему вашего сообщения. Например:
$
mailx student1 student2 student3<RET>Subject: Обед<RET>
После того, как вы набрали тему, нажмите <RET>. Теперь вы находитесь в режиме ввода команды mailx.
ЗАМЕЧАНИЕ: В этом месте вы не получите приглашения. Например:
$
mailx student1 student2 student3<RET>Subject: Обед<RET>
Одноклассники,<RET>
Как насчет обеда сегодня? Я знаю <RET>
одно отличное новое место!<RET>
<CTRL/d>
$
В режиме ввода вы можете набирать свое сообщение или выполнять команды, предусмотренные mailx. Некоторые из них рассматриваются на последующих страницах. Для ознакомления с полным списком команд загляните на страницу mailx Справочника пользователя.
Для отправки сообщения нажмите <CTRL/d>. Вышеприведенный пример показывает, как отправить почту обладателям входных имен student1, student2 и student3.
Если вы нажмете клавишу <DEL> во время ввода сообщения, то команда mailx прервется. При этом сообщение сохраняется в файле dead.letter. Вы можете редактировать файл dead.letter и перепосылать его. Каждый раз, когда требуется файл dead.letter, он создается заново, а его предыдущее содержание стирается.
ОТПРАВКА ПОЧТЫ
$ mailx student1 student2 student3<RET>
Subject:
Обед<RET>Отправка почты с помощью команд mailx
~ escapes
Команда mailx способна выводить отправляемую почту на экран вашего терминала, выйти из системы, не отправляя сообщение, передать по почте файл и многое другое. Некоторые из этих возможностей описаны ниже. Обратите внимание, что описанные ниже команды должны быть набраны с новой строки; однако, они могут быть использованы где угодно вместе с вашим сообщением.
Распечатка сообщения:
Команда ~p выводит на экран вашего терминала (печатает) сообщение, перед тем как отправить его.
Выход:
Команда ~x осуществляет выход без отправления и сохранения сообщения. Она пригодится, когда вы начали набирать сообщение, а затем вдруг решили не посылать его вообще. Смотрите Пример 1.
Отправка копии:
Команда ~c names посылает копию сообщения новым адресатам. Система посылает сообщения обладателям входных имен, указанных командой mailx и командой ~c. В Примере 2 копия посылается обладателю входного имени mona. В итоге, сообщение получают steve, pete и mona.
Копирование файла:
Команда ~r file копирует содержимое файла в почтовое сообщение. Она помогает вам, если вы хотите послать какой-либо текст вместе с содержимым файла. После выполнения команды система отвечает выводом имени файла и количества строк и символов в файле. В Примере 3 система копирует в почтовое сообщение 60 строк, содержащих 853 символа.
Редактирование сообщения:
Команда ~v позволяет вам редактировать почтовое сообщение, переводя вас в редактор vi, используемый по умолчанию. Вы научитесь пользоваться этим редактором в Разделе 3 этого курса. После ввода команды ~v вы можете использовать только команды редактора vi, пока вы не выйдете из него. Выйдя из vi, вы снова попадете в mailx.
ОТПРАВКА ПОЧТЫ С ПОМОЩЬЮ КОМАНД mailx
ПРИМЕР 1: x
$
mailx steve pete<RET>Subject: отчет об обеде<RET>
Харчо
~x<RET>
$
ПРИМЕР 2: c
$
mailx steve pete<RET>Subject: отчет об обеде<RET>
Харчо был замечательным, вы должны его попробовать как-нибудь<RET>
~c mona <RET>
Если тебя интересует, что хорошего в меню, сообщи мне.<RET>
Jo<RET>
<CTRL/d>
$
ПРИМЕР 3: r
$
mailx jeff shari <RET>Это обещанное мной меню!<RET>
~r menu<RET>
"menu" 60/853
Jo<RET>
<CTRL/d>
$
Чтение почты с помощью команд mailx
Shell время от времени проверяет, поступила ли вам новая почта. В случае поступления почты на экран выводится сообщение следующего типа: you have mail in /var/mail/xxx, xxx - ваше входное имя. Для чтения почты пользуйтесь командой mailx. Система выводит на экран конспект сообщения, как это показано на следующей странице. Первая строка конспекта указывает версию команды mailx. Следующая строка содержит статус и количество сообщений в вашем "почтовом ящике" (в рассматриваемом примере - 3 новых сообщения). Далее следует конспект в одну строку для каждого сообщения. Рассмотрим одну такую строку:
>
N 1 mona Mon Aug 22 15:36 9/124 Встреча>
-N
1
mona
Mon Aug 22 15:36
-9/124
Встреча - тема сообщения.
После конспекта сообщения следует приглашение "?" - что делать дальше? Ниже приведены некоторые доступные опции:
n<RET> Чтобы прочитать любое из сообщений, введите его номер. В Примере 1, набрав 2<RET>, вы получите на своем терминале сообщение номер 2, посланное обладателем входного имени jo. После прочтения сообщения, оно становится текущим (обозначенным >).
d<RET>
Вы можете "выбросить" - уничтожить сообщение по его прочтении. Набирая d<RET> после приглашения "?", вы удаляете текущее сообщение из своего "почтового ящика".s<RET>
Для сохранения сообщения, наберите s<RET> после приглашения "?", и текущее сообщение будет добавлено в конец файла mbox вашей директории.Чтобы сохранить сообщение в другом файле, введите имя файла после s. Например, команда s appointment записывает сообщение в файл appointment. ОБЯЗАТЕЛЕН пробел между s и именем файла. Когда вы выходите из mailx, система автоматически удаляет записанные сообщения из вашего "почтового ящика"(/var/mail/login).-
Имейте в виду, что когда вы записываете сообщение в указываемый файл, то оно добавляется к предыдущему содержанию файла. Новый файл создается лишь в том случае, если указанный файл не существует.
ЧТЕНИЕ ПОЧТЫ С ПОМОЩЬЮ КОМАНД mailx
$
mailx<RET>mailx version 4.0 Type ? for help.
mail/slf": 3 messages 3 new
"/var>N 1 mona Mon Aug 22 15:36 9/124 Совещание<<
N 2 jo Mon Aug 22 15:13 9/135 Волейбол
N 3 jeff Mon Aug 22 15:13 9/235 Сообщение об обеде
? 2<RET>
Message 2:
From jo Mon Aug 22 15:13 EDT 1989
To: slf
Subject: Волейбол
Content-Type: text
Content-Length: 42
Status: RO
Наша волейбольная команда на первом месте!
? d<RET>
? 1<RET>
Message 1:
From mona Mon Aug 22 15:36 EDT 1989
To: slf
Subject:
СовещаниеContent-Type: text
Content-Length: 65
Status: RO
Сегодня совещание по программе UNIX курсов в комнате B1 в 10 час.
? s appointment<RET>
"appointment" [New file] 9/124
? 3<RET>
Message 3:
From jeff Mon Aug 22 15:13 EDT 1989
To: slf
Subject: Сообщение об обеде
Content-Type: text
Content-Length: 48
Status: RO
Напоминаю, что сегодня мы собирались за блинами!
? q<RET>
Saved 1 message in /home/slf/mbox
$
Чтение почты с помощью команд mailx (продолжение)
<RET>
При нажатии <RET> на экран выводится следующий файл из вашего "почтового ящика". Если сообщений больше нет, система информирует об этом At EOF (конец файла). Каждый файл, просмотренный вами с помощью клавиши <RET>, будет сохранен в файле mbox вашей директории при выходе из mailx.m
logins<RET> Такой ответ на приглашение "?" позволяет посылать сообщения всем другим пользователям.q<RET>
Если вы не хотите читать все свои сообщения, наберите q<RET>. Эта команда осуществляет выход обратно в shell При выходе из mailx все прочитанные, но незаписанные и нестертые файлы перемещаются в файл mbox. Непрочитанные файлы остаются в "почтовом ящике".ЧТЕНИЕ ПОЧТЫ С ПОМОЩЬЮ КОМАНД mailx (ПРОДОЛЖЕНИЕ)
$mailx<RET>
mailx version 4.0 Type ? for help.
"/var/mail/slf": 3 messages 3 new
>N 1 john Mon Aug 22 15:18 8/150 Обед
N 2 john Mon Aug 22 15:19 8/174 Обед завтра
N 3 john Mon Aug 22 15:19 8/150 ?????
?
<RET>Message 1:
From john Mon Aug 22 15:18 EDT 1989
To: slf
Subject: Обед
Content-Type: text
Content-Length: 61
Status: R
Как насчет того, чтобы сегодня за обедом поговорить?
?m john
<RET>Subject: Обед
<RET>Сегодня не получается, как насчет завтра?
<CTRL/d>
EOF
?q<RET>
Held 2 messages in /var/mail/slf
Чтение почты с помощью команд mailx (продолжение)
R<RET>
h<RET>
Эта команда выводит на экран конспект сообщений.x<RET>
Это выход в shell. При нажатии x<RET> аннулируются все изменения, сделанные в вашем "почтовом ящике". Например, остаются удаленные сообщения.ЧТЕНИЕ ПОЧТЫ С ПОМОЩЬЮ КОМАНД mailx (ПРОДОЛЖЕНИЕ)
$mailx<RET>
mailx version 4.0 Type ? for help.
"/var/mail/slf": 2 messages 2 unread
>U 1 slf Mon Aug 22 15:19 9/176
Обед завтраU 2 slf Mon Aug 22 15:19 9/160 ?????
?<RET>
Message 1:
From john Mon Aug 22 15:19 EDT 1989
o: slf
Subject:
Обед завтраContent-Type: text
Content-Length: 46
Status: RO
Завтра мне подходит. В какое время встретимся?
?R<RET>
To: john<RET>
Subject: Re:
Обед завтраЗавтра в полдень?
<CTRL/d>
EOT
?h
>U 1 slf Mon Aug 22 15:19 9/176 Обед завтра
U 2 slf Mon Aug 22 15:19 9/160 ?????
?x
$
Синтаксис командной строки
Все командные строки имеют особый формат или синтаксис. Последующее объяснение синтаксиса командной строки использует в качестве примера команду news. Понимание синтаксиса командной строки поможет вам запомнить последовательность информации, вводимой в командной строке.
Первый символ в командной строке - приглашение $, выводимое на экран ОС UNIX. Символ $ - это вопрос shell: что вы хотите делать? Shell ждет ввода команды.
После символа $ вы вводите командную строку. Простейшая командная строка - это одно слово, и <RET> после него. Когда вы нажимаете <RET>, ОС UNIX начинает выполнять команду. Команда news - хороший пример команды в одно слово.
$
news <RET>В этом примере $ - приглашение, news - команда, а <RET> - завершает команду.
Команда - это программа, представляющая специфическую задачу. Команда news приказывает ОС UNIX вывести на экран все текущие новости.
Команда может иметь аргументы и опции. Например, команда news использует в качестве аргумента имена сообщений. В нашем примере printer1 есть имя сообщения и, таким образом, имя аргумента. У команды может быть один или несколько аргументов. Между командой и аргументом должен быть хотя бы один пробел или табуляция. Например:
$
news printer1 copy_machine<RET>Здесь printer1 и copy_machine - аргументы.
Аргументы помогают уточнять, как именно должна выполняться команда. В случае команды news аргументы выделяют сообщения, которые нужно вывести на экран. Каждый аргумент - это отдельное слово, и вы должны разделять аргументы друг от друга пробелами или табуляциями.
Синтаксис командной строки (продолжение)
В командной строке могут быть также указаны одна или несколько опций. Опции модифицируют команду. Например, для команды news опция -а выводит на экран все новости - и текущие, и старые.
$
news -a<RET>Здесь -а - это опция all (все).
Перед каждой опцией ставится минус (-) или плюс (+) для отличия от аргументов. Минус ставится перед большинством опций. Справочник пользователя ОС UNIX указывает, какие опции должны предваряться плюсом.
В одной командной строке вы можете указывать как опции, так и аргументы. Помните, что команда, опции и аргументы должны разделяться пробелами или табуляциями.
СИНТАКСИС КОМАНДНОЙ СТРОКИ
$ news<RET>
Команда отдает приказ ОС UNIX.$ news printer1<RET>
Аргумент указывает команде, на чем ей сконцентрировать свое действие.$ news -a<RET>
Опция модифицирует команду.Формат командной строки:
$ command
╠options(s) argument(s) <RET>
Между приглашением системы, командой, опциями и аргументами пробел(ы) или табуляция.
>$ spell -v +my.words unit1.2<RET>
Команда date
Команда date выводит на экран дату и время. Например:
$
date<RET>Tue Aug 23 09:23:42 EST 1989 <- ответ системы
Сначала идет день недели, затем дата, время, часовой пояс (EST - Eastern Standard Time, стандартное восточное время) и год. Если вы набрали команду неверно, или shell не в состоянии найти команду, то система выводит на экран сообщение об ошибке или диагностическое сообщение:
$
datte<RET>datte: not found <- диагностическое сообщение
Смотрите пример 1 на следующей странице.
У команды date также могут быть аргументы, перед которыми должен стоять плюс (+). Этот знак сообщает системе, что пользователь хочет получить ответ отличный от используемого по умолчанию. В примере 2 на следующей странице аргумент %a означает вывод только сокращенного названия дня недели.
Аргументы команды date называются дескрипторами поля. (field descriptor) Дескриптор поля указывает, какого типа вы хотите получить ответ. Каждый дескриптор поля начинается со знака %. Этот знак означает, что дескриптор поля должен быть заменен в ответе на соответствующее значение.
Пример 3 на следующей странице демонстрирует, как дескриптор поля %B выводит на экран полное название месяца.
Ниже приведены еще несколько дескрипторов поля команды date:
КОМАНДА date
ПРИМЕР 1:
$
date<RET>Mon Jan 16 09:23:42 EST 1989
$
datte<RET>datte: not found
ПРИМЕР 2:
$
date +%a<RET>Mon
ПРИМЕР 3:
$
date +%B<RET>January
<< +%B выводит на экран полное название месяца$
Приостановка и продолжение вывода на экран
Вы могли уже заметить, что иногда ответ системы не помещается на один экран. Например, когда вы получаете календарь на целый год с помощью команды cal, то январь исчезает с экрана, пока продолжается вывод.
Есть несколько способов решить эту проблему в ОС UNIX. Один из них - приостановить, а затем продолжить вывод информации на экран терминала. Вам позволит сделать это нажатие следующих клавиш:
<CTRL/s>
- приостановка вывода на экран<CTRL/q>
- возобновление вывода на экранЗАМЕЧАНИЕ: Нажмите сначала клавишу <CTRL>, а затем, не отпуская ее, нажимайте s или q.
Повторяя <CTRL/s>, <CTRL/q>, <CTRL/s>..., вы приостановите вывод, затем возобновите его, снова приостановите и т.д.
На некоторых клавиатурах для этого могут использоваться другие клавиши, а не <CTRL/s> и <CTRL/q>.
ПРИОСТАНОВКА И ПРОДОЛЖЕНИЕ ВЫВОДА НА ЭКРАН
<CTRL/s>
Приостанавливает вывод на экран.<CTRL/q>
Возобновляет вывод на экран.Прекращение выполнения команды
Вы узнали, как приостановить и продолжить выполнение команды, но что если вы не хотите возобновлять ее, а просто хотите остановиться? Что если выполнение команды занимает много времени, а вы передумали, и вам она не нужна?
Чтобы остановить команду до того, как она выполнится до конца, нажмите одну из нижеперечисленных клавиш. После остановки команды вы снова увидите приглашение shell.
Выводы урока
В этом уроке описаны:
Упражнение 1.2.А
1. Если вы еще не начинали сеанс в системе, получите входное имя и пароль у преподавателя и войдите в систему.
2. Отправьте почту обучаемому, который сидит ближе всех к вам. Спросите, что у него/нее было на ужин прошлым вечером.
3. Получив почтовое сообщение, касающееся прошлого ужина, ответьте на него.
4. Узнайте который час с помощью системы UNIX. Еще не пора обедать?
5. Используя команду date, узнайте какой сегодня день года. Аргумент для этого - j.
6. Выведите на экран календарь года вашего рождения. Приостановите вывод, когда появится месяц вашего рождения. В какой день недели вы родились?
7. Выведите на экран календарь 1900 года. Остановите выполнение команды после выведения календаря января.
8. Каким днем недели было первое января 1989 года?
9. Какие командные строки составлены правильно? Какие ошибки в остальных?
$ date 1989
$ news - a
$ cal January 89
ЦЕЛИ
Печать содержимого каталога командой ls.
В компьютерной системе файлы размещаются в каталогах. Каждый файл системы UNIX находится в некотором каталоге. При каждом входе в систему вы оказываетесь в своем корневом каталоге пользователя - login directory. Такой каталог есть у каждого пользователя системы.
Когда вы начинаете свой первый сеанс в системе, возможно, что ваш каталог пуст. Но мы стараемся заранее поместить в вашем каталоге несколько файлов. Для получения списка файлов каталога используйте команду ls.
$
ls<RET>
bin fun numbers seepath unit4 unit7 |
$
В ранних версиях UNIX команда ls распечатывала каталог по одному файлу в каждой строчке. Для печати каталога по столбцам требуется опция -c команды ls.
ПЕЧАТЬ СОДЕРЖИМОГО КАТАЛОГА КОМАНДОЙ ls
ФАЙЛ: МЕСТО ХРАНЕНИЯ ИНФОРМАЦИИ, ОБЛАДАЮЩЕЕ ИМЕНЕМ
$ls<RET>
bin fun numbers seepath unit4 unit7 |
$
Просмотр содержимого файлов (в стандарте ASCII)
cat, pg
Получив список файлов вашего каталога, вы, возможно, захотите узнать содержимое одного из них. Вывод содержимого файла на экран терминала осуществляется командами cat, pg и pr.
Разница между этими командами состоит в следующем:
cat
выводит на экран содержимое ваших файлов. Большой файл скроллируется (прокручивается) на экране терминала, поэтому можно использовать клавиши <CTRL/s> и <CTRL/q> для приостановления и продолжения вывода содержимого на экран.pg
выводит содержимое файла в размере одного экрана за раз. Если вы нажмете <RET>, то появится следующий экран информации. Чтобы получить предыдущий экран, нажмите клавишу минус (-). EOF обозначает конец файла; нажав теперь <RET>, вы получите приглашение $.pr
выводит содержимое файла постранично (длина страницы по умолчанию - 66 строк). Над каждой страницей распечатывается заголовок, содержащий время и дату создания файла, имя файла и номер страницы.ВЫВОД НА ЭКРАН СОДЕРЖИМОГО ASCII ФАЙЛОВ
$cat names <RET> $pg names<RET>Shari French Shari French Jo Somers Jo Somers Mona Cole Mona Cole Bill Gaskill Bill Gaskill Karen Shaheen Karen Shaheen Jean Tordella Jean Tordella Dick Fritz Dick Fritz Frank Prihoda Frank Prihoda Hamid Assous Hamid Assous Millicent Zamirowski Millicent Zamirowski John Wilcox John Wilcox $ (EOF):<RET> |
$pr names
<RET>Опции команд cat, pg и pr.
Каждая из этих команд имеет несколько опций. Список опций и их возможности описываются в справочниках. Например:
pr -k
, где -k количество столбцов, печатает файл в k столбцов.Если вы пытаетесь вывести на экран несуществующий файл, то система ответит соответствующим сообщением. Например, если файл nname не существует:
$
cat nnamecat: cannot open nname
Для просмотра стандартных ASCII файлов также существуют команды page, more, head и tail. Для получения дальнейшей информации обращайтесь к "Справочнику пользователя".
Не-ASCII файлы
Не-ASCII файлами могут быть компилированные программы, файлы данных для прикладных программ, каталоги и т.д.
Если попытаетесь просмотреть эти файлы с помощью команд cat и pg и при этом не будете использовать необходимые опции, вы увидите набор непонятных графических символов и ваш терминал может стать заблокированным. Если это произойдет, выключите ваш терминал, подождите немного, а затем включите его и войдите в систему снова.
Команда cat с опцией -v успешно печатает файлы, содержащие не-ASCII символы.
ОПЦИИ КОМАНД cat, pg и pr.
$pr -3 names<RET>
Sep 13 09:33 1989 names Page 1
Shari French Jean Tordella John Wilcox
Jo Somers Dick Fritz Steve Richards
Mona Cole Frank Prihoda Tom Chapin
Bill Gaskill Hamid Assous Lori James
Karen Shaheen Millicent Zamirowski
.
.
.
(файл выводится на экран до конца, начало файла скролируется с экрана)
$
Кто пользуется системой?
Команда who печатает список активных пользователей системы, предоставляя информацию в одну строку о каждом. Например:
shari term/24 Aug 23 11:3
входное терминал дата и время
имя начала сеанса
Эта команда имеет несколько опций, одна из них -q. Команда who-q печатает только входные имена активных пользователей и их количество.
Опция -nx, использованная после опции -q, позволяет выбрать количество (x) имен пользователей, печатаемых в одной строке.
КТО ПОЛЬЗУЕТСЯ СИСТЕМОЙ?
$who<RET>
shari term/24 Aug 23 11:30
mona term/27 Aug 23 08:17
jeff term/28 Aug 23 08:22
scott term/31 Aug 23 13:23
jackie term/32 Aug 23 08:31
steve term/33 Aug 23 13:49
$
$who -q<RET>
shari mona jeff scott jackie steve
# users=6
$
$who -q -n3<RET>
shari mona jeff
scott jackie steve
# users=6
$
Использование команды подсчета слов
Команда подсчета слов - wc - предоставляет информацию об указанном аргументе команды. Если в качестве аргумента выступает файл, то wc сообщает количество строк, количество слов и количество символов файла. Например, если вы к файлу names применяете команду cat, а потом wc, то результат будет следующим:
$cat names<RET>
Shari French
Jo Somers
Mona Cole
Bill Gaskill
Karen Shaheen
Jean Tordella
Dick Fritz
Frank Prihoda
Hamid Assous
Millicent Zamirowski
John Wilcox
Steve Richards
Tom Chapin
Lori James
$wc names<RET>
14 28 182 names
У команды wc также есть опции. Если вы хотите узнать только:
количество строк введите wc -l имя файла
количество слов введите wc -w имя файла
количество символов введите wc -с имя файла
В качестве аргумента этой команды можно указывать несколько файлов.
ИСПОЛЬЗОВАНИЕ КОМАНДЫ ПОДСЧЕТА СЛОВ
$cat names<RET>
Shari French
Jo Somers
Mona Cole
Bill Gaskill
Karen Shaheen
Jean Tordella
Dick Fritz
Frank Prihoda
Hamid Assous
Millicent Zamirowski
John Wilcox
Steve Richards
Tom Chapin
Lori James
$ wc names<RET>
14 28 182 names
$ wc -l names<RET>
14 names
$
wc -w names<RET>28 names
$
wc -c names<RET>182 names
$ wc -wc names<RET>
28 182 names
Вывод на экран большими буквами
Команда banner печатает большими буквами то, что задается ей в качестве аргумента. Аргументы разделяются пробелами, то есть каждое слово есть аргумент. По умолчанию каждое слово выводится отдельной строкой. Если вы набрали команду неверно, система выдает на экран сообщение об ошибке.
Если вы хотите, чтобы аргументы были выведены одной строкой, заключите их в двойные кавычки. Будьте внимательны - в одной строке можно разместить только десять символов. Если попытаетесь вывести в одной строке более десяти символов, то вывод оборвется на десятом.
ВЫВОД НА ЭКРАН БОЛЬШИМИ БУКВАМИ
$
banner hello world<RET># # ###### # # #### # # # # # # # ###### ##### # # # # # # # # # # # # # # # # # # # # ###### ###### ###### ####
# # #### ##### # ##### # # # # # # # # # # # # # # # # # # # ## # # # ##### # # # ## ## # # # # # # # # # #### # # ###### #####
$ banner<RET>
Usage: banner "up to 10 char arg string"
$ banner "hi world"<RET>
# # # # # #### ##### # ##### # # # # # # # # # # # # ###### # # # # # # # # # # # # # # ## # # # ##### # # # # # # ## ## # # # # # # # # # # # # #### # # ###### #####
Запись с помощью команды script
При выполнении команды shell, вам может понадобится запись всего, что появляется на экране вашего терминала. Для этого существует команда script. Ее формат:
script имя файла.
ЗАМЕЧАНИЕ: Опция -а позволяет вам производить запись в конец уже существующего файла.
После того, как вы один раз ввели эту команду, все, что появляется на экране, копируется в файл с указанным вами именем. Если вы забыли указать имя файла, то запись ведется в файл typescript.
Для того, чтобы закончить действие этой команды, нажмите <CTRL/d>. ЗАМЕЧАНИЕ: UNIX не выдает никаких сообщений о том, что вы используете команду script.
В Примере 1 на следующей странице, script создает файл под именем mycopy. Этот файл содержит запись всего, что появлялось на экране, начиная с команд date и news, вплоть до отмены команды - <CTRL/d>.
ЗАПИСЬ С ПОМОЩЬЮ КОМАНДЫ script
$
script mycopy<RET>Script started, file is mycopy
$ news -a<RET>
mona5 (root) Fri Aug 19 10:19:20 1989
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для "mona5" должны отправляться "jo5".
$ datee<RET>
datee: not found
$ date<RET>
Thu Jan 4 13:16:05 EST 1990
<CTRL/d>
Script done, file is mycopy
$
$ cat mycopy<RET>
Script started on Mon Nov 27 09:11:53 1990
$ news -a
mona5 (root) Fri Aug 19 10:19:20 1989
В соответствии с изменениями в системных именах от 05-19-89,
все сообщения для "mona5" должны отправляться "jo5".
$ datee
datee: not found
$ date
Thu Jan 4 13:16:05 EST 1990
script done on Mon Nov 27 09:12:19 1990
Поиск по образцу с помощью команды grep
Имя grep возникло как сокращение от globally find the regular expression and print (найти подобное выражение и напечатать). Эта команда осуществляет поиск по образцу в одном или нескольких файлах. Строки, содержащие образец, выводятся на экран.
Формат команды grep:
grep образец [файл(ы)]
В Примере 1 на следующей странице осуществляется поиск телефонных номеров, начинающихся с кода 614, в файле phone.
$ grep 614 phone <RET>
Опция -i этой команды игнорирует различие между строчными и заглавными буквами. В Примере 2 образцом являются как No, так и no.
$ grep -i no phone <RET>
ПОИСК ПО ОБРАЗЦУ С ПОМОЩЬЮ КОМАНДЫ grep
$ cat phone<RET>
Shari French Yes 614-764-1112
Jo Somers No 614-764-1113
Mona Cole yes 614-764-1114
Bill Gaskill yes 201-457-1112
Karen Shaheen No 201-457-1113
Jean Tordella no 212-979-1113
Dick Fritz No 212-979-1112
Frank Prihoda Yes 609-639-1112
Hamid Assous Yes 609-639-1113
Millicent Zamirowski no 312-971-1112
John Wilcox no 312-971-1113
Steve Richards yes 312-971-1114
Tom Chapin No 312-971-1115
Lori James no 312-971-1116
Anthony Norr yes 312-971-1117
$
ПРИМЕР 1:
$ grep 614 phone<RET>
Shari French Yes 614-764-1112
Jo Somers No 614-764-1113
Mona Cole yes 614-764-1114
$
ПРИМЕР 2:
$ grep -i no phone<RET>
Jo Somers No 614-764-1113
Karen Shaheen No 201-457-1113
Jean Tordella no 212-979-1113
Dick Fritz No 212-979-1112
Millicent Zamirowski no 312-971-1112
John Wilcox no 312-971-1113
Tom Chapin No 312-971-1115
Lori James no 312-971-1116
Anthony Norr yes 312-971-1117
$
Сортировка
Команда sort упорядочивает строки файла в стандартном ASCII порядке - сперва цифры, затем заглавные буквы, затем строчные буквы в алфавитном порядке. (Это относится только к буквам английского алфавита.) Сортировка производится символ за символом, строка за строкой. Если использовать эту команду без опций, то в исходном файле изменений не производится; а на экран выводится его упорядоченное содержимое. Смотрите Пример 1 на следующей странице.
$ sort books<RET>
Опция -f команды sort игнорирует различие между строчными и заглавными буквами - точно так же, как и опция -i команды grep. Если не указывать эту опцию, то сначала отыскиваются строки с заглавными, а уже затем со строчными буквами. Смотрите Пример 2 на следующей странице.
СОРТИРОВКА
$ cat books<RET>
Wuthering Heights 1818
Huckleberry Finn 1835
Oliver Twist 1812
Treasure Island 1850
Little Women 1932
moby dick 1819
Gulliver's Travels 1667
Little Green Women 1989
Robinson Crusoe 1660
$
ПРИМЕР 1:
$ sort books<RET>
Gulliver's Travels 1667
Huckleberry Finn 1835
Little Green Women 1989
Little Women 1932
Oliver Twist 1812
Robinson Crusoe 1660
Treasure Island 1850
Wuthering Heights 1818
moby dick 1819
$
ПРИМЕР 2:
$ sort -f books<RET>
Gulliver's Travels 1667
Huckleberry Finn 1835
Little Green Women 1989
Little Women 1932
moby dick 1819
Oliver Twist 1812
Robinson Crusoe 1660
Treasure Island 1850
Wuthering Heights 1818
$
Сортировка (продолжение)
Опция -r
Опция -r сортирует строки файла в противоположном порядке. Смотрите Пример 1 на следующей странице.
Опция -o
Опция -о команды sort записывает отсортированную информацию в файл, имя которого указывается сразу после -о без пробела. Используя эту опцию, вы должны указывать имя файла.
Вы можете изменить исходный файл, упорядочив его. Например, чтобы изменить содержание файла books, введите следующую команду:
$ sort -obooks books<RET>
Эта команда сортирует файл books и записывает результат в этот же файл. Смотрите Пример 2 на следующей странице.
Вы можете использовать опцию -о и для записи упорядоченной информации в новый файл. Например:
$ sort -osbooks books<RET>
Такая команда не затронет исходный файл, а сохранит результат сортировки в файле sbooks.
СОРТИРОВКА (ПРОДОЛЖЕНИЕ)
ПРИМЕР 1:
$sort -r books<RET>
moby dick 1819
Wuthering Heights 1818
Treasure Island 1850
Robinson Crusoe 1660
Oliver Twist 1812
Little Women 1932
Little Green Women 1989
Huckleberry Finn 1835
Gulliver's Travels 1667
$
ПРИМЕР 2:
$
sort -obooks books<RET>$ cat books<RET>
Gulliver's Travels 1667
Huckleberry Finn 1835
Little Green Women 1989
Little Women 1932
Oliver Twist 1812
Robinson Crusoe 1660
Treasure Island 1850
Wuthering Heights 1818
moby dick 1819
$
Перенаправление
Некоторые из команд, с которыми вы уже познакомились, получали входную информацию с клавиатуры вашего терминала. Обычно клавиатура - это стандартный ввод для многих команд. Например, для команды, пересылающей сообщение по электронной почте. Стандартным выводом по умолчанию является экран вашего терминала. К примеру, команды grep и ls имеют стандартный вывод.
Вы можете приказать shell изменить (перенаправить) стандартный ввод так, чтобы он шел из файла. Аналогично, вы можете изменить (перенаправить) стандартный вывод, направив его в файл.
Перенаправление ввода позволяет использовать какой-нибудь файл в качестве ввода несколько раз, не набирая соответствующую информацию каждый раз. Перенаправление вывода позволяет вам сохранить результат команды в каком-либо файле, чтобы использовать его в дальнейшем. Знаки перенаправления:
< перенаправление ввода, ввод из файла
> перенаправление вывода, вывод в файл; переписывает уже существующий или создает новый, если файла с указанным именем нет.
ПРИМЕР 1: ПЕРЕНАПРАВЛЕНИЕ ВВОДА
Слово, следующее за знаком <, есть имя файла ввода. Например, команда mailx получает входную информацию с терминала. Если вы хотите переслать по почте содержимое файла, вы можете сделать это с помощью знака перенаправления ввода. Копия файла books посылается пользователям friend1 и friend2 следующей командой:
$ mailx friend1 friend2 < books
ПРИМЕР 2: ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА
Слово, следующее за знаком >, есть имя файла вывода. Например, команда who выводит список активных пользователей системы на экран терминала (стандартный вывод). Нижеприведенный пример перенаправляет вывод команды banner в файл welcome; на экране вывод banner не появляется. Если файл welcome уже существует, то он переписывается. Если же нет, то он создается.
$ banner HELLO WORLD > welcome
ПРИМЕР 3: ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА КОМАНДЫ ls
Когда вы перенаправляете вывод команды ls в файл, то список имен файлов записывается в нем по одному имени в строке.
$ ls > mylist
ПЕРЕНАПРАВЛЕНИЕ
СТАНДАРТНЫЙ ВВОД: С КЛАВИАТУРЫ (ЕСЛИ НЕ ПЕРЕНАПРАВЛЕНО ЗНАКОМ <)
СТАНДАРТНЫЙ ВЫВОД: НА ЭКРАН (ЕСЛИ НЕ ПЕРЕНАПРАВЛЕНО ЗНАКОМ >)
ПРИМЕР 1: ПЕРЕНАПРАВЛЕНИЕ ВВОДА
$ mailx friend1 friend2 < books<RET>
ПРИМЕР 2: ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА
$ banner HELLO WORLD > welcome<RET>
ПРИМЕР 3: ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА КОМАНДЫ ls
$ ls > mylist<RET>
$ cat mylist<RET>
bin
books
calendar
echoit
fun
groceries
lunchfile
names
.
.
.
Перенаправление (продолжение)
Если вы перенаправляете вывод в уже существующий файл, то файл, по умолчанию, переписывается. Чтобы добавить что-либо в существующий файл, не переписывая его, используйте добавляющий знак перенаправления вывода:
>> перенаправление вывода; добавление к уже существующему файлу, создание нового в случае необходимости.
ПРИМЕР 1: ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА С ДОБАВЛЕНИЕМ
Слово, стоящее справа от знака >>, есть имя файла, в который добавляется вывод. В приведенном примере вывод команды sort добавляется в конец файла sbooks. Если такого файла не существует, то он создается.
$ sort books >> sbooks
Перенаправление стандартного сообщения об ошибке
По умолчанию сообщения об ошибках выводятся на экран. Например, если вы попытаетесь применить команду cat к несуществующему файлу, то на экране появится сообщение: cat: cannot open имя файла.
Часто, при составлении программ, оказывается полезным перенаправлять сообщения об ошибках, чтобы они не выводились на экран при запуске программы. Для перенаправления вывода сообщений об ошибках поместите 2 перед знаком перенаправления. Между 2 и > не должно быть пробелов.
ПРИМЕР 2: ПЕРЕНАПРАВЛЕНИЕ СТАНДАРТНОГО СООБЩЕНИЯ ОБ ОШИБКЕ
Например, чтобы перенаправить сообщения об ошибках в файл savemsgs введите команду:
$ cat newbooks 2> savemsgs<RET>
ПЕРЕНАПРАВЛЕНИЕ (ПРОДОЛЖЕНИЕ)
ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА С ДОБАВЛЕНИЕМ: ЗНАК >> НАПРАВЛЯЕТ ВЫВОД В КОНЕЦ СУЩЕСТВУЮЩЕГО ФАЙЛА
СТАНДАРТНОЕ СООБЩЕНИЕ ОБ ОШИБКЕ: ВЫВОДИТСЯ НА ЭКРАН, ЕСЛИ НЕ ПЕРЕНАПРАВЛЕНО ЗНАКОМ 2>
ПРИМЕР 1: ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА С ДОБАВЛЕНИЕМ
$ sort books >> sbooks<RET>
ПРЕДУПРЕЖДЕНИЕ:
$ sort books > books<RET>
- Input and output file have same name
- Output file overwrites input file; input file lost
ПРИМЕР 2:
$ cat newbooks<RET>
cat: cannot open newbooks
$ cat newbooks 2> savemsgs<RET>
$ cat savemsgs<RET>
cat: cannot open newbooks
$
Использование конвейеров команд
Иногда вам требуется для получения желаемого результата запуск нескольких команд. К примеру, вы захотите послать по почте сообщение плакатного типа. Для этого требуются команды mailx и banner.
Это можно осуществить в два шага, используя перенаправление ввода/вывода.
$ banner HI THERE > bannerfile<RET>
$ mail student5 < bannerfile<RET>
Альтернативный способ - использовать конвейер. Подавляющее большинство стандартных команд UNIX запускается по одной или конвейером. Конвейер - это набор команд, связанных таким образом, что выход первой команды является входом второй и т.д. Таким путем вы можете обрабатывать информацию, полученную с помощью разных команд, не записывая промежуточные результаты.
Конвейер организуется с помощью знака |. В конвейере стандартный вывод команды banner становится стандартным вводом команды mailx. Например, чтобы student5 получил плакатное сообщение HI THERE, нужно создать конвейер:
$ banner HI THERE | mail student5<RET>
Другой пример конвейера. Команда who выводит на экран список активных пользователей системы, предоставляя информацию в одну строку о каждом из них. Команда wc -l подсчитывает количество строк. Таким образом можно организовать конвейер для подсчета активных пользователей системы:
$ who | wc -l<RET>
24
В конвейере можно указывать перенаправление вывода для записи результата в файл. Так осуществляется запись в файл users.
$ who | wc -l > users<RET>
ПЕРЕНАПРАВЛЕНИЕ и КОНВЕЙЕРЫ - за и против
И то, и другое имеет свои преимущества. Перенаправление предпочтительнее, если нужно использовать информацию, хранящуюся в файле. Если же нет, то лучше использовать конвейер, поскольку на его выполнение расходуется меньше времени - не нужно записывать информацию в файл, а потом извлекать ее оттуда. В конвейер можно соединить и более двух команд, ограничение на их количество зависит от системы.
ИСПОЛЬЗОВАНИЕ КОНВЕЙЕРОВ КОМАНД
ФОРМАТ
команда1 | команда2
$ banner HI THERE | mailx student5<RET>
$ who | wc -l<RET>
7
$ who | wc -l > users<RET>
$ news | pg<RET>
$ who | grep jo<RET>
jo tty33 Jan 16 09:14
$ grep 18 books | sort | pr -2 | pg<RET>
Jan 16 13:15 1989 Page 1
Huckleberry Finn 1835 Wuthering Heights 1818
Oliver Twist 1812 moby dick 1819
Treasure Island 1850
.
.
.
(и т.д. до конца файла)
Выводы урока
В этом уроке описаны:
Вывод на экран содержимого стандартных ASCII файлов
Команда who
Команда подсчета слов wc
Команда banner, создающая сообщения плакатного типа
Команда script, записывающая все, что появляется на экране
Команда grep
Команда sort
Перенаправление
Использование конвейеров команд, связанных символом |
Упражнение 1.3.А
1. Создайте командой script файл под именем exercises.
2. Просмотрите текущее содержимое вашей директории и перенаправьте вывод в файл listing.
3. Выведите постранично на экран содержимое файла listing в обратном порядке.
4. Сколько строк, слов и символов содержит этот файл?
5. Определите число файлов в директории.
6. Узнайте, кто является активными пользователями системы.
7. Создайте сообщение плакатного типа "всем привет" и перенаправьте его в файл bfile.
8. Пошлите bfile по почте с помощью перенаправления ввода кому-нибудь из активных пользователей.
9. Не прибегая к выводу на экран, узнайте есть ли дата 1819 в файлах books и phone.
10. Выведите на экран содержимое файла groceries.
11. Отсортируйте содержимое файла groceries в алфавитном порядке и поместите результат в этот же файл. ПРЕДУПРЕЖДЕНИЕ! Ошибка в этой команде уничтожит вашу единственную копию файла.
12. Определите сколько пунктов в этом файле.
13. Выведите на экран список файлов вашей директории в порядке, обратном алфавитному.
14. Прекратите запись в файл exercises, созданный в самом начале упражнения.
15. Выведите постранично на экран содержимое файла exercises.
16. Вы можете изменить формат вывода команды date.
Попробуйте ввести следующие команды:
date +%D<RET>
date +%U<RET>
+ означает, что вывод контролируется пользователем
% предшествует всем индикаторам формата (дескрипторам поля)
Для выбора формата вывода используйте дескрипторы поля:
D
дата в виде месяц/число/год (цифрами)U
номер недели года (0-52)