Операции проверки файлов (наиболее используемые)



Общая версия Linux. Уровень 1

Введение в скрипты bash. Планировщики задач crontab и at

На этом уроке

  1. Познакомимся с основами написания скриптов в bash.
  2. Разберём, какие переменные существуют в bash.
  3. Посмотрим, как использовать условный оператор if, а также циклы for и while.
  4. Разберём правила написания регулярных выражений в bash, а также утилиты, которые пригодятся в работе с регулярными выражениями.
  5. Научимся составлять задания для планировщиков задач.

 

Оглавление

Глоссарий

Правила написания скриптов. Переменные

Переменные

Переменные окружения

Пользовательские переменные

Специальные переменные

Условный оператор if и циклы

Условный оператор if

Операции проверки файлов (наиболее используемые)

Операции сравнения строк (наиболее используемые)

Операции сравнения целых чисел (наиболее используемые)

Циклы for и while

Регулярные выражения и утилиты для работы с регулярными выражениями

grep

SED

AWK

Crontab и at

At

Crontab

Дополнительные переменные cron

Утилита crontab

Практическое задание

Дополнительные материалы

Используемые источники

Глоссарий

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

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

POSIX — набор стандартов, описывающих интерфейсы между операционной системой и программным обеспечением. Стандарт создан для обеспечения совместимости различных Unix-подобных операционных систем.

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

Планировщик заданий — программа (служба или демон), часто называемая сервисом операционной системы, которая запускает другие программы в зависимости от различных критериев, таких как, например, наступление определённого времени.

 

Правила написания скриптов. Переменные

Bash-скрипты — это сценарии командной строки, то есть наборы обычных команд, которые пользователь вводит с клавиатуры. Для автоматизации каких-то рутинных вещей эти команды объединяются в файл-сценарий, который и носит название скрипт. По сути, любое наше действие в командной строке — это мини-скрипт, например поиск файлов, начинающихся с точки в домашней директории. Можно выполнить команду ls -A и пересчитать все файлы, которые скрыты, то есть начинаются с точки, а можно перенаправить через | (pipe) вывод работы команды ls -A на ввод утилите grep, которая согласно шаблону найдёт нужные нам файлы и передаст найденные строки утилите wc, которая подсчитает их количество: ls -A |grep '^\.'|wc -l. Таким образом мы упростили себе задачу, для этого и нужны скрипты.

Скрипты можно описать в виде файла сценария, а можно в виде однострочного скрипта, то есть последовательности команд, разделённых между собой знаком «;». Такая запись удобна, когда необходимо выполнить набор простых действий, например создать каталог и в этом каталоге создать файл: mkdir dir; touch file. Эти же команды можно записать в файл, используя свой любимый редактор, при этом вместо точки с запятой мы используем перенос строки:

Запустить такой скрипт можно двумя способами:

  1. Выполнить команду bash script.
  2. Сделать файл исполняемым и просто указать имя файла, используя полный путь до него: /home/user/script, либо перед именем указать ./, что говорит о том, что файл запускается именно из текущей директории: ./script.

Недостаток первого способа: перед исполнением файла нам необходимо указать интерпретатор и путь до файла. Недостаток второго способа: в нём будет использоваться интерпретатор команд по умолчанию, а у пользователя может в качестве оболочки стоять интерпретатор, отличный от bash, и тогда скрипт может отработать с ошибкой. Чтобы избежать этих недостатков, существует особая запись в начале файла — shebang (шебанг), которая выглядит как сочетание символов #! и путь до интерпретатора. Например, #!/bin/bashукажет системе, что для выполнения кода после этой строки необходимо использовать bash. Запись #!/usr/bin/perl укажет, что для выполнения кода нужно использовать perl.После этой строки можем писать скрипт.

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

● комментарий в начале строки: # Определяем переменные;

● комментарий в коде: echo “text ” # Выводим сообщение на экран терминала.

Пробел после символа # не обязателен и нужен для удобства чтения.

Переменные

