Брайан Керниган - UNIX — универсальная среда программирования
В заключение хотелось бы дать вам совет: не бойтесь экспериментировать. Если вы новичок, то существует очень мало ситуаций, в которых вы можете повредить себе или другим пользователям, так что изучайте свою систему методом "проб и ошибок". Первая глава довольно большая, и лучший способ ознакомиться с ней читать за один прием всего несколько страниц, постоянно экспериментируя.
1.1 Итак, приступаем
Некоторые предварительные замечания о терминалах и вводе символовМы не собираемся здесь затрагивать вопросы, связанные с применением вычислительных машин, поскольку предполагается, что вы имеете представление о терминалах и о том, как ими пользоваться. Если по ходу изложения вам что-нибудь покажется непонятным, обратитесь за помощью к местному специалисту.
Система UNIX полностью дуплексная: символы, которые вы вводите с терминала, попадают в систему, а она посылает их назад на терминал, с тем чтобы они появились на экране. Обычно такой процесс подобен эху: символы просто копируются на экран, и вы можете видеть, что вводите, но иногда, например при вводе секретного пароля, эхо пропадает, и символы не появляются на экране.
Большинство символов на клавиатуре не имеет специального назначения, но есть символы, подсказывающие машине, как интерпретировать то, что вы вводите. Наиболее важным из них является символ, вводимый при нажатии клавиши RETURN. Он обозначает конец вводимой строки: в ответ на его ввод система передвигает курсор на начало следующей строки на экране. Прежде чем система начнет интерпретировать введенные символы, вы должны нажать клавишу RETURN.
RETURN — это пример управляющего символа, т.е. невидимого символа, определяющего некоторые аспекты действий, выполняемых при вводе и выводе на терминал. На обычном терминале символ RETURN вводится с помощью отдельной клавиши, хотя большинство управляющих символов не связано с "персональными" клавишами. Для их ввода требуется нажать клавишу CONTROL, иногда обозначаемую как CTRL, CTL или CNTL, одновременно нажав еще одну клавишу, обычно соответствующую букве. Например, конец строки можно получить, нажав клавишу RETURN, либо (эквивалентный способ) при нажатой клавише CONTROL ввести символ 'm' Поэтому RETURN можно называть "управляющее m". или ctl-m. Среди других управляющих символов необходимо выделить ctl-d, сообщающий программе, что ввод окончен: "ctl-g", вызывающий звонок на терминале: ctl-h, который часто называется "шаг назад" и может использоваться при коррекции ошибок ввода, и ctl-i (или tab), перемещающий курсор на следующую позицию табуляции почти так же, как и на стандартном телетайпе. Позиции табуляции в системе UNIX отстоят друг от друга на восемь пробелов. На большинстве терминалов предусмотрены специальные клавиши для символов "шаг назад" и tab.
Существуют еще две особые клавиши: DELETE (DEL), иногда обозначаемая как RUBOUT (могут использоваться разные сокращения), и BREAK или INTERRUPT. В большинстве систем UNIX ввод символа DELETE немедленно останавливает программу, даже если она еще не завершилась. В некоторых системах для этого употребляется символ ctl-c. В ряде систем в зависимости от способа подключения терминала синонимом DELETE или ctl-c может служить BREAK.
Сеанс работы с UNIXНачнем с диалога между вами и системой UNIX.
Установить связь: позвонить по телефону или включить питание, если необходимо. Ваша система должна ответить
login: you Введите ваше имя, затем нажмите RETURN
Password: Ваш пароль, если вы его вводите, не появится на экране
You have mail. Есть почта, ее можно прочесть после входа в систему
$ Система готова к приему ваших команд
$ Можно нажать RETURN несколько раз
$ date Узнаем дату и время
Sun Sep 25 23:02:57 EDT 1983
$ who Узнаем, кто работает на машине?
jlb tty0 Sep 25 13:59
you tty2 Sep 25 23:01
mary tty4 Sep 25 19:03
doug tty5 Sep 25 19:22
egb tty7 Sep 25 17:17
bob tty8 Sep 25 20:48
$ mail Прочтем почту
From doug Sun Sep 25 20:53 EDT 1983
зайди ко мне когда-нибудь в понедельник
? При нажатии RETURN выдается следующее сообщение
From mary Sun Sep 25 19:07 EDT 1983
Пообедаем завтра в полдень?
? d Удалим это сообщение
$ Почты больше нет
$ mail mary Пошлем почту mary
обед в 12
ctl-d Конец сообщения
$ Позвоним по телефону или выключим терминал
Вот и все
Иногда к такому диалогу сводится вся ваша работа с системой, однако бывает, что при этом и "дело делается". Далее мы разберем приведенный пример сеанса, а также некоторые полезные программы.
Вход в системуВы должны иметь входное имя и пароль, которые можно получить от администратора системы. Система UNIX может работать с самыми разными терминалами, но в основном она ориентирована на устройства со строчными буквами. Разница между строчными и прописными буквами существенна! Если на вашем терминале есть только прописные буквы (как на некоторых портативных терминалах), это настолько усложнит вам жизнь, что вскоре вы начнете искать другой терминал.
Перед началом работы проверьте, все ли переключатели на терминале установлены в правильное положение: верхний или нижний регистр, дуплексная ли связь и т.д. с учетом рекомендаций местного специалиста, например в отношении скорости передачи. Затем, используя любые "заключения", установите связь с системой: иногда для этого достаточно лишь позвонить по телефону или просто включить тумблер. В любом случае система должна выдать:
login:
Если она выдала чепуху, то, может быть, у вас установлена не та скорость передачи: проверьте положение соответствующего (а заодно и других) переключателя. Когда это не помогает, нужно медленно несколько раз нажать клавишу BREAK или INTERRUPT. Если приглашение login: и теперь не появляется, вам следует обратиться за помощью к специалисту.
Получив приглашение на вход, введите ваше входное имя строчными буквами, после чего нажмите клавишу RETURN. При необходимости система запросит у вас пароль, и пока вы вводите его, выдача на терминал будет отключена. В конце концов, войдя в систему, вы получите приглашение (как правило, один символ, означающий, что система готова принимать ваши команды). Приглашением, вероятнее всего, окажется символ $ (знак доллара) или % (процент), но можно заменить его любым другим; позднее мы покажем, как это сделать. Приглашение обычно выдается программой, называемой интерпретатором команд, или shell, с помощью которой вы общаетесь с системой. Перед приглашением на экране может появиться сообщение о том, что для вас есть почта, или вопрос о типе применяемого терминала. Ваш ответ поможет системе воспользоваться какими-либо особыми свойствами данного терминала.
Ввод командПолучив приглашение, вы можете ввести команды, т.е. требования к системе что-либо сделать. Мы часто будем употреблять слово программа как синоним команды. Когда на экране появится приглашение (пусть это будет символ '$'), введите date и нажмите клавишу RETURN. Система в ответ выдаст дату и время и выведет следующее приглашение, так что весь диалог на вашем терминале примет вид:
$ date
Mon Sep 26 12 : 20 : 57 EDT 1983 $
Не забывайте нажимать клавишу RETURN и не вводите символ '$'. Если вам покажется, что о вас забыли, нажмите RETURN, возможно, что-нибудь и произойдет. В дальнейшем мы не будем напоминать вам о том, что символ RETURN должен завершать каждую строку.
Затем попробуйте ввести команду who, которая сообщает, кто в данный момент работает в системе:
$ who
rim tty0 Sep 26 11:37
pjw tty4 Sep 26 11:30
gerard tty7 Sep 26 10:27
mark tty9 Sep 26 07:59
you ttya Sep 26 12:20
$
В первом столбце указывается имя пользователя, во втором — системное имя используемого устройства связи (tty — сокращение от teletype, "архаическое" обозначение терминала). В третьем столбце отмечаются дата и время входа в систему. Вы можете поэкспериментировать и с такой командой:
$ who am i
you ttya Sep 26 12:20
$