- •1. Просмотр каталога (list): ls -ключи путь/имя_файла
- •Примеры:
- •Изменение прав доступа к файлу
- •Смена владельца (change owner): chown имя_пользователя имена_файлов смена группы (change group): chgrp имя_группы имена_файлов
- •Создание жестких и символьных ссылок
- •Создание жесткой ссылки: ln имя_файла имя_ссылки
- •Создание символьной ссылки:
- •Ввод и вывод. Перенаправление ввода и вывода
- •Работа с текстом в файлах
- •Поиск строк в файле, соответствующих регулярному выражению: grep -ключи шаблон файлы
- •Сортировка строк текста : sort -ключи имена_файлов
- •Выделение колонки текста: cut -ключи имена_файлов
- •Замена символов в строках: tr набор_символов1 набор_символов2
- •Конвейеры
- •Текстовый редактор VI
- •Запуск редактора:
- •Командный режим.
- •If условие
- •If условие
- •Выполнение арифметических операций: команда expr
- •127 (Результат)
- •Задания:
If условие
then
список команд
fi
В общем случае оператор if имеет структуру:
If условие
then
список команд 1
elif условие
then список команд 2
elif ...
...
else
список команд N
fi
elif сокращенный вариант от else if.
Если выполняется условие, т.е. условие истинно, то выполняется список команд, иначе он пропускается. Обратите внимание, что структура обязательно завершается служебным словом fi.
Создадим командный файл del, который будет удалять файл или каталог, имя которого вводится через параметр.
Командный файл del:
#! /bin/sh
if [ -d $1 ] (проверяем: значение параметра является каталогом?)
then
echo "Это каталог. Удалить с файлами (Y)/ Не удалять (N)"
read a
if [ $a = "y" ]
then
rm -r - f $1 (-f удаляет файлы без предупреждения)
fi
else
echo "Это файл. Удалить (Y)/ Не удалять (N)"
read a
if [ $a = "y" ]
then
rm $1
fi
fi
В данном командном файле сначала идет проверка, является ли введенное через параметр имя, каталогом. Если да, то пользователь решает удалять или не удалять этот каталог. Введенное пользователем значение записывается в переменную а, затем осуществляется проверка, если значение а = «у», то производится удаление каталога.
В противном случае (если введено имя файла) пользователь получает уведомление о том, что это файл, и сообщает удалять его или нет. Если значение а = «у», то производится удаление файла.
Создадим командный файл, который выдает на экран справку о числе файлов, созданных указанным пользователем (через параметр). Предусмотреть возможность удаления этих файлов после выдачи сообщения пользователю.
Командный файлdelusrfile:
#! /bin/sh
find /home -type f -user $1 > ~/findlist (поиск файлов, созданных указанным пользователем, запись списка файлов в findlist)
echo количество файлов, созданных пользователем $1:
wc -l ~/findlist (подсчет кол-ва строк в файле findlist)
echo удалить эти файлы? (y - да , n - нет)
read a
if [ $a = "y" ]
then
cat ~/findlist | xargs -e rm
fi
(считываются строки из findlist и передаются команде xargs, назначение которой строить и выполнять команду, поступившую на вход. Ключ -е позволяет считывать не весь файл целиком, а построчно. Таким образом, строка, содержащая полное имя файла, считывается из findlist и передается команде rm, удаляющей этот файл).
Оператор выбора case
Оператор выбора имеет структуру:
case строка-образец in
строка-шаблон) список команд;;
строка-шаблон) список команд;;
...
esac
Строка-образец (это может быть и один символ) сравнивается со строкой-шаблоном. Если строка-образец совпадает со строкой-шаблоном, то выполняется соответствующий список команд (если команды записываются в одну строку, то ";" будет использоваться как разделитель команд).
Обычно последняя строка выбора имеет шаблон "*", что в структуре "case" означает "любое значение". Эта строка выбирается, если не произошло совпадение значения переменной (строки-образца) ни с одним из ранее записанных шаблонов.
Эта команда часто используется для организации меню. Создадим командный файл, который будет по выбору пользователя совершать ту или иную операцию с указанным файлом.
echo "Введите имя файла: "
read x
echo " Выберите какую операцию выполнить с файлом:
1 - отсортировать
2 - выдать на экран
3 - определить число строк "
read y
case $y in
1) sort < $x ;;
2) cat < $x ;;
3) wc -l < $x ;;
*) echo " Ошибка. Нет такой команды" ;;
esac
Задание: Создайте меню, в котором пользователю предлагается создать, копировать, удалить, переместить, переименовать указанный файл. Все данные, необходимые для выполнения этих команд, вводятся пользователем с клавиатуры.
Оператор цикла while (с истинным условием)
Структура цикла while предпочтительнее тогда, когда неизвестен заранее точный список значений параметров или этот список должен быть получен в результате вычислений в цикле.
while условие
do
список команд
done
Список команд в теле цикла повторяется до тех пор, пока сохраняется истинность условия или цикл не будет прерван изнутри специальными командами ("break", "continue" или "exit"). При первом входе в цикл условие должно выполняться.