- •«Работа в ос unix/Linux и программирование на языке shell»
- •Интерпретатор команд (shell)
- •Структура команд unix
- •Простые команды
- •Стандартные ввод и вывод
- •Параметры
- •Составные команды
- •Специальные символы и подстановка значений
- •Переменные
- •Логические выражения и операторы управления
- •Оператор if:
- •Оператор while:
- •Оператор until:
- •Оператор case:
- •Оператор for:
- •Альтернативная форма оператора for:
- •Оператор select:
- •Оператор break:
- •Оператор continue:
- •Оператор shift:
- •Арифметические выражения
- •Работа пользователя в системе unix
- •Начало и завершение работы в системе
- •Запуск и выполнение команд
- •Фоновые процессы и управление заданиями
- •Скрипты
- •Некоторые команды
- •Справочные команды
- •Man [том]имя_команды
- •Info имя_команды
- •Help имя_встроенной_команды
- •Информационные команды
- •Ls [ключи] параметры
- •History [-c] [число]
- •Hostname [ключи]
- •Ps [ключи]
- •Uname [ключи]
- •Date [ключи] [новая_дата]
- •Cal [ключи] [месяц [год]]
- •Du [ключи] [список_имен]
- •Stat [список_имен]
- •Mv файл1 файл2илиmvсписок_файловкаталог
- •Find список_каталогов [ключи]
- •Rmdir [ключи] список_каталогов
- •Cat список_файлов
- •Команды для работы с данными
- •Echo [ключи] параметры
- •More [файл]
- •Sort [ключи] [-k от_поля [, до_поля]] [список_файлов]
- •Cut [ключи] [файлы]
- •Команды управления процессами
- •Testсписок_аргументов
- •Read [ключи] [список_переменных]
- •Getopts строка_ключей переменная [список_слов]
- •Примеры команд и скриптов
- •Примеры команд интерактивного режима
- •Создание текстового файла
- •Работа с файлами
- •Определить трех пользователей системы, чьи домашние каталоги с содержащимися в них файлами занимают больше всего дискового пространства
- •Примеры скриптов
- •Выдать имена всех файлов каталога-параметра и всех его подкаталогов, отступами показывая вложенность каталогов. Если параметр не задан, начать с текущего каталога.
- •Порядок выполнения работы
- •Примеры заданий на использование команд в интерактивном режиме
- •Список вариантов заданий на разработку командных файлов
- •Контрольные вопросы
Список вариантов заданий на разработку командных файлов
Написать и отладить командный файл (скрипт), выполняющий указанное задание.
Выдать список имен всех файлов (обычных), принадлежащих пользователям, имена которых перечислены как параметры скрипта. Предусмотреть ключи сортировки выдачи файлов по размеру файла и по дате изменения.
Для каждого из файлов, перечисленных в списке параметров, создать отдельный подкаталог своего домашнего каталога и переместить туда файл. В случае, если нельзя выполнить перемещение (нельзя удалить файл), запрашивать пользователя, выполнять ли копирование или пропустить файл. Имена подкаталогов строить путем добавления к имени домашнего каталога чисел 1, 2, 3 и т.д.
Создать вручную «телефонный справочник», состоящий из нескольких записей, содержащих 3 поля: фамилия, адрес, номер телефона. Поля записи разделять знаком табуляции. Составить скрипт, который по заданной фамилии или адресу, или номеру телефона (в зависимости от указанного ключа) выдает значения двух других полей соответствующей записи. В случае, если имеется несколько подходящих записей, выдавать все. При отсутствии подходящих записей выдавать сообщение об этом.
Провести копирование из одного каталога (источника) в другой каталог (приемник) всех файлов, имена которых удовлетворяют заданному шаблону. В зависимости от заданного ключа, запрашивать подтверждение копирования либо для каждого файла, либо только в случае замены существующего файла, либо никогда.
Выполнить в диалоге настройку поиска файла: запросить и ввести шаблон имени, начальный каталог поиска, тип файла, число дней после изменения файла или после обращения к нему, а также строковое значение, которое должно содержаться в файле. Выполнить поиск и вывести имена найденных файлов.
Запустить фоновый процесс, который один раз в минуту проверяет, не вошел ли в систему пользователь с заданным именем. Дождавшись, процесс должен выдать сообщение об этом и завершиться. Вторым параметром скрипта может быть задано максимальное время слежения, после которого процесс завершается в любом случае.
Для заданного текстового файла составить список всех слов, входящих в этот текст, и подсчитать количество вхождений каждого слова. Результат выдать в порядке убывания количества вхождений.
Найти в указанном каталоге все файлы, содержащие заданную строку. Для каждого найденного файла запросить действие, которое необходимо выполнить: удалить файл, запретить доступ к нему прочих пользователей или оставить, как есть.
Контрольные вопросы
В каких случаях оправдано написание шелл-скрипта, а не программы на языке высокого уровня?
Что такое код завершения процесса?
Что такое стандартный вывод ошибок?
Если оба хэндла 1 и 2 были направлены на терминал, то какой результат дадут перенаправления «>file1 2>&1» и «2>&1 >file1»?
Как завершить ввод файла, если в качестве стандартного ввода используется клавиатура?
Что означает символ перенаправления “<<”?
Чем конвейер отличается от списка команд?
В чем отличие записи 'строка'от"строка"?
Какой командой пользователь может перейти в свой домашний каталог?
Чем отличается запись «A=B» от «A=$B»?
Чем отличается запись '$PWD'от"$PWD"?
Какое значение примет выражение `ls`?
Как создать массив в shell? Как обратиться в первому элементу массива?
Как проверить, что файл abcновее, чем файлqwe?
Какое условие проверяется в операторе if?
Что сделает команда «shift 2»?
Если переменная numсодержит число, то как увеличить ее значение на 2?
Что такое виртуальный терминал Linux?
Каково назначение специального комментария «#!\bin\ksh»?
Какими правами доступа к файлу скрипта script1 нужно обладать, чтобы запустить его командой «bashscript1» или командой «./script1»?
Как завершить сеанс работы с UNIX?
Как получить информацию о незнакомой команде?
Как узнать имя (логин), с которым пользователь вошел в систему?
Какой командой можно найти файлы с известным (или частично известным) именем?
Какой командой можно найти файлы, содержащие заданную строку текста?
Для чего используются регулярные выражения?
Для чего используется команда getopts?