Дата:2012-12-10
В большинстве своем весь Linux состоит из скриптов, поэтому
просто
необходимо знать этот язык.
По своей сути это всего лишь набор команд
Linux, объединенных при помощи разных конструкций в грамотно
и хорошо продуманный код.
Давайте создадим наш первый сценарий.
Для этого просто откроем текстовый редактор и наполним файл следующим:
vim bash1.sh
#!/bin/bash
who; date
Здесь все просто.
По своей сути знак диеза
(#), в
большинстве случаев, рассматривается как начало комментария, однако
здесь начиная с первой строки он говорит нам, что должен использоваться
интерпретатор bash.
Дальше мы просто выполняем две команды подряд.
Здесь стоит обратить внимание на две особенности:
1) Необходимо дать права на выполнение
chmod u+x bash1.sh
2) echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/game
И
переместить этот файлик в одну из директорий, если конечно вам нужно
обращаться к нему просто по имени, а не по полному месту расположения.
Здесь мы рассмотрели то как создается сценарий, дальше нужно уяснить
несколько вещей.
Всегда при написании сценариев мы будем обращаться с переменными, перенаправлять ввод и вывод, работать с каналами и выполнять математические вычисления.
Для определения новой переменной достаточно сказать:
vim bash2.sh
#!/bin/bash
F=Ivan
I=Ivanov
O=Ivanich
#Выводится с помощью:
echo "FIO $F $I $O"
Результат
sh bash2.sh
FIO
Ivan Ivanov Ivanich
Посмотреть переменные;
# set
BASH=/bin/bash
HISTFILE=/root/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/root
SSH_CLIENT='192.168.200.3 9382 22'
SSH_CONNECTION='192.168.200.3 9382 192.168.200.252 22'
Существует еще один очень интересный и полезный способ задания
переменной при помощи
` `
#!/bin/bash
day=`date +%y%m%d`
# В дальнейшем переменную $day можно вставить в скрипт, например бэкапа
rsync
-avz /root/data /root/backup.$day
В результате выполнения такого скрипта появится бэкап с определением
даты создания бэкапа.
> Перенаправление в файл с полным затираем содержимого
файла
>> Перенаправление с добавлением в файл, к концу
уже имеющегося содержимого.
ls -al / > 123
А команда:
ls -al /home >> 123
Выведет список всех файлов из корня и затем добавит после этого
содержимое каталога Home
такое перенаправление называется перенаправление
вывода
Перенаправление ввода - содержимое перенаправляется в
команду.
sort < sort.txt
Команды сорт производит сортировку по алфавиту в результате чего,
хаотично наполненный файл sort.txt после перенаправления в
программу sort будет отсортирован по алфавиту
sort < sort.txt | more - а построение в канал отобразит
отсортированные данные постранично
sort < sort.txt | grep s | more - отсортирует и выведет все со
знаком "S"
Еще одной полезной штукой, которую необходимо знать, является
передача результата одной команды в другую или несколько.
Примером этому может служить:
cat /var/log/maillog | grep blocked | more
1) cat - выводит на экран весь лог файл
2) дальше этот лог файл передается на обработку команде grep которая
выводит только с Blocked,
но так как сообщений с этим статусом много необходимо передать ее
команде more
3) more - необходима для постраничного просмотра данных
Такая последовательность команд называется передача в канале,
когда данные из одной команды передаются на обработку другой, а те еще
одной и так далее пока не примут нужный вид.
Математические вычисления в Linux легче всего
выполнять при помощи команды bc
При этом неследует задать количество знаков после плаваюшей запятой при
помощи scale
#!/bin/bash
var1=45
var2=22
var3=`echo "scale=3; $var1/$var2" | bc`
echo $var3
Далее >>> Изучаем BASH (Интсрукции)
Количество просмотров: 8593
Комментарии к статье:
Добавить комментарий
Автор комментария: Аноним
Дата: 2019-07-30
Полезно, однозначно.