Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Слова 2. 8 слов итого: 3 строки 10 слов

Поиск

6. Программа, подсчитывающая количество символов с одинаковыми кодами ASCII в текстовом файле. Результаты подсчёта записываются в другой текстовый файл (имена файлов передаются в качестве аргументов командной строки при запуске программы). Пример вывода программы для текстового файла:

QWER REEEt WE E EEE EER SI I IO NN

файл, полученный в результате работы программы:

1. Q код ASCII 41 =1

2. W код ASCII 42 =2

3. E код ASCII 42 =11

Итого: 25 символов

 

Лабораторная работа №2

Управление ОС Linux с помощью интерпретатора BASH

Цель работы – исследовать основные объекты, команды, типы данных и операторы управления интерпретатора BASH; создать скрипт-файл.

Теоретическая часть

Bash - это sh -совместимый интерпретатор командного языка, выполняющий команды, прочитанные со стандартного входного потока или из файла. Скрипт-файл – это обычный текстовый файл, содержащий последовательность команд bash, для которого установлены права на выполнение. Пример скрипта, выводящего содержимое текущего каталога на консоль и в файл:

#!/bin/bash

Dir

dir > 1.txt

Следующие переменные используются командным интерпретатором.

$0,$1,S2,$3… Значения аргументов командной строки при запуске скрипта. Где $0 -имя самого файла скрипта, $1 - первый аргумент, $2 - второй аргумент, и т.д.  
$@ Все аргументы командной строки, каждый в кавычках  
$? Код возврата последней команды
     
     
           

Пример простого скрипта, выводящего на консоль и в файл содержимое каталога, где имя каталога передаётся скрипту в качестве аргументов при запуске:

Запуск скрипта: >./mydir/home/stud

Скрипт:

#!/bin/bash

dir $1

dir $1 > 1.txt

Можно создать собственную переменную и присвоить ей значение:

A=121

A=”121”

let A=121

let “A=А+1”

Вывод значения на консоль: echo $A

Проверка условия: test[expr]

где expr: а) для строк: S1 = S2S1 содержит S2

S1 != S2S1 не содержит S2

-n S1 если длина S1 >0

-z S1 если длина S1 =0

б) целые i1 и i2

i1 – ge i2

i1 – gt i2

i1 – ie i2

i1 – et i2

i1 – nt i2

в) файлы

-d name_file является ли файл каталогом

-f name_file является ли файл обычным файлом

-r name_file доступен ли файл для чтения

-s name_file имеет ли файл ненулевую длину

-w name_file доступен ли файл для записи

-x name_file является ли файл исполняемым

г) логически операции

!exp логическое отрицание (не)

exp1 –a exp2 умножение условий (и)

exp1 –o exp2 сложение условий (или)

Проверка условия: if [expr ]

then com 1 Если условие expr=true то команда

… com 1… com n

Com n

(elif expr2

Com1

Com n

)

Else

Com 1

Com n

fi

Проверка нескольких условий: case string1 in

Str 1)

Com 1

Com n

;;

Str 2)

Com 1

Com n

;;

Str 3)

Com 1

Com n

;;

*) // default

Com 1

Com n

;;

Esac

Функция пользователя: fname2 (arg1,arg2...argN)

{
commands
}

Организация циклов:

1. for var1 in list

do

Com1

Com n

Done

2. while exp

Com1

Com n

End

3. until exp // аналог do-while

do

Com1

Com n

Done

Порядок выполнения работы

1. Изучить теоретическую часть лабораторной работы.

2. Написать скрипт, выводящий на консоль и в файл все аргументы командной строки.

3. Написать скрипт, выводящий в файл (имя файла задаётся пользователем в качестве первого аргумента командной строки) имена всех файлов с заданным расширением (третий аргумент командной строки) из заданного каталога (имя каталога задаётся пользователем в качестве второго аргумента командной строки).

4. Написать скрипт, компилирующий и запускающий программу (имя исходного файла и exe- файла результата задаётся пользователем в качестве аргументов командной строки). В случае ошибок при компиляции вывести на консоль сообщение об ошибках и не запускать программу на выполнение.

 

Варианты индивидуальных заданий

 

1. Написать скрипт для поиска файлов заданного размера в заданном каталоге (имя каталога задаётся пользователем в качестве третьего аргумента командной строки). Диапазон (мин.- мах.) размеров файлов задаётся пользователем в качестве первого и второго аргумента командной строки.

2. Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подкаталогах (имя каталога задается пользователем в качестве первого аргумента командной строки).

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

4. Написать скрипт поиска одинаковых по их содержимому файлов в двух каталогов, например, Dir1 и Dir2. Пользователь задаёт имена Dir1 и Dir2 в качестве первого и второго аргумента командной строки. В результате работы программы файлы, имеющиеся в Dir1, сравниваются с файлами в Dir2 по их содержимому. На экран выводятся число просмотренных файлов и результаты сравнения.

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

