Работа с текстовыми редакторами, процессами и файловыми системами
Министерство
Образования и науки Российской Федерации
"Уральский
федеральный университет"
Физико-технологический
институт
кафедра
Вычислительной техники
"Операционные
системы"
студент группы ФТ-110802: Шипигусев А.А.
Екатеринбург
Лабораторная работа №1. Изучение основных команд
для работы с файлами
Цель: Ознакомиться с:
основными функциями для работы с файлами.
Основами работы с командным интепретатором
слово.
Ход работы:
1) Вход в систему под выданной пользовательской
учетной записью.
rmpg3
2) Создание в домашнем каталоге файла
отчета с именем lab1.txt при помощи команды touch:
rmpg3@rmpg3-Satellite-L40:~$ touch lab1.txt
3) Просмотр значений переменных окружения
при помощи команды set:
rmpg3@rmpg3-Satellite-L40:~$ set
4) Вывод в файл lab1.txt значений
переменных окружения PATH, LANG, HOME:
rmpg3@rmpg3-Satellite-L40:~$ echo
PATH=$PATH>>lab1.txt@rmpg3-Satellite-L40:~$ echo
LANG=$LANG>>lab1.txt@rmpg3-Satellite-L40:~$ echo
HOME=$HOME>>lab1.txt
5) Просмотр полученного файла при помощи
команды less:
rmpg3@rmpg3-Satellite-L40:~$ less lab1.txt
Выводит:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
.UTF-8
HOME=/home/rmpg3
6) Последовательный переход в каталоги
/bin, /usr, /etc, /usr/bin. В каждом каталоге выполняется команда ls с
различными ключами (-a, -l, -F, -R). Если вывод команды ls
не умещается на экране, то можно воспользоваться
командой less (напр. Ls -l | less):
ls -a (вывод всех файлов каталога)
ls -l (информация о файле)
ls -F (папки каталога)
ls -R (выводит список файлов каталога и
его подкаталогов)
Переход в каталог /bin:
rmpg3@rmpg3-Satellite-L40:/bin$
Выполнение команды ls с различными
ключами:
@rmpg3-Satellite-L40:/bin$ ls -a :
rmpg3@rmpg3-Satellite-L40:/bin$ ls -l :
rmpg3@rmpg3-Satellite-L40:/bin$ ls -F :
rmpg3@rmpg3-Satellite-L40:/bin$ ls -R :
Переход в каталог /usr:@rmpg3-Satellite-L40:/bin$
cd /usr
Выполнение команды ls с различными ключами:
rmpg3@rmpg3-Satellite-L40:/usr$ ls -a :
@rmpg3-Satellite-L40:/usr$ ls -l :
rmpg3@rmpg3-Satellite-L40:/usr$ ls -F :
@rmpg3-Satellite-L40:/usr$ ls -R :
ереход в каталог /etc
:@rmpg3-Satellite-L40:/usr$ cd /etc
Выполнение команды ls с различными ключами:
@rmpg3-Satellite-L40:/etc$ ls -a :
@rmpg3-Satellite-L40:/etc$ ls -l :
rmpg3@rmpg3-Satellite-L40:/etc$ ls -F :
@rmpg3-Satellite-L40:/etc$ ls -R :
Переход в каталог
/usr/bin:@rmpg3-Satellite-L40:/etc$ cd /usr/bin
Выполнение команды ls с различными ключами:
rmpg3@rmpg3-Satellite-L40:/usr/bin$ ls -a :
rmpg3@rmpg3-Satellite-L40:/usr/bin$ ls -l :
@rmpg3-Satellite-L40:/usr/bin$ ls -F :
@rmpg3-Satellite-L40:/usr/bin$ ls -R :
7) Переход обратно в домашний каталог:
rmpg3@rmpg3-Satellite-L40:/usr/bin$ cd
8) Изучение команд uname и date :
rmpg3@rmpg3-Satellite-L40:~$ uname
Выводит: Linux@rmpg3-Satellite-L40:~$ date
Выводит:
Сб. мая 26 19:13:50 YEKT 2012
Дополнительная информация по этим
командам:@rmpg3-Satellite-L40:~$ man uname
и@rmpg3-Satellite-L40:~$ man date
9) Сравнение команд date иdate :
rmpg3@rmpg3-Satellite-L40:~$ date
Выводит:
Сб. мая 26 19:13:50 YEKT
2012@rmpg3-Satellite-L40:~$date
Выводит: May 26 19:21:47 YEKT 2012
10) Добавление в конец отчета информации,
выводимой командами uname -a и date :
rmpg3@rmpg3-Satellite-L40:~$ uname
-a>>lab1.txt@rmpg3-Satellite-L40:~$ date>>lab1.txt
11) Создание в домашнем каталоге подкаталогов
test1 и test2 :
rmpg3@rmpg3-Satellite-L40:~$ mkdir test1 test2
12) Копирование файла /home/labs/text.txt в каталог test2.Добавление
в файл отчета вывода команды ls -R
Копирование файла /home/labs/text.txt в каталог test2 :
rmpg3@rmpg3-Satellite-L40:~$
cp labs/text.txt test2
Добавление в файл отчета вывода
команды ls -R :
rmpg3@rmpg3-Satellite-L40:~$
ls -R>>lab1.txt
13) Перемещение файла text.txt из каталога test2 в каталог test1
rmpg3@rmpg3-Satellite-L40:~$
mv test2/text.txt test1
Добавление в файл отчета вывода
команды ls -R :
rmpg3@rmpg3-Satellite-L40:~$
ls -R>>lab1.txt
14) Изучение команды find. Добавление в файл
отчета всех подкаталогов каталога
/usr/share содержащие в своем
имени сочетание букв “ru” (используются параметры -type и -name):
rmpg3@rmpg3-Satellite-L40:~$
find /usr/share -type d -name ru >> lab1.txt
/usr/share/cups/doc-root/ru
/usr/share/cups/templates/ru
/usr/share/cups/locale/ru
/usr/share/man/ru
/usr/share/locale/ru
/usr/share/locale/l10n/ru
/usr/share/libreoffice/basis3.4/help/ru
/usr/share/locale-langpack/ru
/usr/share/doc/kde/HTML/ru
/usr/share/kde4/apps/klettres/ru
/usr/share/kde4/apps/kvtml/ru
/usr/share/kde4/apps/ktuberling/sounds/ru
/usr/share/kde4/apps/ksgmltools2/customization/ru
15) С помощью команды rmdir удаляем каталоги,
созданные при выполнении пункта 11:
rmpg3@rmpg3-Satellite-L40:~$
rm -rf test1 test2
16) Добавлем в конец файла две
строки. Первая содержит текст: “Лабораторная работа №1”. Вторая - имя и фамилию студента, выполнившего работу.
rmpg3@rmpg3-Satellite-L40:~$ echo "Лабораторная работа №1" >> lab1.txt
rmpg3@rmpg3-Satellite-L40:~$ echo "Шипигусева Александра" >> lab1.txt
Лабораторная работа
№2 Знакомство с редактором Vim.
Цель:
Познакомиться с
основными возможностями и функциями терминала по работе с текстом.
Познакомиться с текстовым редактором vi.
Одним из самых
старых текстовых редакторов является редактор vi. Этот редактор обладает
несколько своеобразным интерфейсом и, поначалу, работа с ним вызывает у
неопытного пользователя серьёзные затруднения, но тем не менее этот редактор
очень популярен и многие тысячи людей используют именно его для редактирования
текстов. Практически в любой UNIX совместимой системе имеется какая-либо реализация vi. Наиболее
удобной, на мой взгляд, является vim.
Для освоения
редактора vim запустите команду vimtutor и выполните упражнения содержащиеся в открывшемся файле. Если Вам
не очень понятен английский язык, воспользуйтесь приведенной ниже краткой
справкой по vi.
Редактор vi
Vi экранный текстовый редактор. Большая часть экрана используется
для отображения редактируемого файла. Последняя строка экрана используется для
ввода команд и вывода различной информации. Редактор может находиться либо в
режиме редактирования, либо в режиме ввода команд. Для того, чтобы совершать
какие либо действия Вы должны находиться в нужном режиме. После запуска
редактор находится в командном режиме. Для перехода из режима редактирования в
командный режим используется клавиша Esc. Для того, чтобы начать редактирование файла используется команда
vi имя_файла.
Основные
возможности в командном режиме
• Перемещение
по файлу:
h, left-arrow
переместить курсор влево на один символ
j, down-arrow
переместить курсор вниз на одну строку
k, up-arrow
переместить курсор вверх на одну строку, right-arrow переместить
курсор вправо на один символ
/text<cr>
найти строку text в файле и поместить курсор на ее первый символ. После этого
можно использовать
клавиши n и Shift-n для перемещения к следующему или
предыдущему
включению строки.
• Переход в
режим редактирования:
i начать ввод
текста перед курсором
a начать ввод текста после курсора
o вставить строку после текущей и начать ввод текста в ней
O вставить строку перед текущей и начать ввод текста в ней
• Копирование,
вставка и удаление:
yy y$ yw скопировать строку, строку от позиции курсора до конца, слово.
dd d$ dw удалить строку, строку от позиции курсора до конца, слово.
x удалить
символ
p вставить содержимое буфера после курсора
P вставить содержимое буфера перед курсором
u отменить последнюю операцию
• Сохранение и
чтение файлов, выход из редактора:
:w<cr>-
сохранить файл;
:w filename<cr>-сохранить файл под
указанным именем;
:r filename<cr>-вставить содержимое
указанного файла;
:q<cr> -выйти
из редактора
:wq<cr>-сохранить
файл и выйти из редактора;
:q!<cr>- выйти без
сохранения файла.
Лабораторная работа
№3
Простейшие команды
для работы с текстом
Цель:
Познакомиться с
основными возможностями и функциями терминала по работе с текстом.
Познакомиться с текстовым редактором vi.
Ход выполнения
работы:
{за файл text.txt был взят оччет по
первой лабораторной работе}
1. Скопируйте в домашний каталог файл /home/labs/text.txt.
rmpg3@rmpg3-Satellite-L40:~$
cp labs/text.txt /home/rmpg3
2. Выведите первые 10 строк файла text.txt.
rmpg3@rmpg3-Satellite-L40:~$
head -n 10 text.txt
3. Выведите последние 10 строк файла text.txt.
rmpg3@rmpg3-Satellite-L40:~$
tail -n 10 text.txt
4. Отсортируйте строки файла, исключив повторяющиеся, и выведите в
файл отчета (lab2.txt) строки с 205-й по 215-ю из полученного результата. (Выполнить
одним конвейером, используя команды sort,
head, tail).
rmpg3@rmpg3-Satellite-L40:~$
sort -u text.txt | head -n 215 | tail -n 10 | sort -o lab3.txt
5. Скопируйте в домашний каталог файл /home/labs/text1.txt.
rmpg3@rmpg3-Satellite-L40:~$
cp labs/text1.txt /home/rmpg3
6. Добавьте в файл отчета все строки файла text.txt которых нет в файле text1.txt. Используйте команду comm, не забудьте
отсортировать файлы перед тем, как подавать их на вход команды comm.
rmpg3@rmpg3-Satellite-L40:~$
sort -o text.txt text.txt@rmpg3-Satellite-L40:~$ sort -o text1.txt
text1.txt@rmpg3-Satellite-L40:~$ comm -1 text.txt text1.txt >> lab3.txt
7. Подсчитайте число слов в файле text.txt и добавьте его в файл
отчета.
rmpg3@rmpg3-Satellite-L40:~$
wc -w text.txt >> lab3.txt
8. Файл /etc/passwd содержит учетные записи пользователей. Каждая учетная запись
содержится в отдельной строке и состоит из нескольких полей разделенных
двоеточиями. Первое поле содержит имя пользователя, третье поле содержит его
идентификатор. Выведите отсортированный список пользователей и их
идентификаторов в файл отчета. (Воспользуйтесь командами cut и sort).
rmpg3@rmpg3-Satellite-L40:~$
cut -f 1,3 -d: /etc/passwd | sort >> lab3.txt
9. Отредактируйте файл отчета при помощи редактора vi:
rmpg3@rmpg3-Satellite-L40:~$
vi lab3.txt
·
Добавьте в начало файла строки содержащие номер лабораторной
работы и Ваше имя.
Устанавливаем
курсор на начало первой строки, нажимаем O. Вводим название лабораторной и имя.
·
Скопируйте пять строк файла начиная с пятой и вставьте их в конце
файла.
Переводим курсор на
5ую строку. Нажимаем y5. Перводим курсор в конец файла
нажимаем p.
·
Удалите предпоследнюю
строку.
Переводим курсор на
предпоследнюю строку и нажимаем dd.
Сохраняем изменения
и выходим, для этого набираем :wq .
Лабораторная работа
№4. Команды для управления процессами
Цель: Ознакомиться
с понятием процесса в среде UNIX. Изучить механизмы межпроцессорного взаимодействия и основные
сведения о работе с процессами.
Использовать на
практике основные команды для работы с процессами. Ознакомиться со средствами
оболочки преднащначенными для работы с процессами.
Ход выполнения
работы:
1. Освойте работу с командой ps. Попробуйте запускать
ее с различными аргументами. Если вывод команды не помещается на экране,
используйте команду less.
rmpg3@rmpg3-Satellite-L40:~$
ps -a(выводит информацию о процессах всех пользователей)TTY TIME CMD
pts/2 00:00:00 ps
rmpg3@rmpg3-Satellite-L40:~$ ps
-x (выводит информацию о процессах на подключенных к терминалу)
..........................................................
? Ss 0:00 kdeinit4: kdeinit4
Running...
? S 0:00 kdeinit4: klauncher
[kdeinit] --fd=9
? Sl 0:03 kdeinit4: kded4
[kdeinit]
? S 0:00 /usr/bin/kglobalaccel
? S 0:00 /usr/bin/kwalletd
? S 0:00
/usr/bin/kactivitymanagerd
? S 0:00 kwrapper4 ksmserver
? Sl 0:00 kdeinit4: ksmserver
[kdeinit]
? Sl 0:41 kwin -session
101ce1a71c4161000133806721500000015160000_1338561550_579762
? Sl 4:23 /usr/bin/knotify4
? Sl 1:03
/usr/bin/plasma-desktop
? S 0:00 ksysguardd
? S 0:00 /usr/bin/kuiserver
? Sl 0:00 /usr/bin/akonadi_cont
.....................................................................................@rmpg3-Satellite-L40:~$
ps -w (использовать строки длиной 132 символа)TTY TIME CMD
pts/2 00:00:00 bash
pts/2 00:00:00 ps
@rmpg3-Satellite-L40:~$ ps -e
(выводит значения переменных окружения)
...............................................................
? 00:00:00 nginx
? 00:00:00 nginx
? 00:00:00 nginx
? 00:00:01 postgres.bin
? 00:00:03 postgres.bin
? 00:00:00 postgres.bin
? 00:00:00 postgres.bin
? 00:00:00 kio_http_cache_
? 00:00:07 dolphin
? 00:00:00 libreoffice
? 00:00:00 oosplash.bin
? 00:00:29 soffice.bin
? 00:00:15 gwenview
? 00:00:03 konsole
pts/2 00:00:00 bash
? 00:00:00 kworker/0:0
? 00:00:04 ksnapshot
? 00:00:00 kworker/0:1
? 00:00:00 kworker/0:2
pts/2 00:00:00 ps
.......................................................
2. Выведите в файл отчета1 (lab4.txt) следующую информацию о
запущенных Вами процессах: pid, ppid, tty, ruid, command. Вывод должен быть отсортирован по номеру процесса.
rmpg3@rmpg3-Satellite-L40:~$
touch lab4.txt@rmpg3-Satellite-L40:~$ ps -o
ppid,tty,ruid,command>>lab4.txt
В файл вывелось:
PPID TT RUID
COMMAND
pts/2 1000
/bin/bash
pts/2 1000 ps -o
ppid,tty,ruid,command
3. Выведите в файл отчета информацию о процессах запущенных
пользователем root. Вывод должен быть отсортирован по номеру процесса.
rmpg3@rmpg3-Satellite-L40:~$
ps -U root >> lab4.txt
В файл вывелось:TTY
TIME CMD
? 00:00:00 init
? 00:00:00 kthreadd
? 00:00:08
ksoftirqd/0
? 00:00:00
kworker/u:0
? 00:00:00
migration/0
? 00:00:00 cpuset
? 00:00:00 khelper
? 00:00:00 netns
? 00:00:00
sync_supers
? 00:00:00
bdi-default
? 00:00:00
kintegrityd
? 00:00:00 kblockd
? 00:00:00 ata_sff
? 00:00:00 khubd
? 00:00:00 md
? 00:00:00
khungtaskd
? 00:00:10 kswapd0
? 00:00:00 ksmd
? 00:00:00
khugepaged
? 00:00:00
fsnotify_mark
? 00:00:00
ecryptfs-kthrea
? 00:00:00 crypto
? 00:00:00 kthrotld
? 00:00:00
scsi_eh_0
? 00:00:00
scsi_eh_1
? 00:00:00
kworker/u:4
? 00:00:00
scsi_eh_2
? 00:00:00
scsi_eh_3
? 00:00:00
scsi_eh_4
? 00:00:00
jbd2/sda5-8
? 00:00:00
ext4-dio-unwrit
? 00:00:00
upstart-udev-br
? 00:00:00 udevd
? 00:00:00
led_workqueue
? 00:00:00 udevd
? 00:00:00 udevd
....................................................
4. Ключи -c, -v, -j, -u изменяют формат вывода команды. Попробуйте выполнить команду ps с каждым из этих
ключей. Результат сохраните в файле отчета.
@rmpg3-Satellite-L40:~$
ps -c>>lab4.txt
В файл вывелось:
файл тест редактор команда
PID CLS PRI TTY
TIME CMD
TS 19 pts/2
00:00:00 bash
TS 19 pts/2
00:00:00 ps
@rmpg3-Satellite-L40:~$
ps -v>>lab4.txt
В файл вывелось:TTY
STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
pts/2 Ss 0:00 15
873 7466 3248 0.3 /bin/bash
pts/2 R+ 0:00 0 82
5661 688 0.0 ps -v
@rmpg3-Satellite-L40:~$
ps -j>>lab4.txt
В файл
вывелось:PGID SID TTY TIME CMD
4711 4711 pts/2
00:00:00 bash
5211 4711 pts/2
00:00:00 ps
rmpg3@rmpg3-Satellite-L40:~$
ps -u>>lab4.txt
В файл вывелось:PID
%CPU %MEM VSZ RSS TTY STAT START TIME COMMAND4711 0.0 0.3 8340 3248 pts/2 Ss
14:09 0:00 /bin/bash5213 0.0 0.1 5984 1104 pts/2 R+ 15:02 0:00 ps -u
5,6,7 для этих
пунктов нет требующихся программ.
8. Создайте в
домашнем каталоге именованный канал fifo. Выполните команду cat /home/labs/dao.txt >fifo Теперь с другого терминала выполните команду cat fifo
10:24:15rmpg3~$mkfifo
fifo
:24:27rmpg3~$cat
/home/rmpg3/labs/dao.txt > fifo
Выполняем с другого
терминала:
:25:27rmpg3~$cat fifo
9. При помощи
команд tty, w, uname, uptime выведите в файл отчета (lab3.txt) имя текущего терминала, информацию о пользователях, работающих в
системе, название и версию операционной системы, время работы системы.
10:28:04rmpg3~$tty>>lab3.txt
:28:18rmpg3~$w>>lab3.txt
:28:26rmpg3~$uname>>lab3.txt
:28:34rmpg3~$uptime>>lab3.txt
В файл вывелось:
/dev/pts/2
:27:55 up 2 days,
27 min, 3 users, load average: 0,16, 0,46, 0,36TTY FROM LOGIN@ IDLE JCPU PCPU
WHATpts/0 :0 Sat10 2days 0.00s 26.91s kdeinit4: kded4 [kdeinit] pts/2 :0 10:24
0.00s 0.31s 0.00s wpts/3 :0 10:25 2:04 0.26s 0.26s /bin/bash
:28:04 up 2 days,
27 min, 3 users, load average: 0.14, 0.44, 0.35
. Установите
обработчик сигнала SIGINT. Для этого выполните команду:
trap
"echo иполучен сигнал SIGINT " INT
:28:49rmpg3~$trap
"echo получен сигнал SIGINT" INT
Пошлите несколько
раз оболочке сигнал SIGINT. Для этого следует нажать клавиши CTRL-C при нажитии на ctrl-c выводит: получен сигнал SIGINT.
11. Добавьте в
начало файла отчета строку с номером лабораторной работы и Вашим именем.
С помощью редактора
vim
добавляем номер лабораторной работы и мое имя в начало файла.
Лабораторная работа
№5. Настройка оболочки
Цель: Ознакомиться
с настройками оболочки UNIX. Ознакомиться с файлом .bashrc , который может использоваться для настройки рабочей среды в
соответсвии с потребностями пользователя.
Ход работы:
)Сравните вывод
команд date и LANG=C date.
rmpg3@rmpg3-Satellite-L40:~$
date &&date
Сб.
июня 2 21:28:11 YEKT 2012Jun 2 21:28:11 YEKT 2012
2) Измените
приглашение командной строки так, чтобы в нем выводилось время, имя
пользователя и текущий рабочий каталог. Заканчиваться приглашение должно
символом доллара. Сохраните команду определяющую приглашение в файле .bashrc, чтобы приглашение
восстанавливалось при каждом запуске оболочки.
rmpg3@rmpg3-Satellite-L40:~$
PS1="\t\u\w\$"
:44:10rmpg3~$
:44:26rmpg3~$echo
PS1="\t\u\w\$">>~/.bashrc
3)Просмотрите
значения переменых PPID, PWD, OLDPWD, UID, RANDOM и HOSTNAME и сохраните их в файле отчёта (lab5.txt) в формате
“имя_переменной=значение”.
21:53:32rmpg3~$echo
"PPID=$PPID">>lab5.txt
:53:52rmpg3~$echo
"PWD=$PWD">>lab5.txt
:54:15rmpg3~$echo
"OLDPWD=$OLDPWD">>lab5.txt
:54:58rmpg3~$echo
"UID=$UID">>lab5.txt
:55:05rmpg3~$echo
"RANDOM=$RANDOM">>lab5.txt
:55:34rmpg3~$echo
"HOSTNAME=$HOSTNAME">>lab5.txt
В файл
вывелось:=4708=/home/rmpg3==1000=16021=rmpg3-Satellite-L40
) Создайте псевдонимы:
10:32:38rmpg3~$alias
ls='l -G'
:35:30rmpg3~$alias
ll='l -l'
:35:55rmpg3~$alias
la='l -a'
:36:47rmpg3~$alias
pa='ps ax'
:37:03rmpg3~$alias
x='startx'
:37:17rmpg3~$nano
~/.bashrc {открываем файл bashrc и записываем туда псевдонимы}
)Определите функцию
lab,
которая будет выводить строку "Лабораторная работа N", где N передаётся функции в качестве
аргумента, а затем строку содержащую Ваши имя и фамилию. Сохраните определение
функции в файле .bashrc. Добавьте результат работы функции в файл отчета.
:44:37rmpg3~$lab() { echo "Лабораторная
работа #$1"; echo "Шипигусев Александр";}
:44:55rmpg3~$lab 5
Лабораторная работа
#5
Шипигусев Александр
:45:29rmpg3~$nano ~/.bashrc
Лабораторная работа
№6
Цель работы:
Изучить
монтирование и демонтирование файловых систем. Получить дополнительную
информацию о файловых системах. Смонтировать файловую систему.
Ходы выполнения
работы:
.
a) Просмотрите список смонтированных файловых систем.
rmpg3~$mount
-v
/dev/sda5
on / type ext4 (rw,errors=remount-ro,commit=0)on /proc type proc
(rw,noexec,nosuid,nodev)on /sys type sysfs (rw,noexec,nosuid,nodev)on
/sys/fs/fuse/connections type fusectl (rw)on /sys/kernel/debug type debugfs
(rw)on /sys/kernel/security type securityfs (rw)on /dev type devtmpfs
(rw,mode=0755)on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)on /run
type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)on /run/lock type tmpfs
(rw,noexec,nosuid,nodev,size=5242880)on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda8
on /boot type ext4 (rw,commit=0)
/dev/sda7
on /home type ext4 (rw,commit=0))Создайте
в домашнем каталоге каталог floppy.
:20:08rmpg3~$mkdir floppy
c)Скопируйте в этот каталог файл /home/labs/text.txt.
18:59:25rmpg3~$cp
labs/text.txt floppy
d) Просмотрите
содержимое каталога floppy.
19:12:07rmpg3~$dir
floppy.txt)Вставьте в дисковод
отформатированную дискету. Подмонтируй-те дискету к каталогу floppy.
19:19:16rmpg3~$sudo
mount /dev/sdb1 floppy
Выведите в файл
отчета список смонтированных файловых систем.
:19:40rmpg3~$mount -v >> lab6.txt
в файл вывелось:
/dev/sda5
on / type ext4 (rw,errors=remount-ro,commit=0)on /proc type proc
(rw,noexec,nosuid,nodev)on /sys type sysfs (rw,noexec,nosuid,nodev)on
/sys/fs/fuse/connections type fusectl (rw)on /sys/kernel/debug type debugfs
(rw)on /sys/kernel/security type securityfs (rw)on /dev type devtmpfs
(rw,mode=0755)on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)on /run
type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)on /run/lock type tmpfs
(rw,noexec,nosuid,nodev,size=5242880)on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda8
on /boot type ext4 (rw,commit=0)
/dev/sda7
on /home type ext4 (rw,commit=0)
/dev/sdb1
on /media/4F06-2EDF type vfat
(rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,uhelper=udisks)
/dev/sda1
on /media/C0F4377BF4377330 type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdb1
on /home/rmpg3/floppy type vfat (rw)
2)Размонтируйте
дискету. Просмотрите содержимое каталога floppy и список смонтированных
файловых систем:
19:29:38rmpg3~$sudo
umount /dev/sdb1
:29:53rmpg3~$dir
floppy .txt
:30:33rmpg3~$mount
-v
/dev/sda5
on / type ext4 (rw,errors=remount-ro,commit=0) on /proc type proc
(rw,noexec,nosuid,nodev) on /sys type sysfs (rw,noexec,nosuid,nodev) on
/sys/fs/fuse/connections type fusectl (rw) on /sys/kernel/debug type debugfs
(rw) on /sys/kernel/security type securityfs (rw) on /dev type devtmpfs
(rw,mode=0755) on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) on
/run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) on /run/lock type tmpfs
(rw,noexec,nosuid,nodev,size=5242880) on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda8
on /boot type ext4 (rw,commit=0)
/dev/sda7
on /home type ext4 (rw,commit=0)
/dev/sdb1
on /media/4F06-2EDF type vfat
(rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,uhelper=udisks)
/dev/sda1
on /media/C0F4377BF4377330 type fuseblk
(rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
3)Вставьте в
дисковод дискету. Отформатируйте её на низком уровне и создайте на дискете
файловую систему FAT. Скопируйте на дискету какой-нибудь файл.
:39:39rmpg3~$sudo mkdosfs -F 32 /dev/sdb1
19:39:45rmpg3~$cp
lab1.txt /dev/sdb1
4): Выведите в файл
отчета сведения о степени использования разделов жесткого диска. Выведите в
файл отчета сведения о размере Вашего домашнего каталога. Размер должен быть
указан в килобайтах или мегабайтах. Выведите, также, сведения о размере
корневого каталога, при этом не выходите за пределы файловой системы, на
которой находится корневой каталог:
:51:08rmpg3~$df
Файловая система 1K-блоков Исп Доступно Исп% смонтирована
на
/dev/sda5
9612516 5507228 3616996 61% /498912 4 498908 1% /dev203516 856 202660 1%
/run5120 0 5120 0% /run/lock508784 2180 506604 1% /run/shm
/dev/sda8
956472 72832 835052 9% /boot
/dev/sda7
37044928 1616648 33546476 5% /home
/dev/sda1
262236992 142295344 119941648 55% /media/C0F4377BF4377330
:57:27rmpg3~$du
-ms /home/rmpg3 >> lab6.txt
в файл
вывелось:
/home/rmpg3
:57:51rmpg3~$du
-kxs >> lab6.txt
в файл вывелось
Лабораторная работа
№7
Цель:
Ознакомиться со
сценарием (текстовый файл, содержащий команды интерпретатора) и подробно
изучить их написание.
Ход выполнения
работы:
1. Создайте в домашнем каталоге подкаталог bin.
11:20:16rmpg3~$mkdir
bin
2. Выведите на экран значение переменной PATH и убедитесь, что она
содержит созданный Вами каталог bin.
11:35:04rmpg3~$echo
PATH=$PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
3. При помощи редактора vim создайте файл bin/s1.sh:
12:08:19rmpg3~$sudo
vim /home/rmpg3/binhome/s1.sh
for
file ; do
echo
" ------- $file ---- "
head -n 10 $file done
4. Измените права
доступа к файлу. Для этого выполните команду chmod +x bin/s1.sh
Команда добавляет
разрешение на выполнение файла.
:10:16rmpg3~$sudo
chmod +x binhome/s1.sh
5. Выполните
сценарий следующим образом:
s1.sh
/home/labs/text.txt /home/labs/dao.txt
13:16:38rmpg3~$cd
binhome
:17:50rmpg3~/binhome$sh
s1.sh /home/rmpg3/labs/dao.txt /home/rmpg3/labs/text.txt
Выводит первые 10
строчек обоих файлов.
6. Сохраните
результат в файле отчёта.
13:18:19rmpg3~/binhome$sh
s1.sh /home/rmpg3/labs/dao.txt /home/rmpg3/labs/text.txt >> lab7.txt
7. Напишите сценарий, получающий в качестве первого аргумента имя
каталога и выводящий список тех файлов из этого каталога, имена которых
содержат последовательность символов определенную вторым аргументом. Сценарий
споместите в подкаталоге bin домашнего каталога и назовите s2.sh.
Содержание
s2.sh:-alh $1/ | grep $2
8. Напишите сценарий, который выводит пронумерованный список файлов с
расширением txt в текущем каталоге, ожидает от пользователя ввода номера файла,
выводит первые десять строк заданного файла и повторяет цикл. Сценарий
сохраните под именем list.sh
в каталоге bin.
Содержание
list.sh:FILE in~/*.txt QUIT[ -e $FILE]$FILE
9. Встроенная команда интерпретатора read имя считывает строку со
стандартного ввода и записывает её в переменную имя. Команда возвращает код
завершения ноль если строка была успешно считана и код отличный от нуля если
произошла ошибка или встретился конец файла. Напишите сценарий, который
считывает строки со стандартного ввода и выводит их на стандартный вывод.
(Используйте цикл while). Сценарий сохраните под именем s3.sh.
Содержание
s3.sh:true; do
read
line
echo
$line
Лабораторная работа
№8. Настройка сценариев
Цель:
Подробно изучить
написание сценариев, ознакомиться с использованием условных операторов.
Ход выполнения:
1. Проанализируйте файл /home/labs/back.sh
2. В подкаталоге bin создайте файл case.sh:
3.
3. Выполните команду export
UID
21:18:38rmpg3~$export
UID
4. Запустите сценарий без аргументов и последовательно с аргументами status, start, status, start, stop, status, stop. Результат сохраните в
файле отчета.
5. В подкаталоге bin создайте файл calc.sh:
22:35:57rmpg3~/binhome$sudo
vim calc.sh
res=$1[[
$# -ge 2 ]] ; do=$(($res$1$2)) 2 done echo $res
6. Запустите
сценарий следующими командами:
a) calc.sh 1 + 2 \* 3 + 3 / 4]
22:41:57rmpg3~/binhome$sh
calc.sh 1+2\*3+3/4]
+2
b) calc.sh 1 + 2 \* 3
22:56:36rmpg3~/binhome$sh
calc.sh 1 + 2 \* 3
+2
c) calc.sh 1 + 2\*3
23:06:35rmpg3~/binhome$sh
calc.sh 1 + 2\*3
+2*3
d) calc.sh 1+2
23:09:39rmpg3~/binhome$sh
calc.sh 1+2
+2
7. Объясните почему различается результат в случаях b) и c).
Различаются формулы,
в случае b) стоит пробел между 2 и \* и 3 .
8. Исправьте сценарий так, чтобы в случае d) он выдавал результат 3.
res=$1[[ $# = -ge
]]; do
res$(($res$1$2))
shift| $#
-lt 2|: then
res=$(($res))$res
9. Напишите сценарий summ.sh выводящий сумму своих аргументов если первый аргумент +,
произведение если первый аргумент и сообщение Usage: summ.sh +|* arguments ... в противном случае.
Например:
bash-2.04$ summ + 4 8 3
.04$ summ \* 4 2 3
содержание
summ.sh:[$1="+"]$[$2+$3+$4][$1="\\*"]$[$2*$3*$4]
Лабораторная работа
№9. Базовые регулярные выражения. Редактор sed.
Цель: Изучить
информацию о базовых регулярных выражениях (BRE).
Ознакомиться с
потоковым редактором sed, который считывает строки из текстового файла или стандартного
ввода.
Ход
работы:
1. Скопируйте в домашний каталог файл /home/labs/text.txt
23:55:12rmpg3~$cp
/home/rmpg3/labs/text.txt /home/rmpg3
2. Выведите в файл отчета все строки файла text.txt содержащие слово
"Благозвон". Добавьте к файлу отчета количество найденных строк.
00:05:21rmpg3~$grep
-e Благозвон text.txt>>lab9.txt
:05:42rmpg3~$grep
-c -e Благозвон text.txt>>lab9.txt
в файл
вывелосьpeace Благозвон
Изображения
Благозвон
./Документы:
Благозвон
снимок4.png
Благозвон
ВСЕМ Благозвон
ПОЦОНЫ
ПОЛУЧАЕТСЯ Благозвон
3. Добавьте к файлу отчета все строки файла text.txt, которые начинаются с
буквы "Б" (возможно после нескольких пробелов).
00:10:08rmpg3~$grep
-e Б text.txt>>lab9.txtpeace Благозвон
Изображения
Благозвон
./Документы:
Благозвон
снимок4.png
Благозвон
ВСЕМ Благозвон
ПОЦОНЫ
ПОЛУЧАЕТСЯ Благозвон
4. Добавьте к файлу отчета все непустые строки файла text.txt, не содержащие русскую
букву "а" (в любом регистре).
00:15:21rmpg3~$grep
-iv -e [а] text.txt>>lab9.txt
5. Добавьте в файл отчета имена файлов каталога /home/labs, которые содержат слово
"include".
00:18:49rmpg3~$find
/home/rmpg3/labs -name include* -type f>>lab9.txt
/home/rmpg3/labs/include2.txt
/home/rmpg3/labs/include1.txt
/home/rmpg3/labs/include3.txt
6. Используя редактор sed замените в файле text.txt все слова Снарк на СНАРК. Результат сохраните в файле snark.txt.
…...
./labs:
./test1:
СНАРК
СНАРК
./test2:СНАРКСНАРКСНАРКСНАРКСНАРКСНАРК
.СНАРК/Видео:СНАРК
./Документы:
Благозвон.doc
…...
7. При помощи sed выведите из файла /etc/passwd идентификаторы пользователей и их имена, разделенные символом
табуляции, в формате:
1 root
2 daemon
3 operator …
Вывод должен быть
отсортирован по идентификатору пользователя. Результат добавьте к файлу отчета.
01:32:08rmpg3~$cat
/etc/passwd | sed s/:x:/" "/ | sed s/:[0-9]*.*// | sed s/"[a-z]*
"// | sort -g >> lab9.txt
9. Напишите
сценарий для sed, который будет менять местами каждые две строки файла. Возможно sed прийдется запускать с
ключом -n.
Создаю
файл txt.txt#9
и
пустой txt1.txt
01:57:11rmpg3~$sed
-n -f 1.sed txt.txt>txt1.txt#9
10.Напишите сценарий для редактора sed, который будет
добавлять:
(a) В начало файла строку "<html><body>".
(b) В
начало всех строк начинающихся словом "Приступ" строку "<H2>", а в конец строку
"</H2>".
(c) В конец всех остальных строк "<br>".
(d) К
концу последней строки "</body></html>"
Результат работы
сценария сохраните в файле snark.html в каталоге public_html домашнего каталога (каталог потребуется создать). Сценарий
сохраните под именем sed1 в домашнем каталоге.
Содержание 11.sed:
1i
\<html><body>
/^Pristup/i
\<H2>
/^Pristup/a
\<H2>
$a
\</body></html>
$!a
\<br>
:12:18rmpg3~$sed
-f 11.sed text9.txt > text9.html
Исходный
файл text9.txt:failokok
Полученный
text9.htmlfail
Pristup
Pristup
vse ok ok ok end