Переменные необходимы для хранения информации. С ними можно выполнить два действия:

● установить значение переменной;

● прочитать значение переменной.

Переменные могут быть определены и вызваны в любом месте скрипта. Для вызова используется символ $ перед именем переменной. Например:

a=123— присвоение переменной a значения 123.

echo $a— вызов значения переменной $a (на экран будет выведено число 123).

В качестве имени переменной могут быть использованы буквы или слова, написанные латиницей, а также сочетания букв и цифр. Значением переменной может быть любое слово или группа слов, цифра, а также команда. Вbashнет строгих различий между типами переменных. С точки зрения командного интерпретатора любая переменная является строкой.

Переменные в bash можно разбить на три группы:

Переменные окружения

Этоспециальные переменные, которые определяются оболочкой и используются программами в момент исполнения. Значения эти переменные получают в момент входа пользователя в систему. Пользовательские переменные окружения прописываются в файлах . bashrc , .profile, которые расположены в домашнем каталоге пользователя.

 

Примеры переменных окружения:

$PWD — текущий каталог.

$ID — покажет имя текущего пользователя и группы, в которых он состоит.

$PATH — покажет путь до исполняемых файлов.

Переменные можно переопределить в рамках текущей сессии. Например, PATH=$PATH:/opt/my_progs/bin — для сохранения всех путей до исполняемых файлов мы при переопределении переменной PATH присваиваем её предыдущее значение $ PATH и добавляем, используя разделитель «:», новый путь:/opt/my_progs/bin. Без сохранения в файлы bashrc или .profile это переопределение будет действовать до конца сеанса пользователя или же всё время работы терминала.

Пользовательские переменные

Это переменные, которые определяет пользователь в момент написания скрипта. Например, присвоение строки hello world: a="hello world". Если переменная состоит из нескольких слов, строка берётся в кавычки. Если значение переменной — команда, то либо она берётся в обратные апострофы: a=`ls`, либоиспользуется $( command ), например, a=$(ls).

Специальные переменные

Это ряд переменных bash, отличных от переменных окружения, которые предопределены операционной системой. Например:

Переменные подстановки: $0 $1 ..$9, где $0 — это имя скрипта, $1..$9 — аргументы, которые мы можем передать скрипту.

$? — статус выполнения предыдущей команды или скрипта, в своём роде логическая переменная. Если возвращает 0 — скрипт завершился успешно, любое другое значение — ошибка выполнения.

Чтобы выполнять арифметические операции с переменными, в bash существует специальная запись: $(( )). В скобках указываются числа и операции над ними.

Например:

a=$((5+5)) echo $a

Запись выведет на экран 10.

 

Условный оператор if и циклы

Условный оператор if

Условные операторы предоставляют возможность решить, продолжать дальнейшие действия или нет. Решение принимается на основе вычисления выражения. В bash, как и в других языках программирования, основной оператор выбора — конструкция if /then /else /fi (если/тогда/иначе/конец_блока).

Конструкция выглядит следующим образом:

if [ выражение ] then    Действия, если выражение истинно else    Действия в противоположном случае fi

Оператор fi обязателен, им закрывается проверка условия. Оператор else не обязателен, поскольку действий в противном условию случае может не быть.

[ ] — аналог команды test. Этокоманда, которая проверяет типы файлов и сравнивает значения. Подробности можно прочитать на странице справочного руководства man test.

[[ ]] — аналог оператора [ ], но с более широкими возможностями. К примеру, у него лучшая поддержка регулярных выражений.

(( )) — используется для арифметических операций.

Используя условный оператор if,мы можем осуществить операции проверки и сравнений.

Операции проверки файлов (наиболее используемые)

-e возвращает true (истина), если файл существует (exists);

-d возвращает true (истина), если каталог существует (directory).

Например:

if [ -e file_name ] then   echo "true" else echo "false" fi

 

Вернётся true, если файл существует, и false, если такого файла нет. Аналогично выполняется проверка существования каталога.


Дата добавления: 2022-06-11; просмотров: 64; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!