Лабораторная работа сценарии bash

Работа по теме: Лб 10 Разработка сценариев bash. Глава: Разработка сценариев bash. ВУЗ: ПГУТИ.

Лабораторная
работа 10

Цель работы – практическое знакомство
с методами создания и использования
сценариев ОС Linux

  1. Краткие теоретические сведения

    1. Необходимость использования сценариев командной оболочки

Одна из причин применения сценариев
командной оболочки — возможность
быстрого и простого программирования.
Командная оболочка очень удобна для
небольших утилит, выполняющих относительно
простую задачу, для которой производительность
менее важна, чем простота настройки,
сопровождения и переносимость. Оболочка
может использоваться для управления
процессами, обеспечивая выполнение
команд в заданном порядке, зависящем
от успешного завершения каждого этапа
выполнения.

Хотя внешне командная оболочка очень
похожа на режим командной строки в ОС
Windows, она гораздо мощнее
и способна выполнять самостоятельно
очень сложные программы. Командная
оболочка выполняет программы оболочки,
часто называемые сценариями или
скриптами, которые интерпретируются
во время выполнения. Такой подход
облегчает отладку, потому что можно
выполнять программу построчно и не
тратить время на перекомпиляцию. Но для
задач, которым важно время выполнения
или необходимо интенсивное использование
процессора, командная оболочка оказывается
неподходящей средой.

1.2 Командная оболочка

Командная оболочка — это программа,
которая действует как интерфейс между
пользователем и ОС Linux,
позволяя вводить команды, которые должна
выполнить операционная система. В ОСLinuxвполне может
сосуществовать несколько установленных
командных оболочек, и разные пользователи
могут выбрать ту, которая им больше
нравится. Поскольку ОСLinux— модульная система, можно вставить и
применять одну из множества различных
стандартных командных оболочек. ВLmuxстандартная командная оболочка, всегда
устанавливаемая как /bin/shи входящая в комплект средств проектаGNU, называетсяbash(GNUBourne-AgainSHell). В данной работе
используется оболочкаbashверсии 3, ее функциональные возможности
являются общими для всех командных
оболочек, удовлетворяющих требованиям
стандартаPOSIX.

Рис. 1. Укрупненная архитектура ОС Linux

Каналы и перенаправление

Прежде чем заняться подробностями
программ командной оболочки, необходимо
сказать несколько слов о возможностях
перенаправления ввода и вывода программ
(не только программ командной оболочки)
в ОС Linux.

Перенаправление вывода

Ранее были рассмотрены некоторые виды
перенаправления, например, такие как:

$ ls-l>lsoutput.txt

сохраняющие вывод команды lsв файле с именемlsoutput.txt.

Однако перенаправление позволяет
сделать гораздо больше, чем демонстрирует
этот простой пример. Cейчас
нужно знать только то, что дескриптор
файла 0 соответствует стандартному
вводу программы, дескриптор файла 1 —
стандартному выводу, а дескриптор файла
2 — стандартному потоку ошибок. Каждый
из этих файлов можно перенаправлять
независимо друг от друга. На.самом деле
можно перенаправлять и другие дескрипторы
файлов, но, как правило, нет нужды
перенаправлять любые другие дескрипторы,
кроме стандартных: 0, 1 и 2.

В предыдущем примере стандартный вывод
перенаправлен в файл с помощью оператора
>. По умолчанию, если файл с заданным
именем уже есть, он будет перезаписан.
Для дозаписи в конец файла используйте
оператор >>. Например, команда

$ ps>>lsoutput.txt

добавит вывод команды psв конец заданного файла. В этом примере
и далее знак $ перед командой – приглашение
ОСLinux.

Для перенаправления стандартного потока
ошибок перед оператором > вставьте
номер дескриптора файла, который хотите
перенаправить. Поскольку у стандартного
потока ошибок дескриптор файла 2, укажите
оператор 2>. Часто бывает полезно
скрывать стандартный поток ошибок,
запрещая вывод его на экран.

Предположим, что вы хотите применить
команду killдля завершения
процесса из сценария. Всегда существует
небольшой риск, что процесс закончится
до того, как выполнится командаkill.
Если это произойдет, командаkillвыведет сообщение об ошибке в стандартный
поток ошибок, который по умолчанию
появится на экране. Перенаправив
стандартный вывод команды и ошибку, вы
сможете помешать командеkillвыводить какой бы то ни было текст на
экран.

