Примеры Bash скриптов
Существует достаточное количество оболочек, например — sh, zsh, ksh и другие. Но мы остановимся на Bash, ведь это самая популярная оболочка среди Linux. Теперь даже Microsoft добавила поддержку Bash.
Эта статья предназначена для тех кто хоть немного знаком с языком сценариев Bash. Давайте рассмотрим некоторые примеры Bash скриптов, которые могут быть полезными в вашей повседневной работе.
Примеры Bash скриптов в Linux
Чтобы посмотреть какой интерпретатор команд у вас используется введите команду:
Как видите у меня установлен именно Bash.
1. Первая программа. Модификация команды ‘rm’
#!/bin/bash
dir=»$HOME/.archive/» # directory for deleted files
if [ -d $dir ]; then # check the directory .archive/
file=»$1″
null=»»
else mkdir $dir | chmod 700 $dir # if there is no, create
fi
if [ $file == $null ]; then # error, if not specified file #
echo -e «/!\ No file.. Usage: $0 filename 😉 | archive directory — $dir /!\ »
exit 1
fi
mv $file $dir$(date «+%H.%d.%m»).$file # move file to .archive/
Все мы знаем что делает команда rm, она удаляет файлы. Эта программа создает папку ~/.archive. Далее проверяет задан ли аргумент. Без аргумента программа выдаст сообщение об ошибке и прекратит работу. Если ей передан путь к файлу, она помещает его в директорию ~/.archive и добавляет дату(час,день,месяц) в начало имя файла, чтобы мы могли понять когда удалили файл.
Далее я приведу еще несколько программ, но без обяснений. Эти программы можно модифицировать, улучшать как угодно. Попробуйте написать что-то свое.
2. Проверка наличия пути к программе в переменной PATH
#!/usr/bin/bash
in_path() cmd=$1 ourpath=$2 result=1
oldIFS=$IFS IFS=»:»
for directory in «$ourpath»
do
if [ -x $directory/$cmd ]; then
result=0
fi
done
IFS=$oldFS
return $result
>
##########
4ck() var=$1
if [ «$var» != «» ]; then
if [ «$» = «/» ]; then
if [ ! -x $var ];then
return 1
fi
elif ! in_path $var «$PATH» ; then
return 2
fi
fi
>
##############################
if [ $# -ne 1 ]; then
echo «Usage: $0 command» >&2
exit 0
fi
4ck «$1»
case $? in
0 ) echo «[$1] found in PATH» ;;
1 ) echo «[$1] not found or not executable» ;;
2 ) echo «[$1] not found in PATH» ;;
esac
exit 0
#############################
3. Нормализация вывода даты
#!/bin/bash
monthto() case $1 in
1 ) month=»Jan» ;; 7 ) month=»Jul» ;;
2 ) month=»Feb» ;; 8 ) month=»Aug» ;;
3 ) month=»Mar» ;; 9 ) month=»Sep» ;;
4 ) month=»Apr» ;; 10 ) month=»Oct» ;;
5 ) month=»May» ;; 11 ) month=»Nov» ;;
6 ) month=»Jun» ;; 12 ) month=»Dec» ;;
* ) echo «$0: Unknown month value $1» >&2 exit 1
esac
return 0
>
#################
if [ $# -ne 3 ] ; then
echo «Usage: $0 month day year» >&2
echo «Formats are August 3 1962 and 8 3 1962» >&2
exit 1
fi
if [ $3 -le 99 ]; then
echo «$O: expected 4-digit year value.» >&2
exit 1
fi
if [ -z $(echo $1|sed ‘s/[[:digit:]]//g’) ]; then
monthto $1
else
month=»$(echo $1 | cut -c1 | tr ‘[:lower:]’ ‘[:upper:]’)»
month=»$month$(echo $1 | cut -c2-3 | tr ‘[:upper:]’ ‘[:lower:]’)»
fi
echo $month $2 $3
exit 0
4. Создание библиотек сценариев
Библиотеки — это сценарии которые можно включать в другие сценарии.
Такие сценари можно легко включить в другой файл командой source и вызвав нужную вам фунцию.
Заключение
Сегодня мы разобрали несколько примеров Bash скриптов. Узнали как их исползовать в виде библиотечных сценариев. Очень много полезного можно написать на Bash, ограничение тому лишь ваше воображение. Но на самом деле, тема Bash скриптов велика и есть целые книги посвященные этой теме. Надеюсь статья была полезна. Про основы работы с Bash вы можете прочитать здесь.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.