BASH Programming - Введение

         

Что дальше?


Движемся вперед и устанавливаем Linux на вновь созданные разделы. Если вы недоверчивы, то когда процедура установки Linux переходит к загрузке, вы можете загрузить Windows 95 и убедиться, что она по прежнему работает.

ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, ПОЖАЛУЙСТА

послушайте совета, данного в конце раздела номер три. Иначе вы не сможете использовать Linux.

При разбивке диска, отведите 400 МБ под Linux (этого вполне достаточно) и 30 МБ под SWAP (чего более чем достаточно).

Теперь вы должны установить ваш дистрибутив Linux без каких-либо проблем.



Давайте готовиться к разгрому!


Linux и Windows 95 могут прекрасно ужиться на одном жестком диске. Вы также модете установить Linux на другой жесткий диск на той же машине. Если вы располагаете деньгами, сэкономленными для приобретения второго диска, то пойдите и купите его. Хотя запускать на одном диске Win95 и Linux вполне безопасно и надежно, все же иметь второй диск еще безопаснее. Однако, поскольку я - бедный студент (как и множество друших людей, которых я знаю), то мы обойдемся одним диском.

Я предполагаю, что ваш диск примерно такой:

+--------------------------------- C: | 800M или около того, а может быть и больше? +---------------------------------

и программное обеспечение (Windows 95, MS-Office, Qmodem Pro и пр. ваши программы для DOS/Windows) занимает около 400МБ плюс своп (это только предположение!). Я полагаю, что вы не хотите терять все это программное обеспечение, поскольку у вас ушло немало времени на его настройку и установку, поэтому вы вряд ли захотите удалять этот раздел и переставлять все заново.



Использование вашей новой системы!


Linux может монтировать, читать и записывать на раздел Win95 VFAT несколькими способами. Вы можете использовать подддержку файловой системы msdos, которая появилась в ядрах выше 1.0. Однако, используя команды типа:

litterbox~#: mount -t msdos /dev/hda1 /mnt

вам придется довольствоваться короткими именами в формате 8.3 . Yick! У вас есть Windows 95, так что вам можно использовать длинный имена файлов.

Некоторые пользователи Linux все еще пользуются ядрами, которые anchient (по стандартам Linux). Другими словами, ядра 1.2.xx. Некто написал модуль для этой серии ядер, так что пользователь может читать файлы, которые не согласованы со старым форматом 8.3 . Адрес FTP: и непременно прочтите README перед тем как что-то начать делать.

Наконец, новые ядра (1.3.4x) также как и долгожданный релиз 2.0 имеют внутреннюю поддержку vfat, которую вы можете вкомпилировать. Эти ядра допускают безопасное чтение/запись на ваши VFAT разделы.

Внимание!

Если вы работаете в "более свежей" версии Windows 95 -- т.е., возможно той, что устанавливалась на компьютерах, сделанных после июня 1996, из серии P5-MMX, то, пожалуйста, выслушайте следующее.

Выясните, какая версия Win95 у вас запущена в действительности. Для этого откройте сессию DOS и напечатайте: "ver /r". Вот пример результата:

C:\> ver /r

Mircosoft Windows 95 [4.00.1034] (C) 1981-1996 Microsoft Corporation.

Обратите внимание на младший номер версии. Если это число БОЛЬШЕ чем 950, то видимо у вас запуцена версия FAT, известная как FAT32. Если это тот случай, то вы можете продолжать использовать Linux и Win95, НО поддержки чтения/записи на раздел FAT32 нет. You are SOL if that is the case.

Факт, что вы работаете в новой версии Win95, не означает, что у вас действительно установлена FAT32. Запустите "fdisk" и обратитесь к пункту "display partition information", чтобы посмотреть, используете ли вы FAT32.



Я запорол систему!


Со мной такое случалось -- я запустил Win95 beta с установленной FAT32, обновил Win95, и моя система померла. У меня не было загрузочной дискеты Win95 для той версии Win95, до которой я обновил систему. Пришлось немного повозиться.

Находим ЛЮБОЙ MS загрузочный диск, использующий DOS версии 5.0 или выше. Под Linux монтируем Win95 Beta CD. Аналогично монтируем дискету.

litterbox~# mount -t iso9660 /dev/cdrom /cdrom litterbox~# mount -t msdos /dev/fd0 /mnt