Команда $ kill -HUP 1234 > killout.txt
2>killer.txt

поместит вывод и информацию об ошибке
в разные файлы.

Если вы предпочитаете собрать оба набора
выводимых данных в одном файле, можно
применить оператор >2 для соединения
двух выводных потоков. Таким образом,
команда

$ kill-1 1234 >killerr.txt2>41

поместит свой вывод и стандартный поток
ошибок в один и тот же файл. Обратите
внимание на порядок следования операторов.
Приведенный пример читается как
«перенаправить стандартный вывод в
файл killerr.txt,
а затем перенаправить стандартный поток
ошибок туда же, куда и стандартный
вывод». Если вы нарушите порядок,
перенаправление выполнится не так, как
вы ожидаете.

Поскольку обнаружить результат выполнения
команды killможно с помощью
кода завершения, часто не потребуется
сохранять какой бы то ни было стандартный
вывод или стандартный поток ошибок. Для
того чтобы полностью отбросить любой
вывод, можно использовать универсальную
«мусорную корзину»Linux,
/dev/null,
следующим образом:

$ kill-1 1234 >/dev/null2>fil

Перенаправление ввода

Также как вывод можно перенаправить
ввод. Например $ more<killout.txt

Каналы

Процессы можно соединять с помощью
оператора канала | . Как пример, можно
применить команду sortдля
сортировки вывода командыps.

Если не применять каналы, придется
использовать несколько шагов, подобных
следующим:

$ ps > psout.txt

$ sort psout.txt > pasoirt.out

Соединение процессов каналом даст более
элегантное решение:

$ ps|sort>pssort.out

При желании увидеть на экране вывод,
разделенный на страницы, можно подсоединить
третий процесс, more:

$ ps|sort|more

Предположим, что необходимо видеть все
имена выполняющихся процессов, за
исключением командных оболочек. Можно
использовать следующую командную
строку:

$ ps-xоcomm|sort|uniq|grep-vsh|more

В ней берется вывод команды ps,
сортируется в алфавитном порядке, из
него извлекаются процессы с помощью
командыuniq, применяется
утилитаgrep-vshдля удаления процесса
с именемshи в завершение
полученный список постранично выводится
на экран. Это более элегантное решение,
чем строка из отдельных команд, каждая
со своими временными файлами.

Соседние файлы в папке ОС 2013 2к ДО

  • #
  • #
  • #
  • #
  • #
  • #
  • #

os
/

Написание сценариев BASH

Практическое знакомство с интерпретатором сценариев Bash. Основной синтаксис языка сценария.

  1. Получите, используя переменные окружения, имена текущего каталога и домашнего каталога.
  2. Создайте новую переменную NEWVAR со значением 1982 и проверьте, доступна ли она в порожденной оболочке. Экспортируйте переменную NEWVAR и снова проверьте, доступна ли она в порожденной оболочке.
  3. Получите списки переменных окружения с их значениями. Изменить приглашение PS1 (любое отличное от «->»).
  4. В сценарии sl.sh определите переменную V и выведите ее значение.
  5. Перепишите сценарий sl.sh таким образом, чтобы из него вызывался сценарий s2.sh, который и печатал бы значение переменной V.
  6. Напишите сценарий оболочки, считывающий значения трех переменных и выводящий их значения в стандартный поток вывода. Проверьте его работу, вводя два, три и четыре значения.
  7. Создать сценарий, который при вводе пользователем: «1» – создает файл и копирует его в другую папку «2» – создает файл и перемещает его в другую папку «3» – просто создает каталог
  8. Создать сценарий, который находит максимальное из трех, введенных пользователем, чисел и записывает их файл. В сценарии должны быть пояснения для ввода пользователя (приглашения).
  9. Создать сценарий, который требует ввести какое-либо имя и, если оно равно имеющемуся программе имени, то выводится сообщение «Привет, Имя!». Если пользователь вводит новое имя, то выводится сообщение «Ты ни Имя1, ни Имя2, ни Имя3. Но все равно, привет, Имя!».
  10. Создать сценарий, который вычисляет факториал числа.
  1. Методичка
  2. habrahabr
  3. freeschool
  4. linuxgeeks

Updated 2017-02-07


С этим файлом связано 1 файл(ов). Среди них: RiVG_laboratornaya_2_semestr.docx.
Показать все связанные файлы


