Лабораторная работа №1
Цель работы – изучить основные объекты, команды, типы данных и операторы управления интерпретатора BASH; создать скрипт-файл.
Операционная система ОС Linux создана на основе ОС UNIX и во многом имеет схожую структуру и систему команд. Пользователь может работать в текстовом режиме с помощью командной строки, или с использованием графического интерфейса X Window и одного из менеджеров рабочего стола (например, KDE или GNOME). Причем, одновременно в системе могут работать 7 пользователей (6- в текстовом режиме консоли и 1 – в графическом режиме), переключение между пользователями осуществляется по нажатию клавиш:
.
В табл. 1 приведены основные команды системы, выполняемые командным интерпретатором Bash)
Таблица 1
Команда | Аргументы/ключи | Пример | Описание |
dir | каталог | dir dir /home | Выводит на консоль содержимое каталога |
ls | -all и другие (см. man) | ls -all | Выводит на консоль содержимое каталога |
ps | -a -x и другие (см. man) | ps -a | Выводит на консоль список процессов |
mkdir | имя каталога | mkdir stud11 | Создает каталог |
rmdir | имя каталога | rmdir stud11 | Удаляет каталог |
rm | файл | rm myfile1 | Удаляет файл |
mv | файл новое_имя | mv myfile1 myf1 | Переименование файла |
cat | файл | cat 1.txt | Вывод файла на консоль |
cd | имя каталога | cd home | Переход по каталогам |
grep | (см. man) | grep "^a" "words.txt" | Поиск строки в файле |
kill | pid процесса | kill 12045 | Уничтожает процесс |
top | Выводит на консоль список процессов | ||
htop | Выводит на консоль полный список запущенных процессов | ||
su | Переход в режим root | ||
chmod | права_доступа файл | chmod 777 1.txt | Изменение прав доступа к файлам |
mount | устройство каталог | mount /dev/cdrom /MyCD | Монтирование устройств |
dd | if= файл of= файл bs=n count=n | dd if=/dev/hda1 of=/F.bin bs=512 count=1 | Копирование побайтное |
ln | файл1 файл2 -l | ln файл1 файл2 ln –l файл1 файл2 | Создать жёсткую или символическую ссылку на файл |
uname | -a | uname –a | Информация о системе |
find | find файл | find /home a1.txt | Поиск файлов |
man | man fgetc | Справка по системе | |
info | info fgetc | Справка по системе |
Linux и Windows используют различные файловые системы для хранения и организации доступа к информации на дисках. В Linux используются файловые системы- Ext2/Ext3, RaiserFS, FFS и другие. Рекомендуется при установке ОС использовать файловую систему выбираемую установщиком по умолчанию (обычно Ext3 или Ext4) Все современные файловые системы имеют поддержку журналирования. Журналируемая файловая система сначала записывает изменения, которые она будет проводить в отдельную часть файловой системы (журнал) и только потом вносит необходимые изменения в остальную часть файловой системы. После удачного выполнения всех транзакций, записи удаляются из журнала. Это обеспечивает лучшее сохранение целостности системы и уменьшает вероятность потери данных. Следует отметить, что Linux поддерживает доступ к Windows -разделам.
Файловая система Linux имеет лишь один корневой каталог, который обозначается косой чертой (/). В файловой структуре Linux нет дисков A, B, C, D …., а есть только каталоги. В Linux различаются прописные и строчные буквы в командах, именах файлов и каталогов. В Windows у каждого файла существует лишь одно имя, в Linux их может быть много. Это – «жесткие » ссылки, которые указывают непосредственно на индексный дескриптор файла. Жесткая ссылка – это один из принципов организации файловой системы Linux.
Структура каталогов ОС Linux представлена в табл. 1. Есть также несколько полезных сокращений для имен каталогов:
- Одиночная точка (.) обозначает текущий рабочий каталог.
- Две точки (..) обозначают родительский каталог текущего рабочего.
- Тильда (~) обозначает домашний каталог пользователя (обычно это каталог, который является текущим рабочим при запуске Bash).
Таблица 1
/ | Корневой каталог |
/bin | Содержит исполняемые файлы самых необходимых для работы системы программ. Каталог /bin не содержит подкаталогов. |
/boot | Здесь находятся само ядро системы (файл vmlinuz -...) и файлы, необходимые для его загрузки. |
/dev | Каталог /dev содержит файлы устройств (драйверы). |
/etc | Это каталог конфигурационных файлов, т. е. файлов, содержащих информацию о настройках системы (например, настройки программ). |
/home | Содержит домашние каталоги пользователей системы. |
/lib | Здесь находятся библиотеки (функции, необходимые многим программам). |
/media | Содержит подкаталоги, которые используются как точки монтирования для сменных устройств (CD-ROM'ов, floppy-дисков и др.) |
/mnt | Данный каталог (или его подкаталоги) может служить точкой монтирования для временно подключаемых файловых систем. |
/proc | Содержит файлы с информацией о выполняющихся в системе процессах. |
/root | Это домашний каталог администратора системы. |
/sbin | Содержит исполняемые программы, как и каталог /bin. Однако использовать программы, находящиеся в этом каталоге может только администратор системы (root). |
/tmp | Каталог для временных файлов, хранящих промежуточные данные, необходимых для работы тех или иных программ, и удаляющиеся после завершения работы программ. |
/usr | Каталог для большинства программ, которые не имеют значения для загрузки системы. Структура этого каталога фактически дублирует структуру корневого каталога. |
/var | Содержит данные, которые были получены в процессе работы одних программ и должны быть переданы другим, и файлы журналов со сведениями о работе системы. |
Bash - это sh -совместимый интерпретатор командного языка, выполняющий команды, прочитанные со стандартного входного потока или из файла. Скрипт-файл – это обычный текстовый файл, содержащий последовательность команд bash, для которого установлены права на выполнение. Пример скрипта, выводящего содержимое текущего каталога на консоль и в файл:
#!/bin/bash
Dir
dir > 1.txt
Следующие переменные используются командным интерпретатором.
$0,$1,$2,$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