Управление ОС Linux, интерпретатор BASH




Лабораторная работа №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





©2015-2017 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.

Обратная связь

ТОП 5 активных страниц!