Задание на выполнение лабораторной работы
Написать простейший эмулятор командного процессора ОС Linux в среде ОС Windows на языке Delphi либо на C++. Созданный интерпретатор должен иметь возможность выполнять две команды в соответствии с вариантом.
Общие требования:
Реализовать возможность задания для команды сначала ключа потом параметра и наоборот, то есть команды:
ls –l *.exe и ls *.exe –l
должны выполняться одинаково.
Команда, параметр и ключ могут отделяться друг от друга как одним пробелом, так и несколькими, то есть команда может задаваться:
ls –l *.exe или ls -l *.exe
Внешний вид командной строки должен выглядеть следующим образом: bash$
При вводе любой команды кроме заданных должно выдаваться сообщение: 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.