Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСИ_Ведерников.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
259 Кб
Скачать
☆

Лабораторная работа № 7. Написание сценариев.

Цель: ознакомление с понятием “сценарии”. Научиться изменять права доступа к файлу. Использование параметров и составных команд. Научиться использовать циклы.

1. Создайте в домашнем каталоге подкаталог bin.

sergey@sergey-VirtualBox:~$ mkdir bin

  1. Выведите на экран значение переменной PATH и убедитесь, что она содержит созданный Вами каталог bin.

sergey@sergey-VirtualBox:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

  1. При помощи редактора vim создайте файл bin/s1.sh:

for file ; do

echo " ---- $file --- "

head -n 10 $file done

4. Измените права доступа к файлу. Для этого выполните команду chmod +x bin/s1.sh sergey@sergey-VirtualBox:~$ chmod +x bin/s1.sh - команда добавляет разрешение на выполнение файла.

5. Выполните сценарий следующим образом: sh s1.sh /home/labs/text.txt /home/labs/dao.txt

sergey@sergey-VirtualBox:~$ sh bin/s1.sh labs/text.txt labs/dao.txt

  1. Сохраните результат в файле отчёта.

sergey@sergey-VirtualBox:~$ sh bin/s1.sh labs/text.txt labs/dao.txt >>lab7.txt

labs/text.txt

1

2

3

4

5

6

7

8

9

10

labs/dao.txt

a

b

c

d

e

f

g

h

i

g

  1. Напишите сценарий, получающий в качестве первого аргумента имя каталога и выводящий список тех файлов из этого каталога, имена которых содержат последовательность симво­лов определенную вторым аргументом. Сценарий поместите в подкаталоге bin домашнего каталога и назовите s2.sh.

sergey@sergey-VirtualBox:~$ chmod +x bin/s2.sh

for file in $1/*$2*; do

echo " $file";

done

sergey@sergey-VirtualBox:~$ bin/s2.sh labs lab

labs/lab2.txt

labs/lab6.txt

labs/lab7.txt

8. Напишите сценарий, который выводит пронумерованный список файлов с расширением txt в текущем каталоге, ожидает от пользователя ввода номера файла, выводит первые десять строк заданного файла и повторяет цикл. Сценарий сохраните под именем list.sh в каталоге bin.

sergey@sergey-VirtualBox:~$ chmod +x bin/list.sh select name in labs/*.txt;

do head 10 $name;

done

sergey@sergey-VirtualBox:~$ bin/list.sh

1) labs/dao.txt 3) labs/lab6.txt 5) labs/text1.txt

2) labs/lab2.txt 4) labs/lab7.txt 6) labs/text.txt

#? 1

head: cannot open `10' for reading: No such file or directory

==> labs/dao.txt <==

a

b

c

d

e

f

g

h

i

g

#?

9. Встроенная команда интерпретатора read имя считывает строку со стандартного ввода и записывает её в переменную имя. Команда возвращает код завершения ноль если строка была успешно считана и код отличный от нуля если произошла ошибка или встретился конец файла. Напишите сценарий, который считывает строки со стандартного ввода и выводит их на стандартный вывод. (Используйте цикл while). Сценарий сохраните под именем s3.sh.

while read VAR;

do echo $VAR;

done

sergey@sergey-VirtualBox:~$ chmod +x bin/s3.sh

sergey@sergey-VirtualBox:~$ bin/s3.sh

I'm human

I'm human

^Z

[1]+ Stopped bin/s3.sh