ТОП 10:

Автоматична служба нагадування та шифрування



Команда calendar проглядає файл calendar в поточному каталозі і видає на стандартне виведення рядка, містячі (у довільному місці) сьогоднішню або завтрашню дату. Розпізнаються більшість форм завдання дати, наприклад, "Aug. 17", "august 17", "8/17" і т.д., але не "17 August" або "17/8". Перед вихідними днями "завтра" означає дні аж до понеділка включно.Якщо заданий необов'язковий аргумент, команда calendar шукає файли з ім'ям calendar у всіх вхідних каталогах користувачів і посилає знайдені рядки користувачам через поштовий зв'язок mail(1). Звичайно ця операція робиться щодня, завдяки можливостям операційної системи UNIX.

За допомогою автоматичної служби нагадування виконати запис важливих наступних подій:

à вивести календар вказаного місяця;

à створити текстовий файл, який зберігає секретну інформацію. Зашифрувати цей файл;

à передати окремо зашифрований файл та ключ іншому користувачу;

à виконати прийом розшифрованого файлу, та виконати порівняння отриманої та переданої інформації.

cal 10 2010 #виведення календаря 10 місяця 2010 року

enigma < source.txt > ecrypt.crt #перший спосіб шифрування

bdes < source.txt > bcrypt.crt #другий спосіб шифрування

crypt < source.txt > ccrypt.crt #третій спосіб шифрування

Розшифрування виконується аналогічним чином, але з використанням ключів, введених при шифруванні

diff source.txt decrypt.txt #порівняння файлів

Команди редактора ed

Виклик редактору виконується:

ed aaa.txt (натиск клав. введення) --- вхід в даний редактора

Для запису у файл потрібно спочатку ввійти в редактора поставити а ту ввести потрібну інформацію, перед виходом обов’язково треба інформацію зберегти

w aaa.txt (натиск клав. введенню)

В загальному випадку команди редактора ed складаються з імені команди, якому можуть передувати один або два номери рядків, і після якого для команд "е", "r" і "w" може указуватися ім'я файлу. В рядку може бути присутній тільки одна команда, проте команда "р" може слідувати після будь-якої іншої команди, окрім "е", "r", "w" і "q".

а - Дописати рядки в буфер редактора після поточного рядка (якщо не заданий інший рядок). Дозапис продовжується до тих пір, поки не буде введена команда ".<CR>". Поточним стає останній дописаний рядок. В цій команді допускається адреса "О", при цьому текст поміщається в початок буфера.

с - Замінити вказані рядки новим текстом, наступним після команди "с". Введення нових рядків завершується ".<CR>". Якщо номери рядків в команді не вказані, замінюється поточний рядок. Поточним стає останній замінений рядок або (якщо рядків заміни не було) рядок, передуючий видаленим рядкам.

d - Видалити вказані рядки. Якщо номери рядків не задані, віддаляється поточний рядок. Поточним стає перший невидалений рядок, крім випадку, коли віддаляється останній рядок буфера. В цьому випадку поточним стає новий останній рядок буфера.

е - Редагування нового файлу. Попередній вміст буфера втрачається, так що заздалегідь корисно ввести команду "w". Поточним стає останній рядок буфера.

Е - Команда виконує ті ж дії, що і "е", за винятком того, що не видається повідомлення, якщо після останньої зміни буфера не була видана команда запису "w".

f - Видати поточне ім'я файлу. Якщо після команди "г" указується ім'я файлу, поточне ім'я файлу буде замінено цим ім'ям.

g - Конструкція "g/re/команди" виконує вказані "команди" над тими рядками, які відповідають зразку "re".

i - Вставити рядки перед вказаним рядком (або рядком, визначуваною крапкою). Вставка завершується командою ".<CR>". Поточним стає останній вставлений рядок.

j - Об'єднати вказані рядки в один рядок. Якщо рядки не вказані, об'єднуються поточний і наступний за нею рядки.

до - Відзначити рядок (вказану або поточну) маркером, задається після "k". Як маркер використовуються рядкові латинські букви.

l - Роздрукувати рядки. Команда "l" еквівалентна команді "р", проте вона роздруковує символи, що графічно не відображаються, і "згортає довгі рядки".

m - Помістити вказані рядки після рядка, що задається після "т". Поточним стає останній переміщений рядок.

р - Видати вказані рядки. Якщо рядки не вказані, роздруковується поточний рядок. Окремий номер рядка еквівалентний команді" (номер_рядка)р". Просте натиснення клавіші <CR> роздруковує наступний рядок.

