Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ос.лаба 3.doc
Скачиваний:
181
Добавлен:
11.11.2019
Размер:
71.68 Кб
Скачать

Задание на выполнение лабораторной работы

Написать простейший эмулятор командного процессора ОС Linux в среде ОС Windows на языке Delphi либо на C++. Созданный интерпретатор должен иметь возможность выполнять две команды в соответствии с вариантом.

Общие требования:

  1. Реализовать возможность задания для команды сначала ключа потом параметра и наоборот, то есть команды:

ls –l *.exe и ls *.exe –l

должны выполняться одинаково.

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

ls –l *.exe или ls -l *.exe

  1. Внешний вид командной строки должен выглядеть следующим образом: bash$

  2. При вводе любой команды кроме заданных должно выдаваться сообщение: bash: command not found

Вариант 1. Реализовать команды ls и exit. Команда ls должна выполняться как без ключей, так и с ключами –l, -1. Без ключа команда ls должна выводить на экран только перечень файлов указанного каталога. С ключом –l команда ls должна выводить на экран перечень файлов указанного каталога, их размеры, дату и время создания. С ключом -1 команда ls должна выводить только перечень файлов указанного каталога по одному в каждой строке. Команда exit служит для выхода из программы. Более подробно о команде ls можно прочитать, набрав в командной строке ОС Unix команду: man ls.

Вариант 2. Реализовать команды cat и exit. Команда cat должна выполняться как без ключей, так и с ключом –s; Более подробно о команде cat можно прочитать, набрав в командной строке ОС Unix команду: man cat.

Вариант 3. Реализовать команды egrep и exit. Команда egrep должна выполняться как без ключей, так и с ключами –b, -c; Более подробно о команде egrep можно прочитать, набрав в командной строке ОС Unix команду: man egrep.

Вариант 4. Реализовать команды wc и exit. Команда wc должна выполняться как без ключей, так и с ключами –w, -c, -l; Более подробно о команде wc можно прочитать, набрав в командной строке ОС Unix команду: man wc.

Вариант 5. Реализовать команды cmp и exit. Команда cmp должна выполняться как без ключей, так и с ключом –l; Более подробно о команде cmp можно прочитать, набрав в командной строке ОС Unix команду: man cmp.

Рекомендации к выполнению лабораторной работы (для реализации в среде Delphi).

Разработанный программный продукт должен работать как консольное приложение. Для этого необходимо создать проект в Delphi для написания консольного приложения (Console Application ).

При создании программы целесообразно использовать следующие функции модуля SysUtils: FindFirst, FindNext, FindClose, DateTimeToStr, FileDateToDateTime. Читайте документацию по этим функциям.

Функция FindFirst(‘*.*’, FileAttrs, sr) выполняет поиск файлов и имеет три параметра: маска поиска (например *.*), атрибут искомых файлов, результат поиска в виде структуры TSearchRec (читайте по ней документацию), которая содержит время создания файла, его размер, атрибуты, имя и др. Например вызов функции FindFirst(‘*.*’, 0, sr) позволит найти все файлы в текущем каталоге, результат поиска будет в переменной sr, тип которой TSearchRec. Пример применения функции FindFirst можно найти и в помощи Delphi – наберите FindFirst и нажмите CTRL-F1.

Пример выполнения функции FindFirst:

if FindFirst('*.*', FileAttrs, sr) = 0 then

begin

repeat

writeln(sr.Name);

until FindNext(sr) <> 0;

end;

FindClose(sr);

Дата и время создания файла будет записано в sr.time. Для придания понятного вида даты и времени создания файла используйте функции DateTimeToStr и FileDateToDateTime.

Пример реализации командной строки, выполняющей команду exit:

uses

SysUtils;

Var

com:string;

exit:boolean;

begin

repeat

exit:=false;

write('bash$');readln(com);

if (com='exit') then exit:=true;

if (exit=false) and (com<>'') then writeln('bash: ', com, ' : command not found');

until exit=true;

end.