Частина тексту файла (без зображень, графіків і формул):
Національний університет «Львівська політехніка»
Інститут комп’ютерних технологій, автоматики та метрології
ІКТА
Кафедра ЗІ
/
Лабораторна робота №2
з дисципліни: «Операційні системи»
на тему: «Робота з командною оболонкою BASH»
Львів 2017
Мета : Оволодіти практичними навичками роботи та адміністрування в системі LINUX за допомогою командної оболонки BASH. Ознайомитись із оболонкою BASH, виконанням команд у BASH, змінними оболонки, синтаксисом BASH-сценаріїв.
Теоретичні відомості:
Короткий список команд, які вам можуть знадобитися:
pwd – вивести поточну директорію.
hostname - вивести або змінити мережеве ім'я машини.
whoami - ввести ім'я під яким я зареєстрований.
date - Вивести або змінити дату і час. Наприклад, щоб встановити дату і час рівну 2000-12-31 23:57, слід виконати команду: date 123123572000
time - Отримати інформацію про час, потрібний для виконання процесу + ще деяку інформацію. Не плутайте цю команду з датою. Наприклад: ви можете визначити як багато часу потрібно для виведення списку файлів в директорії, набравши послідовність: time ls.
who - Визначити хто з користувачів працює на машині.
rwho –a - Визначення всіх користувачів, які підключилися до вашої мережі. Для виконання цієї команди потрібно, щоб був запущений процес rwho. Якщо такого немає - запустіть setup " setup" під суперкористувачем.
finger [имя_пользователя]- Системна інформація про зареєстрованого користувача. Спробуйте: finger root
uptime - Кількість часу, що пройшов з останнього перезавантаження.
ps –a - Список поточних процесів.
top - Інтерактивний список поточних процесів відсортованих по використанню центрального процесора.
uname - Вивести системну інформацію.
free – Вив
ести інформацію про пам'ять.
df –h - (= Місце на диску) Вивести інформацію про вільний і використовуваний простір на дисках (в читабельному вигляді).
du / -bh | more - (= Хто скільки зайняв) Вивід детальної інформації про розмір файлів по директоріях починаючи з кореневої (в читабельному вигляді).
cat /proc/cpuinfo - Системна інформація про процесор. Зауважте, що файли в /proc директорії - не справжні файли. Вони використовуються для отримання інформації, відомої системі.
cat /proc/interrupts - Використовувані переривання.
cat /proc/version - Версія ядра Linux та інша інформація
cat /proc/filesystems - Вивести використовувані в даний момент типи файлових систем.
cat /etc/printcap - Вивести налаштування принтера.
lsmod - (Як root) Вивести інформацію про завантажені в даний момент модулі ядра.
set | more - Вивести поточні значення змінних оточення.echo
$PATH - Вивести значення змінної оточення "PATH" Ця команда може використовуватися для виведення значень інших змінних оточення. Скористайтеся командою set, для одержання повного списку.
grep … - Пошук входження регулярного виразу в рядки заданого файлу (потоку).
Завдання:
1. Вивести будь-яке повідомлення за допомогою команди echo перенаправивши вивід:
у неіснуючий файл за допомогою символу >;
у неіснуючий файл за допомогою символу >>;
в існуючий файл за допомогою символу >;
в існуючий файл за допомогою символу >>;
Пояснити результати.
2. Переадресувати стандартний ввід для команди cat на файл.
3. Вивести повідомлення за допомогою команди echo в канал помилок. Створити файл myscript:
#!/bin/sh
echo stdout
echo stderr>&2
exit 0
Запустити його:
без перенаправлення (sh myscript);
перенаправити стандартний вивід у файл, переглянути вміст файлу (sh myscript > file1);
перенаправити стандартний канал помилок в існуючий і неіснуючий файли за допомогою символів > і >>;
перенаправити стандартний вивід у файл 1, стандартний канал помилок - у файл 2;
перенаправити стандартний вивід і стандартний канал помилок у файл 3;
перенаправити стандартний вивід у файл 4 за допомогою символу >, а стандартний канал помилок у файл 4 за допомогою символу >>;
Пояснити результати.
4. Вивести третій рядок з останніх десяти рядків відсортованого в зворотному порядку файлу /etc/group.
5. Підрахувати за допомогою конвеєра команд кількість блокових пристроїв введення-виведення, доступних в системі.
6. Написати скрипт, що виводить на консоль всі аргументи командного рядка, передані даному скрипту. Привести різні варіанти запуску даного скрипта, в тому числі без безпосереднього виклику інтерпретатора в командному рядку.
7. Написати скрипт згідно індивідуального завдання. Номер варіанту погодити з викладачем.
Індивідуальне завдання
Варіант 17.
Написати командний файл, що реалізує символьне меню
1 Пункт: робота з інформаційними командами (реалізувати всі основні інформаційні команди)
2 Пункт: Копіювання файлів: у цьому пункті виводиться інформація про вміст поточного каталогу, далі пропонується інтерфейс копіювання файлу: введення імені файлу і введення каталогу для копіювання. Після виконання пункту виводиться вміст каталогу, куди був скопійований файл і виводиться вміст скопійованого файлу.
3 Пункт: Вихід
Хід роботи:
Завдання 1:
/
Завдання 2:
/
Завдання 3:
3.1
3.2
3.3
Завдання 4:
/
Завдання 5:
Завдання 6:
#!/bin/sh
echo $@
Індивідуальне завдання:
#!/bin/bash
function info {
clear
uname -a -m -n -r -s -v
echo
date
echo
cal -3
echo
uptime
echo
hostname
echo
whoami
}
function copying {
clear
let filename
ls
echo -n "Enter filename \"filename\" "
read filename
let folder_path
echo -n "Enter destination folder path \"folder_path\" "
read folder_path
cp $filename $folder_path
cd $folder_path
ls
cat $filename
}
function menu {
clear
echo
echo -e "\t\t\tScript menu:\n"
echo -e "\t1. Info commands"
echo -e "\t2. Copying"
echo -e "\t3. Exit"
echo -en "\t\tChoose one: "
read -n 1 option
}
while [ $? -ne 1 ]
do
menu
case $option in
3)
break ;;
1)
info ;;
2)
copying ;;
*)
clear
echo "Choose:";;
esac
echo -en "\n\n\t\t\tPress any key to proceed"
read -n 1 line
done
clear
Результат виконання індивідуального завдання
Меню:
/
Перший пункт завдання 7:
/
Другий пункт завдання 7:
/
Висновок
На цій лабораторній роботи я оволодів навичками роботи та адміністрування в системі LINUX за допомогою командої оболонки BASH. Ознайомився з оболонкою BASH, виконанням команд, змінними та синтаксисом BASH-сценаріїв.