q - Вихід з редактора. Якщо при цій операції втрачається інформація (наприклад, копія початкового файлу змінювалася, але не була видана команда запису "w"), після першої команди "q" видається підказка "?" і ніяких дій не проводиться. Видача підряд двох команд "q" без попередньої команди "w" приводить до стирання буфера і закінчення роботи з редактором.

Q - Працює так, як команда "q" за винятком того, що вихід проводиться негайно (без якої-небудь діагностики про можливу втрату інформації).

r- Прочитати файл в буфер (в кінець буфера, якщо не вказано по-іншому). Поточним стає останній лічений рядок.

s - Команда s/xxx/yyy/ підставляє замість символів "ххх символи" "ууу" у вказаних рядках. Якщо рядки не вказані, підстановка виконується в поточному рядку. Поточним стає останній рядок, в якому відбулася підстановка, це приводить до збереження початкового положення, якщо не була виконана жодна підстановка. Команда "s" замінює тільки перше входження "ххх" в рядку. Для заміни всіх входжень після завершальної дробової межі указується символ "g".

t - Скопіювати вказані рядки після рядка, що задається після "t". Поточним стає останній скопійований рядок.

u - Анулювати зміну, виконану попередньою командою.

v - Конструкція "v/re/команди" виконує вказані "команди" над тими рядками, які не відповідають зразку "re".

w - Записати буфер у файл. Значення покажчика поточного рядка не змінюється.

W - Аналогічна команді "w", за винятком того, що вказані рядки дописуються до файлу.

х - Робота в режимі шифрування. Запрошується ключ, використовуючи який подальші команди "г", "е" і "w" зашифровуватимуть і розшифровуватимуть текст. Порожній ключ відміняє режим шифрування.

.= - Видати поточний номер рядка (один символ "=" друкує номер останнього рядка).

! - Конструкція "!командний_рядок" викликає виконання "командного_рядка інтерпретатором" команд.

/re/ - Контекстний пошук. Пошук наступного рядка, який містить дану послідовність символів, і її видача. Поточним стає рядок, відповідний заданому зразку "re". Пошук починається з рядка ".+1" до "$", після останнього рядка переходить до рядка 1 і, при необхідності, триває до поточного рядка.

?re? - Контекстний пошук у зворотному напрямі. Пошук починається з рядка 1 і триває до останнього рядка.

.(крапка) - Позначення поточного рядка.

$ - Позначення останнього рядка.

'х' - Позначення рядка, раніше відзначеної маркером "х".

Об'єднання файлів

Припустимо, що у файлі "filel" зразу ж після слів "текст..." вимагається вставити "file2".

Для цього необхідно викликати редактора для фала "filel", знайти символи "текст..." і додати в це місце файл "file2":

ed filel

/текст.../

текст... (відповідь редактора)

.r file2

Команда "r" без адрес додає читані рядки в кінець, тобто працює аналогічно "$г".

Розбиття файлу

Припустимо, що потрібно виділити в окремий файл деяку таблицю, щоб її можна було окремо форматувати і перевіряти.

.TS

... (вміст)

.ТЕ

Для виділення цієї таблиці в окремий файл з ім'ям "table" в першу чергу потрібно знайти початок цієї таблиці (рядок "TS"), а потім записати відповідний фрагмент у файл:

/^\.TS

.TS (редактор друкує знайдений рядок)

.,/^\.TE/w table

В результаті цього поставлена мета буде досягнута. Можна виконати все це і в одній команді:

/^\.TS/;/^\.TE/w table

Річ у тому, що команда "w" може виконувати запис не всього файлу, а деякої групи рядків. При бажанні можна записати навіть один рядок, для цього треба задати один номер рядка замість двох.

Копіювання рядків тексту (t)

Команда копіювання "t" аналогічна команді "т", за винятком того, що блок тексту не віддаляється, а копія цього блоку поміщається після вказаного рядка тексту.

Формат команди:

[n[, k]]tl<CR>

де n, k - номери початкового і кінцевого копійованих рядків; якщо вказане тільки n, то копіюється один рядок з номером n; якщо номер рядка не вказаний, то копіюється поточний рядок;

t - команда копіювання;

l - номер рядка, після якого треба помістити рядки з номерами від "n" до "k" включно.

Командні файли редактора

Якщо достатньо складний набір операцій редагування повинен бути виконаний над багатьма файлами, це простіше всього зробити шляхом створення командного файлу редактора, що містить потрібні операції, і подальшого застосування цього командного файлу по черзі до всіх файлів.

Припустимо, наприклад, що потрібно замінити кожне слово "версія1" на "версiя2" і кожне слово "1985" на "1986" у великій кількості файлів. Помістимо у файл "list" наступний рядки:

g/версія 1 /s//версія2/g

g/1985/s//1986/g