6. Написать скрипт находящий в заданном каталоге и всех его подкаталогах все файлы, заданного размера в заданном каталоге (имя каталога задаётся пользователем в качестве третьего аргумента командной строки). Диапазон (мин.- мах.) размеров файлов задаётся пользователем в качестве первого и второго аргумента командной строки. Имя владельца и каталог задаются пользователем в качестве первого и второго аргумента командной строки. Скрипт выводит результаты поиска в файл (четвертый аргумент командной строки) в виде полный путь, имя файла, его размер. На консоль выводится общее число просмотренных файлов.

7. Написать скрипт подсчитавающий суммарный размер файлов в заданном каталоге и всех его подкаталогах (имя каталога задаётся пользователем в качестве аргумента командной строки). Скрипт выводит результаты посдчета в файл (второй аргумент командной строки) в виде католог(полный путь), суммарный размер файлов число просмотренных файлов.

 

Лабораторная работа №3

Основные принципы программирования в ОС LINUX

Цель работы – изучение файловой системы ОС Linux и основных функций для работы с каталогами и файлами.

Теоретическая часть

Каталоги в ОС Linux –это особые файлы. Для открытия или закрытия каталогов существуют вызовы:

#include <dirent.h> DIR *opendir (const char *dirname); int closedir(DIR *dirptr); Для чтения записей каталога существует вызов: struct dirent *readdir(DIR *dirptr); Структура dirent такова: struct dirent { long d_ino; off_t d_off; unsigned short d_reclen; char d_name [1]; }; Поле d_ino - это число, которое уникально для каждого файла в файловой системе. Значением поля d_off служит смещение данного элемента в реальном каталоге. Поле d_name есть начало массива символов, задающего имя элемента каталога. Данное имя ограничено нулевым байтом и может содержать не более MAXNAMLEN символов. Тем самым описываемая структура имеет переменную длину, хранящуюся в поле d_reclen. Пример вызова: DIR *dp; struct dirent *d; d=readdir(dp); При первом вызове функция readdir в структуру dirent будет считана первая запись каталога. После прочтения всего каталога в результате последующих вызовов readdir будет возвращено значение NULL. Для возврата указателя в начало каталога на первую запись существует вызов: void rewindir(DIR *dirptr); Чтобы получить имя текущего рабочего каталога существует функция: char *getcwd(char *name, size_t size);

Порядок выполнения работы

 

1. Изучить теоретическую часть работы.

2. Написать программу вывода на экран содержимого заданного пользователем каталога. Вывести с использованием программы содержимое текущего и корневого каталога. Предусмотреть контроль ошибок открытия, закрытия, чтения каталога. Вывод сообщений об ошибках должен производиться в стандартный поток вывода сообщений об ошибках (stderr) в следующем виде: имя_модуля текст_сообщения.

 

Варианты индивидуальных заданий

Должен быть контроль ошибок для всех операций с файлами и каталогами.

1. Отсортировать в заданном каталоге (аргумент 1 командной строки) и во всех его подкаталогах файлы по следующим критериям (аргумент 2 командной строки, задаётся в виде целого числа):1 – по размеру файла, 2 – по имени файла. Записать отсортированные файлы в новый каталог (аргумент 3 командной строки).

2. Найти в заданном каталоге (аргумент 1 командной строки) и всех его подкаталогах заданный файл (аргумент 2 командной строки). Вывести на консоль полный путь к файлу имя файла, его размер, дату создания, права доступа, номер индексного дескриптора. Вывести также общее количество просмотренных каталогов и файлов.

3. Для заданного каталога (аргумент 1 командной строки) и всех его подкаталогов вывести в заданный файл (аргумент 2 командной строки) и на консоль имена файлов, их размер и дату создания, удовлетворяющих заданным условиям: 1 – размер файла находится в заданных пределах от N1 до N2 (N1,N2 задаются в аргументах командной строки), 2 – дата создания находится в заданных пределах от M1 до M2 (M1, M2 задаются в аргументах командной строки).

4. Найти совпадающие по содержимому файлы в двух заданных каталогах (аргументы 1 и 2 командной строки) и всех их подкаталогах. Вывести на консоль и в файл (аргумент 3 командной строки) их имя, размер, дату создания, права доступа, номер индексного дескриптора.

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

6. Написать программу, находящую в заданном каталоге и всех его подкаталогах все файлы, заданного размера в заданном каталоге (имя каталога задаётся пользователем в качестве третьего аргумента командной строки). Диапазон мин. мах. размеров файлов задаётся пользователем в качестве первого и второго аргумента командной строки. Имя владельца и каталог задаются пользователем в качестве первого и второго аргумента командной строки. Программа выводит результаты поиска в файл (четвертый аргумент командной строки) в виде полный путь, имя файла, его размер. На консоль выводится общее число просмотренных файлов.

 

Лабораторная работа №4



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 1011; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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