- •Отчёт по лабораторным работам
- •Лабораторная работа №3. Простейшие команды для работы с текстом.
- •Лабораторная работа №4. Команды для управления процессами.
- •Лабораторная работа №5. Настройка оболочки
- •Лабораторная работа № 6. Работа с файловыми системами.
- •Лабораторная работа № 7. Написание сценариев.
- •Лабораторная работа №8. Настройка оболочки
- •Лабораторная работа № 10. Использование пакета OpenSsh.
Лабораторная работа №8. Настройка оболочки
Цель: ознакомится со специальными параметрами и условными операторами.
1. Проанализируйте файл labs/back.sh
sh -c "while true; do sleep 10; done" &
echo $!
2. В подкаталоге bin создайте файл case.sh:
case $1 in
start) if [ -f /tmp/back$UID.pid ] ;
then echo Alredy started
else /bin/back.sh >/tmp/back$UID.pid; \
echo Started: ‘cat /tmp/back$UID.pid‘
fi ;;
stop) if [ -f /tmp/back$UID.pid ] ; then \
kill -kill ‘cat /tmp/back$UID.pid‘ && echo Killed
rm /tmp/back$UID.pid
else echo Not started
fi ;;
status) [ -f /tmp/back$UID.pid ] \
&& echo Running: ‘cat /tmp/back$UID.pid‘ \ || echo Not running ;;
*) echo "usage: case.sh
{start|stop|status}"
esac
Выполните команду export UID
sergey@sergey-VirtualBox:~$ export UID
Запуск сценарий без аргументов и последовательно с аргументами status, start, status, start, stop, status, stop. Результат сохраняется в файле отчета.
sergey@sergey-VirtualBox:~/bin$ case.sh status >>lab8.txt
sergey@sergey-VirtualBox:~/bin$ case.sh start >>lab8.txt
sergey@sergey-VirtualBox:~/bin$ case.sh status >>lab8.txt
sergey@sergey-VirtualBox:~/bin$ case.sh start >>lab8.txt
sergey@sergey-VirtualBox:~/bin$ case.sh stop >>lab8.txt
sergey@sergey-VirtualBox:~/bin$ case.sh status >>lab8.txt
sergey@sergey-VirtualBox:~/bin$ case.sh stop >>lab8.txt
usage: case.sh
{start|stop|status} – вывелось в терминале
Not running
Started: ‘cat /tmp/back1000.pid‘
Running: ‘cat /tmp/back1000.pid‘
Alredy started - вывелось в файл отчёта
Killed
Not running
Not started
5. В подкаталоге bin создаём файл calc.sh:
res=$1
shift
while [[ $# -ge 2 ]] ; do
res=$(($res$1$2))
shift 2
done
echo $res
sergey@sergey-VirtualBox:~$ chmod +x bin/calc.sh
6. Запуск сценария следующими командами:
a) sergey@sergey-VirtualBox:~$ calc.sh 1 + 2 \* 3 + 3 / 4
3
b) sergey@sergey-VirtualBox:~$ calc.sh 1 + 2 \* 3
9
c) sergey@sergey-VirtualBox:~$ calc.sh 1 + 2\*3
7
d) sergey@sergey-VirtualBox:~$ calc.sh 1+2
1+2
7. Различия результатов в случаях b) и c):
Результаты различны из-за пробела после числа 2, стоящего в случае b).
8. Правка сценария так, чтобы в случае d) он выдавал результат 3.
res=$1
shift
while [[ $# -ge 2 ]] ; do
res=$(($res$1$2))
shift 2
done
if [ $# -lt 2 ]; then
res=$(($res))
fi
echo $res
sergey@sergey-VirtualBox:~$ calc.sh 1+2
3
9. Сценарий summ.sh выводящий сумму своих аргументов если первый аргумент +, произведение если первый аргумент и сообщение Usage: summ.sh +|* arguments ... в противном случае.
if [ $1 = "+" ]
then
echo $[$2+$3+$4]
elif [ $1 = "\\*" ]
then
echo $[$2*$3*$4]
fi
Лабораторная работа № 9. Базовые регулярные выражения. Редактор sed.
Цель: ознакомиться с базовыми, регулярными и расширенными регулярными выражениями редактора sed. Использование утилиты grep. Применение потокового редактора sed.
Скопируйте в домашний каталог файл /home/labs/text.txt
sergey@sergey-VirtualBox:~$ cp labs/text.txt text.txt
2. Выведите в файл отчета все строки файла text.txt содержащие слово "Благозвон". Добавьте к файлу отчета количество найденных строк.
sergey@sergey-VirtualBox:~$ grep –e Благозвон text.txt >>lab9.txt| grep –c –e Благозвон text.txt >>lab9.txt
3. Добавьте к файлу отчета все строки файла text.txt, которые начинаются с буквы "Б" (возможно после нескольких пробелов).
sergey@sergey-VirtualBox:~$ grep –e ^\s*Б text.txt >>lab9.txt
4. Добавьте к файлу отчета все непустые строки файла text.txt, не содержащие русскую букву "а" (в любом регистре).
sergey@sergey-VirtualBox:~$ grep -v -i a text.txt>>lab9.txt
Добавьте в файл отчета имена файлов каталога /home/labs, которые содержат слово "include".
sergey@sergey-VirtualBox:~$ find /home/labs -name include -type f>>lab9.txt
6. Используя редактор sed замените в файле text.txt все слова Снарк на СНАРК. Результат сохраните в файле snark.txt.
sergey@sergey-VirtualBox:~$ sed -e s/Снарк/СНАРК/g text.txt > snark.txt
7. При помощи sed выведите из файла /etc/passwd идентификаторы пользователей и их имена, разделенные символом табуляции
sergey@sergey-VirtualBox:~$ cat /etc/passwd | sed s/:x:/" "/ | sed s/:[0-9]*.*// |sed s/.*/\&\ \$/ | sed s/"[a-z]*"// | sed s/"[0-9]*$"// | sort -g>>lab9.txt
Вывелось:
0 root
1 daemon
2 bin
3 sys
4 sync
…
1000 user
8. Составьте алгоритм для sed, который будет менять местами каждые два слова файла.
файл sed.sh:
#!/bin/sed –nf
h
n
G
p
Запускаем sed.sh:
sergey@sergey-VirtualBox:~$ sed -f bin/sed.sh
9. Сценарий для редактора sed, который добавляет:
В начало файла строку "<html><body>".
В начало всех строк начинающихся словом "Приступ" строку "<H2>", а в конец строку "</H2>".
В конец всех остальных строк "<br>".
К концу последней строки "</body></html>"
Сценарий sed:
s/.*/&<br>/
1 s/^/<html><body>\n/
$ s/$/\n<\body><\html>/
s/^Приступ.*/<H2>&<\H2>/
s/<\/br><\H2>/<\H2>/
sergey@sergey-VirtualBox:~$ sed -f bin/sed1.sh bin/pr.html