w

q

після цього можна скористатися командами:

ed filel < list

ed file2 < list

Це приведе до тому, що редактор ed одержуватиме команди з раніше приготованого файлу. В цьому випадку вся робота повинна плануватися наперед.

За допомогою інтерпретатора команд системи можна більш менш легко проглянути набір файлів циклічно.

Перегляд файлу

Редактор запам'ятовує останній рядок, з яким проводилися які-небудь дії, так що вона може використовуватися без явної вказівки номера рядка. Посилання на цей рядок проводиться з допомогою

символу".".

Крапка позначає номер поточного рядка. Її можна використовувати різними способами. Зокрема, можна ввести:

. $р

це приведе до роздрукування всіх рядків від поточного рядка до кінця буфера включно.

Крапка найбільш корисна при використовуванні в комбінаціях наступного вигляду:

.+1 (або, те ж саме.+lp)

це означає "надрукувати наступний рядок" і є зручним способом повільного перегляду буфера. Можна також ввести команду:

.-1 (або.-lp)

що означає "роздрукувати рядок перед поточним рядком". Це дозволяє, при бажанні, рухатися назад.

Ще однією корисною командою є команда вигляду:

.-3,.-1р

яка роздруковує три попередні рядки.

Необхідно пам'ятати про те, що обидві команди друку "р" і "1" змінюють номер поточного рядка. Можна у будь-який час взнати її значення, ввівши:

.=

редактор відповість друком значення номера поточного рядка.

Команда вставки рядків (i)

Дана команда використовується для вставки в текст рядків, що вводяться з терміналу.

Формат команди:

[n]i<CR>

де n - номер рядка в буфері редактора, перед якою треба вставити нові рядки. Якщо "n" відсутній, то рядки вставляються перед поточним рядком. Введення нових рядків з терміналу завершується символом "." в першій позиції.

Поточним рядком після виконання команди "i" стає останній вставлений рядок.

Приклад використовування команди "i" для вставки 3-х рядків перед 7-й рядком:

Приклад.

7i<CR>

рядок 1<CR>

рядок 2<CR>

рядок 3<CR>

.<CR>

Команда видалення рядків (d)

Дана команда призначена для видалення одній або групи рядків в буфері редактора.

Формат команди:

[n[, k]]d<CR>

де n, k - номери початкового і кінцевого рядків, що видаляються.

Команді "d" може передувати один або два номери рядка, гріли номер не заданий, то редактор видаляє поточний рядок.

Якщо заданий номер тільки одного рядка, то віддаляється вказана строка,' поточної стає рядок, наступний за видаленою.

Якщо задано два номери рядка, то віддаляються всі рядки у вказаному інтервалі від n до k включно.

Поточним рядком завжди стає рядок, наступний за останнім видаленим рядком, крім випадку, коли віддаляється останній рядок буфера. В цьому випадку поточним стане останній рядок буфера.

Приклад.

4 $d

видалення з буфера рядків з 4-й по останню включно. В буфері після виконання команди залишиться 3 першого рядка. Поточним рядком стане третій рядок буфера.

Команда пошуку контексту

Ця команда призначена для пошуку рядка, що містить заданий символ, групу символів або групу слів.

Конструкція /.../

Формат команди:

/текст/

де "текст" - шуканий текст.

Редактор проглядає буфер, починаючи з рядком ".+1" (тобто наступної за поточною), йде до кінця буфера, потім продовжує польок з першого рядка буфера і до поточного рядка включно. При виявленні рядка із заданим текстом редактор роздруковує її, і цей рядок стає поточним.

У разі відсутності в буфері шуканого тексту редактор повертається до поточного рядка і друкує символ "?". Приклад.

/lop/

знайти в буфері рядок, послідовність символів "lop", що містить.

Команда пошуку в комбінації з іншими командами ("a", "i", "s", "t", "m") може успішно використовуватися для вказівки необхідного рядка.

Приклади.

/lop/s//loop/p

знайти рядок, що містить слово "lop", і замінити його на "loop", потім роздрукувати цей рядок;

/текст/i

пошук рядка, що містить вказаний текст, і вставка перед знайденим рядком.

В команді "s" шуканий текст в лівій частині можна не указувати.

Конструкція ?...?

Редактор проводить пошук не тільки в прямому, але і у зворотному напрямі. Для цього в команді пошуку замість символу "/" використовується символ "?":

?текст?

Це зручно у випадку, якщо при редагуванні тексту необхідно повернутися назад.

Продовження пошуку.

Якщо при пошуку рядка з шуканим текстом виявилося, що це не той рядок, то для продовження пошуку потрібно задати команду у вигляді:

// - продовжити пошук в прямому напрямі;

?? - продовжити пошук у зворотному напрямі.

Команда заміни (s)

Команда заміни "s" призначена для зміни окремих слів або символів в межах одного рядка або групи рядків.

Загальний формат команди:

[n[, k]]s/х/у/[команда]<СК>

де х - група символів або слів в рядку, які треба замінити (старий текст);

у - група символів або слів, які замінюють старе значення, вказане як "х" (новий текст);

n, k - номери початкового і кінцевого рядків буфера, в межах яких здійснюється заміна;

/команда - одна з наступних 4-х команд:

g - замінити кожну появу групи символів (х) в кожному вказаному рядку;

l - відобразити останній рядок заміненого тексту, включаючи недруковані символи;

n - відобразити останній рядок заміненого тексту, разом з номерами рядків;

р - відобразити останній рядок заміненого тексту.

Якщо номери рядків не вказані, заміна здійснюється в поточному рядку. Якщо вказаний номер тільки одного рядка, то заміна проводиться тільки в одному рядку.

Для реалізації заміни в групі рядків треба вказати номери початкового (n) і кінцевого (k) рядків, в межах яких треба провести заміну.

Контрольні питання:

1. Як працює автоматична служба нагадування та шифрування?

2. Як здійснюється виклик редактору ed?

3. Як виконується об’єднання файлів?

4. Як виконується розбиття файлів?

5. Як виконується копіювання рядків?

6. Що таке командні файли редактору.

7. Як виконується перегляд файлів.

8. Як виконується видалення рядків.

9. Як виконується пошук контексту?

10. Як виконується заміна?

 

Література:

1. Болл Билл Освой самостоятельно Linux за 24 часа, 2-е издание. : Пер. с англ. : Уч. пос. – М. : Издательский дом «Вильямс», 2000. – 480 с.: ил. – Парал. тит. англ., стор. 75-98.

2. Паркер Тим. Linux 5.2. Энциклопедия пользователя: Пер. с англ./Тим Паркер – К.: Издательство «ДиаСофт», 1999. – 688 с., стор. 110-124.

 

Лабораторна робота № 9

Тема:Обробка даних.Редактор vi.

Мета:Ознайомитись з редактором vi.

Завдання:

1. Створити файл за допомогою редактора vi.

2. Виконати дії по позиціювання курсору.

3. Виконати дії по редагуванню тексту.

4. Виконати дії по вставці тексту у файл.

5. Виконати дії по видаленню тексту з файлу.

6. Виконати дії по пошуку заданих символів у файлі.

7. Виконати дії по заміні заданих символів у файлі

8. Виконати дії по копіюванню тексту.

Обладнання та матеріали: Операційна система LINUX, ПК, редактор vi, методичні вказівки до лабораторних робіт.

Хід роботи:

1. Ознайомитись з теоретичними відомостями.

2. Запустити редактор vi.

3. Створити файл.

4. Виконати позиціонування курсору.

5. Виконати редагуванню тексту.

6. Провести пошук та заміна символів у тексті файлу.

7. Здійснити копіювання.

8. Оформити та захистити звіт лабораторної роботи.

 

Теоретичні відомості

Текстовий редактор — один з найважливіших інструментів, які пропонує операційна система Linux (як, в єстві, і будь-хто інша). За допомогою редактора можна створювати і змінювати текстові файли, що широко використовуються як:

· Файли користувача, такі як .login і .cshrc

· Системні файли

· Програми командного інтерпретатора

· Документи

· Поштові повідомлення

Одними з найпопулярніших редакторів для системи Linux є vi. Він повноекранні; простіше кажучи, в ньому використовується кожний рядок і стовпець екрану терміналу для відображення текстового вмісту файлу. Має багатий набір команд.

Читання і запис файлів

Оскільки створювані текстові файли необхідно зберігати для подальшого використовування, редактор може записувати текст в зовнішній файл. У будь-який момент, коли потрібно внести зміни у файл, редактор може рахувати файл з диска. Чудово, що текстові редактори розроблені так, щоб обробляти файли в ASCII-форматі, так що редактор (наприклад, emacs) може прочитати будь-який файл, записаний іншим редактором (наприклад, vi), і навпаки.

Пошук тексту

Самостійний перегляд рядка за рядком у пошуках окремого слова — непоганий спосіб потренувати здатність концентруватися або різновид самобичування. От чому текстові редактори пропонують різні можливості пошуку. Сюди входить як використовування регулярних виразів (шаблонів), так і фіксованих рядків. Регулярні вирази включають метасимволи (такі як . ? і *), які замінюють невідомі фрагменти тексту.







Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.233.220.21 (0.02 с.)