На CD надо найти каталог "beta stuff". MS помещает этот каталог где-то в области /cdrom/admin/beta/floppy или /cdrom/betaonly/floppy. Скопируйте файлы io.sys, msdos.sys и command.com на дискету. "sync" и unmount диски, которые вы смонтировали. Перегружаемся, и загрузочный диск *должен* работать.



Linload, что это такое?_


Linload - это DOS-выполнимый файл, который загружает ядро с DOS ЖД (или дискеты) и затем загружает остальную ОС Linux с соответствующего корневого раздела. Если вы и впрямь хороший хакер, то таким образом вы можете осуществить бездискетную установку Linux, но сегодня мы пойдем более традиционным путем. При загрузке Windows 95 нажмите клавишу F8 (когда появится надпись:

Starting Windows 95...

и выберите пункт "Safe mode, command prompt only." Перейдите в каталог, в котором находится ваше ядро, и выполните команду

C:\LINUX> linload.exe zimage root=/dev/hda2 ro"

Если вы дружите с настройкой MS-DOS, то вы можете настроить ветвление в файлах AUTOEXEC.BAT и CONFIG.SYS таким образом, чтобы получать меню, в котором можно было бы выбрать, какую OC грузить.



Проблемы?


Если у вас установлен Linux, и вы собираетесь поставить Win95, Windows 95 ПЕРЕПИШЕТ ваш MBR, и этим разрушит LILO. У вас есть две возможности: использовать для загрузки ядра loadlin.exe, и загружать Linux таким образом, либо загрузить Linux с дискеты и/или loadlin, а затем переинсталлировать LILO.

Удачи с вашей новой системой!

-Jon

jkatz@mac.edu

+1 217 479-7309

Box 4454 MacMurray College

Jacksonville, Illinois 62650

Personal:

Corinne:

Resume:

Room-101:

HOWTO:



Точно, у меня такой раздел, и я хочу сэкономить!


Не надо терять надежду. Есть программа FIPS, которая может переразбить ваш жесткий диск без разрушения данных. ОДНАКО, перед ее запуском убедитесь, ваш жесткий диск дефрагментирован (дефрагментация должна быть оптимальной). Для дефрагментации можно использовать программу defrag из дистрибутива Win95, и лучше запускать ее из GUI, чтобы не обрезать длинные имена. После того как defrag отработал, запустите FIPS и разбейте ваш жесткий диск примерно так:

+------------------------------------- C: | Это ваш раздел FAT/VFAT/Win95 450M | +------------------------------------ ??? | Это свободное место, которое начинается В ПРЕДЕЛАХ первых | 1024 цилиндров +------------------------------------

Обычно FIPS можно найти на вашем любимом Linux FTP сайте (sunsite.unc.edu, tsx-11.mit.edu, ftp.redhat.com) в каталоге /pub/utils/msdos . Если у вас есть инсталляционный компакт-диск с Linux, то на нем обычно есть каталог \utils\msdos или \utils, в котором наверняка есть FIPS.

ВЕСЬМА ВАЖНО, чтобы ваш раздел с Linux начинался перед (ниже) 1024-го цилиндра, иначе вы не сможете загрузиться с него (а это плохо).

Что такое 1024й цилиндр? Это то место, где кончается IDE и начинается EIDE -- первые 528 MБ на вашем жестокм диске. Раздел с Linux должен начинаться в пределах первых 520 MБ так, чтобы ядро и другие загрузочные файлы полностью вмещались в пределы указанного цилиндра.



У меня фирменный компьютер, который я приобрел в (неизвестном китайском/розничном магазине)


Если установили Linux на диск с FAT32, следуйте вышеописанным шагам об установке Linux на систему Win95, не НЕ инсталлируйте LILO. Вместо этого пропустите секцию 5.1.3, озаглавленную "linload, что это такое?" и прочтите пошаговую инструкцию по исправлению этой кошмарной ситуации.



Многие люди недавно купили новые


Многие люди недавно купили новые компьютеры, которые (к несчастью) приходят с предустановленной Windows 95. Открыв для себя Internet, многие пользователи обнаруживают Linux, и желают запустить лучшую ОС за лучшую цену. Здесь возникает множество различных сложностей, поскольку на новых компьютерах установлены EIDE жесткие диски большой емкости, а Windows 95 работает на устаревшей файловой системе FAT. Linux эти сложности понимает и может предложить соответствующие меры в аппаратной и программной области.

Функция insert-sgml-header


Эта функция позволит пользователю вставить настраиваемый заголовок для документа Linux Documentation Project в файл. Она может быть вызвана автоматически при открытии нового файла, или может быть вызвана пользователем.

Эта функция запрашивает у пользователя, пользуясь mini-buffer, некоторую информацию, часть из которой необходима, а часть нет. not.

Сначала идет заголовок документа. Если ничего не дано, то функция сразу прекращает выполнение и ничего не вставляет. Затем идет дата, автор, его электронный адрес и домашняя страница (эти два последних пункта являются опциональными).

Затем идет запрос имени переводчика документа. Если его нет, то просто нажмите клавишу Return, и больше запросов не будет. А если переводчик есть, то вас запросят о его электронном адресе и домашней странице.

Затем эта функция выводит все в текущий буфер,включая конечно всю информацию, которую вы ввели и включая также необходимые таги для краткого содержания и первой главы. В конце он поместит курсор в том место, где будет набираться краткое содержание.

(defun insert-sgml-header () "Inserts the header for a LinuxDoc document" (interactive) (let (title author email home translator email-translator home-translator date starting-point) (setq title (read-from-minibuffer "Title: ")) (if (> (length title) 0) (progn (setq date (read-from-minibuffer "Date: ") author (read-from-minibuffer "Author: ") email (read-from-minibuffer "Author e-mail: ") home (read-from-minibuffer "Author home page: http://") translator (read-from-minibuffer "Translator: ")) (insert "<!doctype linuxdoc system>\n<article>\n<title>") (insert title) (insert "</title>\n<author>\nAuthor: ") (insert author) (insert "<newline>\n") (if (> (length email) 0) (progn (insert "<htmlurl url=\"mailto:") (insert email) (insert "\" name=\"") (insert email) (insert "\"><newline>\n"))) (if (> (length home) 0) (progn (insert "<htmlurl url=\"http://") (insert home) (insert "\" name=\"") (insert home) (insert "\">\n<newline>"))) (if (> (length translator) 0) (progn (setq email-translator (read-from-minibuffer "Translator e-mail: ") home-translator (read-from-minibuffer "Translator home page: http://")) (insert "Translator : ") (insert translator) (insert "<newline>\n") (if (> (length email-translator) 0) (progn (insert "<htmlurl url=\"mailto:") (insert email-translator) (insert "\" name=\"") (insert email-translator) (insert "\"><newline>\n"))) (if (> (length home-translator) 0) (progn (insert "<htmlurl url=\"http://") (insert home-translator) (insert "\" name=\"") (insert home-translator) (insert "\"><newline>\n"))))) (insert "</author>\n<date>\n") (insert date) (insert "\n</date>\n\n<abstract>\n") (setq point-beginning (point)) (insert "\n</abstract>\n<toc>\n\n<sect>\n<p>\n\n\n</sect>\n\n</article>\n") (goto-char point-beginning) ))))



Автор: Philippe MARTIN ( ) Перевод


v0.4, 27 Февраля 1998

Этот документ предназначен в помощь людям пишущим и переводящим документы серии Linux HOWTOs или другие документы для Linux Documentation Project. Он дает советы по использованию разных утилит, включая Emacs и Ispell.

Примечание переводчика: Шлите мне любый комментарии и замечания, даже небольшие.



Библиотека iso-acc


Библиотека iso-acc для Emacs позволит вам печатать 8-битные символы на 7-битной клавиатуре.

Для ее использования вставте в ваш файл .emacs такую строчку:

(load-library "iso-acc")

Затем, после запуска Emacs и открытия файла, который вам надо отредактировать, наберите Meta-x iso-accents-mode.

Вы можете затем ввести é во французском слове café набрав ' затем e. В общем, вы будете набирать сначала знак ударения (??? accent), а затем символ на котором ставится диактричекий знак (в верхнем или нижнем регистре). Могут использоваться следующие диактрические знаки:

': Acute

` : Grave

^ : Circumflex

" : Dieresis

~ : Тильда, cedilla, и другие частные случаи (cf iso-acc.el).

/ :Для перечеркивания символа, и т.п.

Если вам нужен один из этих символов, а не символ с диактрическим знаком, наберите пробел вслед за набором специального символа Например, для набора l'éléphant, наберите l ' spc ' e l ' e ...

Вы найдете список всех возможных комбинаций в файле iso-acc.el.



From a text document


Если вы хотите превратить текстовый документ в SGML для переноса его в другие форматы, то вот как это делается:

Добавте следующие строки в самое начало документа:

<!doctype linuxdoc system>

<article>

<title>Title Goes Here</title>

<author>

name of author, author's e-mail, etc. </author>

<date>

version and date </date>

Если вы кратко описываете содержание документа в самом начале документа, то окружите этот параграф тагами <abstract>

и </abstract>.

Затем вставьте таг <toc>, который обозначает Содержание.

В начале каждой главы замените каждую строку дающую номер и заголовок главы на:

<sect>Заголовок Главы

и добавьте таг </sect> в конец главы.

Замечание: Вам не надо помещать номер главы, это сделается автоматически.

Сделайте то же самое для разделов. Вам необходимо удалить их номера и отметить их тагами <sect1> в начале раздела и тагами </sect1> в конце раздела.

Вы можете также определить 4 уровня вложенности в разделах, используя <sectN> и </sectN>, где N= 2, 3, или 4 также как и в предыдущем случае.

В начале каждого параграфа вставьте таг <p>.

Если вам необходимо выделить некоторые части, то обозначьте их тагами <it> и </it>

(курсив), <bf> и </bf>

(жирный шрифт), или <tt> и </tt> (стиль пишущей машинки).

Для вставки примерно такого списка:

Это четырехстрочный список:

- здесь первая строка - затем вторая строка - и еще одна - это все

вы должны заменить его на:

Это четырехстрочный список: <itemize>

<item>здесь первая строка <item>затем вторая строка <item>и еще одна <item>это все </itemize>

Когда весь блок является частью программы, или чего-нибудь другого, что нуждается в неизменной передаче, используйте:

<verb>

10 REM Oh my God what's this? 20 REM I thought this had long disappeared! 30 PRINT "I am back to"; 40 PRINT "save the world." 50 INPUT "From whom, do you reckon? ",M$ 60 IF M$="Bill" THEN PRINT "Thou art wise.":GOTO PARADISE 70 ELSE PRINT "You ain't got a clue...":GOTO RICHMOND </verb>

Таким образом, ваше мастерство форматирования SGML будет довольно приличным. Если вы хотите усовершенствовать ваш документ, вы можете заглянуть в руководство пользователя SGML-Tools, которое дает более детальную информацию о типе документа LinuxDoc.



Ispell


Если вы хотите проверять свои тексты внутри Emacs, вы можете использовать программу Ispell и ее режим для Emacs.



Клавиша Meta


Некоторые терминалы позволят вам набрать 8-битные символы с помощью клавиши Meta (или Alt). Например, нажатие Meta-i даст вам символ é.

Но Emacs резервирует клавишу Meta для собственного использования, и я не знаю библиотеку, которая позволит вам использовать эту клавишу для символов с диактрическими знаками.

Вот решение этой проблемы:

(global-set-key "\ei" '(lambda () (interactive) (insert ?\351))) _ ___

Такая строка, если будет вставлена в ваш файл .emacs, позволит набирать вам é используя сочетание клавиш Meta-i. Вы можете переопределить таким образом те сочетания клавиш которые вам нужны, если вы замените i

нужной клавишей и 351 нужным кодом (код был взят из набора символов ISO-8859-1).

Предупреждение! Некоторые локальные режимы могут переопределять такие сочетания клавиш.



Не колеблясь говорите мне любые


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

Набор 8-битных символов


Если ваша клавиатура позволяет вам вводить символы, с диактрическими знаками то нет никаких проблем. А вот если не позволяет, то есть способ решающий эту проблему:



Определение типа LinuxDoc


Этот тип используется для написания, как вы могли догадаться, документов относящихся к Linux.

Такие документы в общем построены следующим образом: они начинаются с заголовка, за которым следует имя автора, номер версии и дата. Затем идет краткое изложение (??? abstract) (так что вам не надо просматривать документ полностью до понимания, того что этот документ не то что вам нужно), затем идет содержание, которое показывает структуру, так что вы в спешке перейти к части, которую вы хотите прочитать.

Затем идет список глав, разделов, параграфов. В их пределах вы можете вставлять куски программ, изменять шрифт для выделения слова иди предложения, вставлять списки, делать ссылки на другие разделы документа и т.п.

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



Отображение 8-битных символов


Чтобы позволить Emacs отображать 8-битные символы, вам необходимо добавить следующие строки в ваш файл .emacs:

(standard-display-european 1) (load-library "iso-syntax")

Если вы используете Emacs на терминале, который не имеет 8-битной поддержки, то вы можете использовать библиотеку iso-ascii

((load-library "iso-ascii")), которая заставляет Emacs отображать такие символы с лучшим приближением.



Отображение 8-битных символов SGML


В SGML, вы можете печатать символы с диактрическими знаками с помощью макросов. Например, клавиша é обозначена как &eacute;. В общем приложения, которым надо читать SGML могут читать 8-битные символы и нет необходимости использовать эти макросы. Но некоторые программы не могут делать это. Существует способ, который позволит избежать краха приложений.

Библиотека iso-sgml позволит вам печатать символы с диактрическими знаками в Emacs, но при сохранении вашего файла на диск, он превратит 8-битные символы в их SGML-эквиваленты.

Поэтому легко, спасибо библиотеке, набирать и читать ваши документы в Emacs, и вы можете быть уверены, что не 8-битные приложения будут понимать ваши документы.

Для использования этой библиотеки вам просто надо добавить следующие строки в ваш файл .emacs:

(setq sgml-mode-hook '(lambda () "Defaults for SGML mode." (load-library "iso-sgml")))



Персональный словарь против словаря локального файла


Клавиша i позволит вам вставить слово в ваш персональный словарь, в то время как клавиша A вставит слово в словарь локального файла

Словарь локального файла-- это последовательность слов, вставленных в конец файла как комментарий, они считываются Ispell каждый раз, когда он запускается для этого файла. Этим способом вы можете указать слова, которые будут считаться правильными только для этого файла, но не для остальных файлов.

Так как я имею отношение к рассматриваемому вопросу, я думаю, что персональный словарь зарезервирован для слов, которые не знает главный словарь, но которые принадлежат этому языку (подобно перенесенным словам), плюс для некоторых общих слов, таких как имен собственных или других (таких как Linux), если они не выглядят слишком похоже на слова в главном словаре; добавление слишком большого количества слов в персональный словарь, таких как имена, может быть опасным, потому-что они могут выглядеть как слова текущего языка (некотрые могут представить, что Ispell был озадачен следующим предложением: `When the going gets tof, the tof get going

Tof это французское сокращение имени Christophe.

'!).



Проверка при наборе текста


Ispell может проверять ваш файл во время набора текста. Для этого вам необходимо использовать ispell-minor-mode. Для его запуска наберите Meta-x ispell-minor-mode. Ispell будет подавать звуковой сигнал, каждый раз когда вы набираете слово, которое он не знает.

Если эти сигналы раздражают вас (или ваш сосед по комнате лег отдохнуть), то вы можете заменить эти надоедливые сигналы на вспышку на экране с помощью команды Meta-x set-variable RET visible-bell RET t RET. Вы можете добавить следующую строку в в ваш файл .emacs и заглушить Emacs навсегда:

(setq visible-bell t)



Проверка вашего документа


Для проверки всего документа, используйте команду Meta-x ispell-buffer. Вы можете также проверить только выделенный блок текста:

Отметьте начало блока сочетанием Ctrl-Spc

(mark-set-command),

Перейдите в конец проверяемого блока,

наберите команду Meta-x ispell-region.

Затем Emacs запустит Ispell. Если Ispell встречает неизвестное слово, он покажет слово (обычно подсвеченное) и будет ожидать нажатие клавиши:

spc пропускает текущее слово

i считает слово правильным и вставляет в персональный словарь,

a считает слово правильным для текущего сеанса работы

A читает слово правильным и вставляет его в словарь данного файла

r позволяет вам исправить слово вручную

R позволяет вам исправить все вхождения неправильно написанного слова,

x останавливает проверку, и помещает курсор на стартовую позицию,

X останавливает проверку и оставляет курсор на текущей позиции, позволяя вам откорректировать ваш файл; вы сможете продолжить проверку, если вы введете команду Meta-x ispell-continue,

? дает оперативную справку.

Если ispell находит одно или несколько слов похожих на неизвестное, то он показывает их в маленьком окне, каждое из слов начинается с числа. Просто наберите это число для замены неправильного слова правильным.



Режим auto-fill


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

Если вы позволите некоторым строкам превысить разумную ширину, то вы не сможете просматривать их в некоторых редакторах.

Режим auto-fill автоматизирует эту скучную задачу: когда вы перейдете далее определенной колонки, (по умолчанию 70-ая), то вы автоматически перейдете на следующую строку.

Теперь расскажем как установить этот режим, и установить ширину текста равной 80 символам:

(setq sgml-mode-hook '(lambda () "Defaults for SGML mode." (auto-fill-mode) (setq fill-column 80)))



Режим PSGML


Режим PSGML позволит вам более удобно редактировать документы в SGML с помощью Emacs.

Документация объясняет как установить этот режим и использовать его вместе с LinuxDoc.



Режим SGML


При загрузке файла с расширением .sgml, Emacs автоматически запускает режим sgml. Если это не делается, вы можете задать это вручную набрав Meta-x sgml-mode, или автоматически, добавив следующие строки в ваш файл .emacs:

(setq auto-mode-alist (append '(("\.sgml$" . sgml-mode)) auto-mode-alist))

Этот режим позволит вам например, выбрать как вставлять 8-битные символы. С помощью Meta-x sgml-name-8bit-mode (или пункта меню SGML/Toggle 8-bit insertion), вы можете выбрать как печатать 8-битные символы-- как есть, или в форме SGML form, например в форме &...;.

Этот режим также позволит вам показывать или прятать таги SGML, с помощью Meta-x sgml-tags-invisible (или пункта меню SGML/Toggle Tag Visibility).



SGML


Standard Generalised Mark-up Language, или SGML, это язык для определения типов документов.

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

Это называется Document Type Definition (DTD, Определение типа документа). Оно не определяет как будет выглядеть заключительный результат, оно только определяет только что документ может содержать.

Мы используем тот же пример далее, я уверен, что вы примете мою идею, но у вас может быть свое видение. Тем не менее, они совершенно разные: мое видение представляется как ???? To use the same example again, I'm sure that upon reading my idea of a recipe, you recognised yours, or your favourite cook's. Nevertheless, they actually look different: mine have a picture in the upper left corner of the bathroom cupboard, and the ingredients list can be found in the back garden, between the swimming pool and the barbecue. Yours?

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



SGML-Tools


SGML-Tools превратят спецификацию документа в окончательный результат в выбранной вами форме. Если вы хотите поместить документ в вашу персональную библиотеку, вы выберете PostScript. Если вы хотите организовать доступ к нему через Web, то это будет HTML. Если вы не можете ничего сделать и должны читать его под Windows, вы можете преобразовать его в RTF, чтобы была возможность читать его любым текстовым процессором. Или можете использовать все три формата для отражения смены вашего настроения.

SGML-Tools доступны через анонимное FTP по адресу



Символы с диактрическими знаками


Если вы хотите писать документы на французском или на каком-то другом языке западной Европы, то вам необходимо использование восьмибитных символов. Здесь рассказывается как настроить Emacs, чтобы он воспринимал такие символы.



Версии


Этот документ рассказывает о следующих версиях продуктов:

Sgml-tools версии 0.99,

Emacs версии 19.34,

Ispell версии 3.1,

Все библиотеки Emacs на которые ссылаются в этом документе распространяются с вышеуказанной версией Emacs, кроме iso-sgml, которая распространяется с XEmacs, и psgml, которая является автономной библиотекой.



Вставка файла


Вы должны сначала заставить Emacs запустить auto-insert при открытии файла, затем считать библиотеку autoinsert, которая объявляет список auto-insert-alist, который необходимо изменить. Этот список определяет вставляемые заголовки для каждого типа файлов. По умолчанию, вставляемый файл должен находиться в директории ~/insert/, но можно переопределить переменную auto-insert-directory, если вы хотите поместить заголовки в другое место.

Добавьте следующие строки в ваш фал .emacs для вставки файла ~/emacs/sgml-insert.sgml при каждом открытии нового файла SGML:

(add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (setq auto-insert-directory "~/emacs/") (setq auto-insert-alist (append '((sgml-mode . "sgml-insert.sgml")) auto-insert-alist))

Затем вы можете написать файл ~/emacs/sgml-insert.sgml тот заголовок, который вам необходим, затем перезапустить Emacs и открыть какой-нибудь новый файл (например foobar.sgml). Emacs должен спросить у вас подтверждение автоматической вставки заголовка, и если вы ответите утвердительно, то он вставит заголовок.



Вставка заголовка автоматически


Emacs позволяет вам перехватить некоторые действия на любые события (открытие файла, сохранение, запуск в новом режиме и т.п.).

Библиотека autoinsert использует это свойство: когда вы открываете новый файл в Emacs, эта библиотека вставляет, соответственно типу файла некоторый стандартный заголовок.

В нашем случае этот стандартный заголовок, может содержать объявления типа документа (LinuxDoc), заголовок самого документа, имя автора, и дату.

Я здесь опишу два способа для вставки таких заголовков. Вы можете вставить файл шаблона, который содержит вставляемую информацию, или вы можете запустить процедуру на elisp.



Выбор специальных словарей для определенных файлов


У вас могут быть небольшие проблемы, если вы не все время используете проверку документов на одном и том же языке. Если вы переводите документ, то скорее всего, что вы очень часто меняете языки (и словари).

Я не знаю способа (на языке Lisp) выбора, либо автоматически, либо одним щелчком мыши, основного и персонального словаря ассоциированных с языком, который в настоящее время используется. (Если вы знаете как, пожалуйста сообщите мне!)

Однако, возможно показать в конце файла, какие словари вы хотите использовать для текущего файла (и только для него). Достаточно только добавить их как комментарий, так что Ispell сможет прочитать эти установки при запуске проверки:

<!-- Local IspellDict: english -->

<!-- Local IspellPersDict: ~/emacs/.ispell-english -->

Если вы первоначально определили в вашем файле .emacs, что вашим словарем по умолчанию является французский, то вы можете добавить эти строки в конец любого файла, написанного на английском языке.



Выбор ваших словарей по умолчанию


Вы можете установить Emacs так, что при загрузке файла он будет автоматически выбирать, который словарь использовать (вы можете использовать несколько). Первый из них, наверное самый важный, это главный словарь, распространяемый вместе с Ispell. Вы можете выбирать между несколькими языками. Второй словарь это ваш персональный словарь, куда Ispell будет вставлять слова, которые он не может найти в основном словаре, но вы требуете, чтобы он запомнил их.

Если вы хотите французский словарь Ispell как словарь по умолчанию, и хотите использовать файл .ispell-dico-perso в вашей домашней директории как личный словарь, то вставте следующие строки в ваш файл .emacs file:

(setq sgml-mode-hook '(lambda () "Defauts for SGML mode." (setq ispell-personal-dictionary "~/.ispell-dico-perso") (ispell-change-dictionary "francais") ))



Запуск программы


Этот метод работает почти как предыдущий, но вместо установки указателя auto-insert-alist на вставляемый файл, вам необходимо указать какую процедуру надо выполнить. Теперь как это работает, допуская, что вы хотите записать эту функцию в файл, названный ~/emacs/sgml-header.el. (нет необходимости перегружать ваш файл .emacs такими функциями, поскольку они могут долго не использоваться):

(add-hook 'find-file-hooks 'auto-insert) (load-library "autoinsert") (add-to-list 'load-path "~/emacs") (load-library "sgml-header") (setq auto-insert-alist (append '(((sgml-mode . "SGML Mode") . insert-sgml-header)) auto-insert-alist))

Вы найдете в разделе

пример функции insert-sgml-header.



Friedemann Baitinger, Русский перевод Ilgiz Kalmetev,


Последнее обновление :

v1.01, 11 February 1997 источник теперь в формате HTML, добавлена ссылка где можно найти 'cu' и ссылка, где можно найти mserver. В пример с 'cu' добавлен параметр '-s'.

v1.00, 06/12/97 первый релиз



Клиентская сторона


В настоящее время ниже описываются только Windows-клиенты. На клиентской машине нужно перенаправить COM-порт на TCP/IP. Лучшая программа, какая мне попадалась - 'DialOut/IP' от 'Tactical Software' для Windows 3.1 и Windows 95. (Версия для Windows 3.1 может быть использована под Windows NT только для 16-битных приложений. 32-битная версия для Windows NT вышла летом 1997.)

DialOut/IP представляет совместно используемый модем на новом виртуальном COM-порту. Программы видят этот виртуальный COM-порт как обычный модем. Большинство программ успешно работают с виртуальным COM-портом, за исключением тех, кому требуется доступ к UART и факс-приложений. DialOut/IP можно настроить для работы с telnet потоколом, но это применимо к конкретным модемным пуллам, но не к описываемой установке Linux. Заметьте, что не смотря на свое имя DialOut/IP можно использовать для приема входящих звонков.

На есть страница для скачивания полнофункциональной evaluation версии, которая работает 1-2 недели. Установка и настройка осуществляется программой setup, подробности читайте в файле README.TXT . При запуске DialOut/IP вам понадобится ввести IP адрес и номер порта совместно используемого модема.

DialOut/IP - коммерческий продукт, цена на который определяется в зависимости от количества модемов. По лицензии вы можете установить ПО на любое количество компьютеров, которые используют такие модемы.



для запуска Quicken на моем


Я использую настройки, описанные в (2) и (3) для запуска Quicken на моем Windows 95 ThinkPad и homebanking с модемом, подключенным к машине Linux. 'modem' в моем случае - это на самом деле эмулятор модема на карточке ISDN-So. Quicken выглядит как COM port, и никто не знает, что устройство, подключенное к COM-порту в действительности моя сеть Ethernet, и что это не обычный аналоговый модем, а устройство ISDN, которое понимает команды 'AT'.

Серверная сторона


Предполагается, что сервер - это Linux машина с одним из двух устройств:

модемом, включенным как устройство /dev/ttySx

модемом, эмулирующим 'isdn4linux', включенным как устройство /dev/ttyIx

Наиболее простая настройка, как мне кажется, это 'модем-демон' - пять строчек на perl.

$ cat /usr/sbin/modemd

#!/usr/bin/perl select((select(STDOUT), $| = 1)[$[]); select((select(STDIN), $| = 1)[$[]); exec 'cu -s 115200 -l /dev/ttyS1'; die '$0: Cant exec cu: $!\n';

Модем-демон запускается процессом INETD, если клиент подключается к соответствующему порту, как описано ниже. 'modemd' просто соединяет обработчик сокета с потоками STDIN и STDOUT команды 'cu' и разрешает 'cu' работать с модемом. если у вас нет 'cu', инсталлируйте пакет 'UUCP', 'cu' обычно входит в пакет 'UUCP'.

Процессу INETD надо дать знать о существовании modemd. Отредактируйте файл настроек, обычно это /etc/inetd.conf :

# # modem daemon # modem stream tcp nowait root /usr/sbin/tcpd /usr/sbin/modemd /dev/ttyS1

Чтобы это заработало, нужно добавить в '/etc/services' :

modem 2006/tcp modemd

Эта запись связывает символическую ссылку с указанным портом (2006) Номер порта должен быть любым незанятым другим сервисом.

После этих изменений надо перезапустить inetd, чтобы он перечитал сви настройки.

$ ps |grep inetd 194 ? S 0:00 /usr/sbin/inetd

$ kill -HUP 194

Серверная сторона готова к приему клиентов. Правильность настроек можно проверить:

$ telnet localhost modem

Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

Сейчас вы подключены к модему. Вы можете ввести команду 'AT' для проверки настройки:

atz atz OK

ati1 ati1 Linux ISDN OK

^] telnet>quit $

Вместо использования Perl-скрипта в качестве модемного сервера можно также использовать программу 'mserver'. Ее можно взять на . Если ссылка не работает, воспользуйтесь 'archie' или другим средством поиска. Пока что я не имел удовольствия ставить и использовать mserver.



машину для того, чтобы обеспечить


Этот mini-HOWTO описывает как установить Linux- машину для того, чтобы обеспечить совместный доступ к модему другим машинам в этой же сети TCP/IP.

Защита


Если у вас только один модем для всех хостов вашей LAN, то оснований для беспокойства нет. Однако если один или несколько хостов подключено к Internet через другие каналы связи, чем описываемый модемный сервер, тогда вам придется позаботиться о защите, потому что кто-нибудь может сделать 'telnet ваш_хост modem' и позвонить по междугородке или даже международке.

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