Подборка по базе: Экзаменационные вопросы (1) разработка кода .docx, Методическая разработка квеста по страноведческой тематике _Haun, 1 лаба отчет нормальный.docx, Разработка сценариев с помощью специализированных языков.docx, Акт скрытых работ Разработка Котлавана Раджа.docx, Габидуллин И.Р. Реферат Разработка цифрового двойника установки , методическая разработка Леванян.doc, Практическое задание 5.2.1. Разработка Инструкции по конфиденциа, 1 лаба ПиАхп.docx, курсовая разработка.docx


Разработка сценариев bash
Цель работы – практическое знакомство с методами создания и использования сценариев ОС Linux
1. Получить полный список ключей команды stat.

Аргументы, обязательные для длинных ключей, обязательны и для коротких.

-L, —dereference следовать по ссылкам

-f, —file-system показать состояние файловой системы, а не файла

-c —format=ФОРМАТ использовать указанный ФОРМАТ, а не принимаемый по

умолчанию; переводить строку после каждого

использования ФОРМАТА

—printf=FORMAT как —format, но интерпретировать экранирующие

последовательности и не переводить строку в конце.

Если вам нужен перевод строки, вставьте в ФОРМАТ n.

-t, —terse выводить информацию в компактной форме

—help показать эту справку и выйти

—version показать информацию о версии и выйти
Допустимые форматные последовательности для файлов (без —file-system):
%a права доступа в восьмеричной форме

%A права доступа в читаемой форме

%b число выделенных блоков (см. %B)

%B размер блока, сообщаемого %b, в байтах

%C строка контекста безопасности SELinux

%d номер устройства, десятичный

%D номер устройства, шестнадцатеричный

%f низкоуровневый режим, шестнадцатеричный

%F тип файла

%g ID группы-владельца

%G имя группы-владельца

%h количество жёстких ссылок

%i количество Inode

%m точка монтирования

%n имя файла

%N экранированное имя файла, символьная ссылки разыменовывается

%o оптимальный размер блока ввода/вывода

%s полный размер в байтах

%t основной тип устройства, шестнадцатеричный формат

%T второстепенный тип устройства, шестнадцатеричный формат

%u ID пользователя-владельца

%U имя пользователя-владельца

%w время создания файла; — , если неизвестно

%W время создания файла в секундах с начала Эпохи; 0, если неизвестно

%x время последнего доступа

%X время последнего доступа в секундах с начала Эпохи

%y время последней модификации

%Y время последней модификации в секундах с начала Эпохи

%z время последнего изменения

%Z время последнего изменения в секундах с начала Эпохи
Допустимые форматные последовательности для файловых систем:
%a количество свободных блоков, доступных для обычного пользователя

%b общее количество блоков данных в файловой системе

%c общее количество файловых нод в файловой системе

%d количество свободных файловых нод в файловой системе

%f количество свободных блоков в файловой системе

%i идентификатор файловой системы, шестнадцатеричный

%l максимальная длина имени файла

%n имя файла

%s размер блока (для быстрейшей передачи)

%S фундаментальный размер блока (для подсчета блоков)

%t тип файловой системы, шестнадцатеричный

%T тип файловой системы в понятном для человека виде

2. Вычислить факториал целого числа, вводимого с клавиатуры. Предусмотреть проверку правильности ввода аргумента.

(( )) — математическое сравнение.

[ — используется для логического сравнения.

fi — обозначаем окончание условия.

Комментарий начинается со знака # и продолжается до конца строки. Принято знак # ставить в первой символьной позиции строки. Первая строка #! /bin/sh — это особая форма комментария; символы #! сообщают системе о том, что следующий за ними аргумент — программа, применяемая для выполнения данного файла. В данном случае программа /bin/sh — командная оболочка, применяемая по умолчанию.

Команда exit гарантирует, что сценарий вернет осмысленный код завершения.

листинг:

Выр1 -gt Выр2 True (истина), если Выр1 меньше Выр2
Выр1 -lt Выр2 True (истина), если Выр1 меньше, чем Выр2

#!/bin/bash 
echo «Введите число от которого будете брать факториал» 
read counter 
factorial=1 
if [ $counter -lt 0 ] 
then 
echo «Введите положительное число или ноль» 
else 
while [ $counter -gt 0 ] 
do 
factorial=$(( $factorial * $counter )) 
counter=$(( $counter — 1 )) 
done 
echo $factorial 
fi 
exit 0

3. Найти первые N чисел Фибоначчи, используя рекуррентное соотношение

Ai+1=Ai+Ai-1

Значения первых двух чисел и необходимое количество чисел N ввести с клавиатуры.

листинг:

#!/bin/bash

echo «Введите первое число:»

read a

echo «Введите второе число:»

read b

echo «Введите количество элементов последовательности:»

read N

echo «Первые» $N «чисел Фибоначчи:»

i=1

while [ $i -le $N ]

do

let «d=(($b+$a))»

a=$b

b=$d

let «i+=1»

echo «$b»

done

exit 0

4. Написать и выполнить сценарии для решения индивидуальных задач, номер задачи определяется номером бригады:

4 вариант. В текущем каталоге найти имя файла, который был изменен позже всех. На экран вывести дату изменения и имя файла.

Для получения доступа к отдельным полям информации о файле или файловой системе к приведенным выше командам добавляется ключ –с и параметр, определяющий поле.

%n имя файла

% y Время последней модификации

-r в обратном порядке

Line вывести одну строку

листинг

#!/bin/bash

stat -c ‘%y %n’ * | sort -rh | line

exit 0

Решение лабораторных работ на bash

Список лабораторных работ

  • Генератор паролей
  • Время выполнения команды
  • Список процессов
  • Конвертер текста
  • Игра

Passgen

Задание

Требуется написать скрипт на языке bash, который будет генерировать пароли, содержащие символы из набора: прописные и строчные символы латинского алфавита и арабские цифры.
Вывод паролей производить на стандартный вывод(stdout), каждый пароль отделяется символом новой строки. После вывода скрипт обязан завершиться. В случае возникновения ошибок следует вывести сообщение с описанием ошибки на стандартный поток ошибок(stderr).
Количество символов в каждом пароле задается пользователем с помощью аргумента командной строки “-l <число>”, где <число> — это длина пароля в символах.
Количество генерируемых паролей задается пользователем с помощью аргумента командной строки “-n <число>”, где <число> — это длина пароля в символах.
Если какой либо аргумент не задан пользователем, то его значение принимается стандартным(n=5, l=10).
Если пользователь допустил синтаксическую ошибку в написании имени параметра или ввел недопустимое значение, то утилита должна завершиться с ненулевым кодом возврата и вывести сообщение об ошибке с описанием.
Также возможно использование одиночного аргумента “-h”, при получении которого скрипт должен вывести справку и описание выполняемой задачи, а также автора(ов).
Такой алгоритм поведения должен соблюдаться в последующих лабораторных работах.

Пример работы

passgen

Time

Задание

Требуется написать скрипт-обертку для замера времени выполнения команды.
Команда передается в качестве набора аргументов, информация по времени выполнения выводится на stdout после завершения работы исследуемой команды.
Основной алгоритм не должен использовать стандартную утилиту /usr/bin/time и time команду языка bash.
При запуске без аргументов или с аргументом -h(—help) скрипт должен вывести справку.

Пример работы

time

Ps

Задание

Требуется написать скрипт на языке bash, который будет выводить список процессов и информацию о них на экран.
Вся информация для вывода должна считываться с псевдофайловой системы /proc.
Вывод осуществлять колонками:

  1. PID (обязательный столбец)
  2. имя процесса
  3. физическая память процесса
  4. состояние процесса (интерпретированное)
    Запуск без аргументов подразумевает вывод всех столбцов.
    Также можно определять выводимые столбцы:
    -n —name — имя процесса
    -m —memory — память процесса
    -s —state — состояние процесса
    Также возможно использование одиночного аргумента “-h”, при получении которого скрипт должен вывести справку и описание выполняемой задачи, а также автора(ов).

Пример работы

ps

Sedtext

Задание

Требуется написать скрипт на языке bash, который будет обрабатывать входной текстовый поток по заданным правилам.
Выполняемые операции:

  1. преобразование концов строк в формат DOS (0x0D0A), аргументы для данного преобразования: -d, —unix2dos
  2. преобразование концов строк в формат UNIX (0x0A), аргументы для данного преобразования: -u, —dos2unix
  3. преобразование множественных пробелов в один, аргументы для данного преобразования: -s, —spaces
  4. преобразование множественных тире в двойное тире, аргументы для данного преобразования: -m, —minus
    Аргументы возможно использовать совместно (без логических противоречий)
    Также возможно использование одиночного аргумента “-h”, при получении которого скрипт должен вывести справку и описание выполняемой задачи, а также автора(ов).

Пример работы

sedtext

Game

Задание

Требуется написать скрипт-игру на языке bash.
Суть игры заключается в том, что пользователю предоставляется в терминале игровое поле (стандартный размер 10х10 ячеек, может быть изменен с помощью аргумента, max 32×32), на котором символом отмечено положение самого игрока, имеется возможность перемещения (вверх, вниз, влево и вправо) по игровому полю, если по данному направлению отсутствуют преграды (границы поля, объекты).
Также имеется возможность устанавливать объекты на свободные участки поля и их собирать. Объект устанавливается по направлению последнего движения, и собирается аналогично.
При запуске показывается заставка со справкой и описанием игры, а также написаны имена автора(ов).

Пример работы

game

Цель
работы
:
применение
сложного синтаксиса команд, сортировка
и поиск текста в файлах по образцу,
изучение структуры сценариев командного
интерпретатора
bash,
использования переменных командного
интерпретатора; создание
shell-сценариев
с использованием переменных сценария,
использование команды тестирования;
создание
shell-сценариев
с применением сложного синтаксиса,
команд условия и условных операторов.

Продолжительность
работы
— 4 ч.

При
составлении сценариев в ряде случаев
полезно использовать функции поиска
текста в файлах по образцу. Их выполняют
три команды-фильтра grep, fgrep, egrep,
имеющие отличия в функциональном
назначении. В последних версиях командных
интерпретаторов увеличилось количество
общих свойств этих функций.

Общая
структура этих команд следующая:

$
команда шаблон опции каталоги_файлы

Шаблоны
— фрагменты текста, по которым ведется
поиск в файлах. Команды имеют разный
синтаксис шаблонов. Имя каталога можно
не указывать, если файлы находятся в
текущем каталоге. Команда fgrep работает
для большего количества образцов и
файлов, причем быстрее, чем grep, но
она не работает с регулярными
выражениями
, как grep. Команда
egrep объединяет
возможности grep и fgrep, а также
может применять в образцах расширенный
набор специальных символов. В последних
версиях КИ Bash все эти
возможности присутствуют в команде
grep.

В
шаблонах можно использовать регулярные
выражения
— образцы со специальными
символами, формирующие шаблон и
использующие следующие символьные
обозначения:

^
— циркумфлекс означает начало строки в
описании шаблона;

$
— знак доллара означает конец строки в
описании шаблона;

.
— знак точка применяется для сопоставления
в образце с любым одиночным символом;

[]
— квадратные скобки, используются для
сравнения семантически схожих классов
символов;

*
— звездочка, используется для сравнения
произвольного количества повторяющихся
символов.

Структура
команды grep следующая:

$
grep образец имя_файла

$
grep ‘образец из нескольких
слов’ имя_файла

Опции
команды grep (опции не
являются обязательными):

i
— выполнить поиск без учета регистра,

n
— вывести номера строк, в которых найден
образец,

с
— вывести на стандартный вывод (обычно
на терминал) количество строк,
соответствующее образцу,

v
— вывести строки, не содержащие образца,

l
— вывести имена файлов, которые содержат
строки, совпадающие с образцом.

Пример
1.
Определить, есть ли в файле letter
строки, начинающиеся на Hello

$ grep Hello
letter

Hello, my dear
frend
— пример результата вывода.

Команду
можно использовать для поиска в нескольких
файлах, тогда результат поиска выводится
с указанием имени файла. Если в образце
несколько слов, то в шаблоне необходимо
использовать одинарные кавычки:


$ grep ‘Hello,
my dear frend’ fletter letter letter2

letter:Hello,
my dear frend
— пример результата вывода.

fletter:
Hello, my dear frend

Пример
2.
Поиск слова while
во всех файлах с расширением cpp,
расположенных в текущем каталоге:

$
grep while *.cpp

Пример
3.
Для команд grep
и egrep применяются
следующие правила формирования шаблона,
использующие регулярные выражения:

$
grep
^пеpвoе_cлoвo_cтpoки_фaйлa
имя_файла
;

$
grep ‘последнее
слово строки файла$’ имя_файла
;

$
grep ‘а*’

ищутся
строки с повторяющимися символами а;

$
grep ‘а.l

ищутся строки, где есть словосочетания
с неизвестной любой

буквой,
расположенной между
а
и
l;

Прмер
3.
Найти
строки со словами, начинающимися с а:

$
grep ‘а.’

Структура
команды egrep:

$
egrep образцы список_файлов

Команда
egrep объединяет
возможности grep и fgrep, а также
может применять в образцах расширенный
набор специальных символов:

(образцы)
— круглые скобки для группирования
образцов;

 ‑
логический оператор
И;

символ?
-.поиск одного или нуля предыдущих
символов;

символ+
— поиск одного или нескольких повторений
предыдущего символа.

Пример
4
. Если нужно в тексте найти образец,
включающий специальные символы, то знак
обратного слеша перед символом позволяет
считать его символом текста:

$ egep
‘Hello!’ fileletter

Hello!
 пример результата вывода

Пример
5.
Найти
строки
с шаблоном
a.x,
вместо знака точка подразумевается
произвольный символ:

$ egrep ‘a.x’
file110

$ grep ‘a.x’
file110

Пример
6.
Найти файлы со строками, в которых
есть слова, начинающиеся с символа а,
или символов аа или ааа и т.д.

$ egrep ‘a*’
file

$ grep ‘a*’
file

Пример
7.
Поиск слов big или
pig:

$ egrep
‘[bp]ig’ file

$ grep
‘[bp]ig’ file

Пример
8.
Поиск одного или нескольких символов
t:

$ egrep ‘t+’
file8

Пример
9.
Поиск одного или 0 символов b:

$ egrep ‘b?’
file9

Пример
10.
Поиск описаний блок-ориентированных
устройств (при выполнении $ ls
l строки каталогов
начинаются на символ d,
строки с именами файлов начинаются на
символ «короткое тире» (-), строки
с именами блок-ориентированных устройств
‑ на b):

$
lsl
grep ‘^b

Пример
11.
Поиск слов my1,
my2, my3,
и т.д. до my8

$ grep
‘my[1-8]’ file

Пример
12.
Поиск слов в файле из диапазона,
включающего цифры от 1 до 8 ( my1,
my2, my3
до my 8) , и диапазона,
включающего символы a, b,
c mya,
myb, myc

$ grep
‘my[1-8a-c]’ file

Пример
13.
Поиск по двум шаблонам:

$ egrep ‘while
for /usr/include

Пример
14.
Если в образец включены
специальные символы, они добавляются
в кавычках, так как в качестве специальных
символов регулярного выражения и
групповых символов командного
интерпретатора используются одни и те
же символы *, [].

$
lsl
grep ‘^-‘

выйдут
на печать или будут отображены на экране
файлы для чтения:

-rwxr-x—
user1 512 Feb 10 8 34 file1
.

$
lsl
grep ‘^d

На
экран выводится список содержимого
текущего каталога:

drwxr-x—
user
user2
512 Feb 12 8 32 file11

Структура
команды fgrep:

$
fgrep образец большой_список_файлов

Команда
fgrep не использует
символы ^, $, *, ,
[], и регулярные выражения, включающие
эти символы. Команда fgrep
для регулярных и полных регулярных
выражений не работает, но fgrep
— очень быстрая команда для известных
ей выражений. ОС Linux внешне
не реагирует на эту команду, если
встречаются непонятные ей выражения в
образцах.


Процесс

Любая
выполняемая команда в ОС Linux
и ОС UNIX порождает процесс
— задачу, выполняемую системой. Чтобы
посмотреть, какие процессы идут в
системе, следует набрать команду: $ ps
без опций.

В
первой колонке появившегося списка,
представляющего собой таблицу, указан
хозяин процесса UID, во
второй — системный номер процесса PID,
или идентификатор процесса, в третьей
— время выполнения процесса, в четвёртой
колонке – на какое внешнее устройство
предполагается вывод, в последнем
столбце списка — имя процесса,
соответствующее названию команды.
Порядок и количество описываемых
характеристик зависит от КИ и его версии.

Задание
1.
Выполните несколько
упражнений по управлению процессами.
Возможно, Вы сможете войти в две консоли
(терминала) без регистрации, это зависит
от установок в системе. Откройте их.
Запустите редактор Vim в одной из них и
введите небольшой текст. Не записывая
текст в файл, переключитесь в другую
консоль и просмотрите список всех
запущенных процессов с помощью команды:
$ ps
(с опцией
a).
Выясните, какая программа сейчас активна
и занимает больше памяти.

Найдите
PID для запущенного
редактора Vim, для
этого, если список процессов большой,
используйте команды grep
и ps: $ ps | grep vim.

Закройте
Vim с помощью команды
kill или killall.
Запустите Vim ещё раз,
вернувшись по истории команд на шаг
обратно.

Многие
команды ОС Linux
принимают данные со стандартного
ввода или передают на стандартный вывод.
По умолчанию в качестве устройства для
стандартного ввода используется
клавиатура, для стандартного вывода —
терминал. Перенаправление стандартного
вывода в файл или на устройство
обозначается знаком «больше» (>).
Стандартный ввод может быть получен не
с клавиатуры, а из файла. Оператором
перенаправления стандартного ввода
является знак «меньше» (<).

Пример
1.
Вывести на экран содержимое файла
file и записать в новый
файл file1 можно,
используя перенаправление стандартного
ввода-вывода, представляющего байтовый
поток. Чтение данных из файла file
и запись в fi1le1
в командной строке осуществляются
следующим образом:

$
cat < file >
file1

То
же самое, но только с опцией -i
проверки наличия файла filef:

$
cat < file >
i file1

Поскольку
файл уже создан, появится сообщение о
наличии файла file1, нужно ответить
n, чтобы не изменять
уже существующий файл, или y,
чтобы записать в него.

Если
требуется добавить информацию в файл,
т.е. осуществлять запись в него не с
начала файла, а в конец уже имеющейся
записи в файле, то используется оператор
добавления. Допишем в fi1e1
информацию из файла file2:

$
cat file2 >>
file1

ОС
Linux поддерживает стандартный
вывод сообщений об ошибках (2>),
отличающийся от стандартного вывода,
результат выводится в файл и в зависимости
от настроек на экран.

Пример
2. Чтобы сообщения об ошибках
выполнения команды cp записать в
файл error, следует
выполнить команду:


$
cp fileprog

/k1 2>
error

Чтобы
добавить сообщения об ошибках в файл
error, вместо знака
(>) предыдущей команды нужно использовать
знак добавления (>>):

$
cat fileinfo
2
>>
error

Ошибка могла
возникнуть, если указанные файлы не
существуют.

Для
передачи результат выполнения команды
в другую команду используется символ
вертикальной черты | — так называемый
программный канал. Другими словами, он
передаёт выходные данные команды на
вход следующей команды.

Пример
3.
Передать в файл filelist
список имен файлов текущего каталога,
выданный командой ls.
Передача данных в данном примере
осуществляется по программному каналу:
$ ls | cat > filelist.

Архивирование
выполняется для объединения файлов в
один пакет, что часто необходимо для
пересылки большого количества небольших
файлов по сети, а также для архивирования.
Группа файлов имеет меньший объем, чем
сумма объемов файлов, что особенно
заметно, когда файлы однотипные и их
достаточно много. При сетевой пересылке
быстрее обработать группу файлов, чем
каждый по-отдельности. Сжатие выполняется
для уменьшения размеров файлов,
предназначено для хранения и пересылки
больших файлов, его алгоритмы аналогичны
алгоритмам сжатия, используемым в
приложениях ОС Windows.

Задание
2.
Для изучения возможностей команд
архивирования и сжатия проделайте
следующие упражнения. Имена файлов и
каталогов можете использовать свои.

1.
Создайте в каталоге k1
подкаталог k2,
включите в него файлы file1,
file2, file3.
Заархивируйте (без сжатия) командой
tar эти 3 файла, архив
поместить в том же каталоге, что и файлы:

$
tar cvf
имя_каталога/имя_
apxивa.tar
имена_файлов

Обратите
внимание, что в этой команде опции
используются без знака минус: v
— отображение имени каждого архивируемого
в данный момент файла, с — создание
нового архива, f
запись в архив по указанному имени, а
не на стандартное устройство по умолчанию,
эта опция пишется последней из опций.

2.
Добавьте в архив еще один файл (из ранее
созданных или доступных в системе):

$
tar
rvf
имя_каталога/имя_apxивa.tar имя_файла
.

5.
Извлеките файл file3 из архива и
поместите в каталог k1:

$
tar xvf имя_архива.tar file3 -C /home/user5/k1/

6.
Просмотрите файлы, хранящиеся в архиве:

$
tar tvf
имя_каталога/имя_
apxивa.tar

7.
Сжатие файлов наиболее часто выполняется
командой-утилитой gzip,
распаковывание — утилитой guzip
Сжатые файлы имеют имя такое же, как у
файла, расширение — .gz.

Опции
команды gzip: v сообщает степень сжатия
каждого файла в процентах, где опция
-число, которое устанавливает
степень сжатия, число от 1 до 9, чем больше
число, тем больше степень сжатия, тем
дольше выполняется сжатие; по умолчанию
степень сжатия равна 6. Команда gzip
является утилитой, поскольку имеет
большие функциональные возможности.
Опция h выдаёт
перечень справочной информации по ним.

Попробуйте
сжать Ваш файл, как указано в примере
использования утилиты: $ gzip -7 file3


Для
распаковывания вместо guzip
можно использовать gzip с опцией
d. Файлы сжатия
и архивирования имеют расширения.
Известная уже команда $ ls
выводит список имён файлов с их
расширениями.

8.
Выведите на экран содержимое сжатого
файла, для чего воспользуйтесь командой
zcat и направьте вывод
в команду отображения:

$
zcat file3.gz
|
more

9.
Архивированные файлы можно сжимать, в
результате получаются файлы, имеющие
расширение .
tar.gz.

$
gzip
имя_каталога/имя_
apxивa.tar

$
ls — посмотреть
расширение вновь созданного файла.

10.
Сначала выполните сжатие, затем
архивирование:

$
tar czf
archfZ.tar file2

По
опции z сначала
выполняется сжатие, затем архивирование.

Просмотрите
результат:
$ ls

11.
Сжатие файлов по другому алгоритму
сжатия выполняется командой bzip2,
восстановление ‑ командой bunzip2,
расширения файлов архивов при этом
bz2.

Перенесите
файл filel в каталог myx/katal,
выполните сжатие, если команда есть в
системе, просмотрите файлы, выполните
восстановление файла: $
bzip2
myx/katal/filel

$
ls -l

$
bunzip2 myx/katal/filel.bz2

12.
Посмотрите в справочнике man
информацию о командах сжатия zip
и
compress и на своих
примерах проверьте их работу. Форматы
их файлов .zip и
.Z
соответственно. Новые файлы добавить
в архив. Опция r команды
tar добавляет файлы в
архив. Просмотреть созданные структуры,
используя команду ls
с соответствующими опциями.

Команды
можно группировать, объединяя их
логическими действиями и устанавливая
определенные режимы. Для этого используются
следующие средства:

знак
;
— определение последовательности
выполнения команд;

знак
&
— асинхронное (фоновое) выполнение
предшествующей команды;

знак
&&
— выполнение последующей команды
при условии нормального завершения
предыдущей, иначе игнорировать;

знак
||
— выполнение последующей команды
при ненормальном завершении предыдущей,
иначе игнорировать последующую команду.

Чтобы
выполнить команды в фоновом режиме (в
асинхронном режиме) после команды
ставится знак «амперсанд», при
выполнении команды на экран выводится
номер процесса, соответствующий
выполняемой команде, и система, запустив
этот фоновый процесс, вновь выходит на
диалог с пользователем.

Пример
1.
Найти в системе файл с именем file2.
Команду поиска find использовать
в фоновом режиме, поиск вести, начиная
от корневого каталога /; затем выполнить
команду определения путевого каталога
pwd, определяющего, где находится
пользователь, в обычном режиме.

$
find / -name file2 -print &

ввод команды find

818
на
терминал выведен номер (
PID)
фонового процесса

$
pwd

ввод команды
pwd

/mnt/floppy/laba2
результат
работы
pwd

$
возвращение
в
shell

/home/student12/lab/file2 результат
работы
find

Для
группировки команд также могут
использоваться фигурные, обозначаемые
знаком {}, и круглые, обозначаемые знаком
(), скобки. Рассмотрим примеры, сочетающие
различные способы группировки. Пусть
k1, k2 и k3 — некоторые команды.

Пример
2.
Пусть введена групповая команда:


Предложите, как улучшить StudyLib

(Для жалоб на нарушения авторских прав, используйте

другую форму
)

Ваш е-мэйл

Заполните, если хотите получить ответ

Оцените наш проект

1

2

3

4

5

Понравилась статья? Поделить с друзьями:
  • Лаборатория праздников открывашка зеленоград
  • Лаборатория праздника открывашка зеленоград
  • Лабиринт фавна сценарий
  • Лабиринт профессий сценарий мероприятия
  • Лабахада праздник что это