Примеры Bash скриптов

Существует достаточное количество оболочек, например — sh, zsh, ksh и другие. Но мы остановимся на Bash, ведь это самая популярная оболочка среди Linux. Теперь даже Microsoft добавила поддержку Bash.

Эта статья предназначена для тех кто хоть немного знаком с языком сценариев Bash. Давайте рассмотрим некоторые примеры Bash скриптов, которые могут быть полезными в вашей повседневной работе.

Примеры Bash скриптов в Linux

Чтобы посмотреть какой интерпретатор команд у вас используется введите команду:

echo $SHELL

Shell

Как видите у меня установлен именно 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 [ "${var:0:1}" = "/" ]; 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. Создание библиотек сценариев

Библиотеки — это сценарии которые можно включать в другие сценарии.

colors()

{

esc="33" ;

# text

blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m";

yellowf="${esc}[33m"; bluef="${esc}[34m"; purplef="${esc}[35m"; cyanf="${esc}[36m"; whitef="${esc}[37m" ;

# backg

blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" ;

yellowb="${esc}[43m"; blueb="${esc}[44m"; purpleb="${esc}[45m" ; cyanb="${esc}[46m"; whiteb="${esc}[47m" ;

# bold, italic, etc...

boldon="${esc}[1m"; boldoff="${esc}[22m";

italicson="${esc}[3m"; italicsoff="${esc}[23m" ;

ulon="${esc}[4m"; uloff="${esc}[24m" ;

invon="${esc}[7m"; invoff="${esc}[27m" ;

reset="${esc}[0m" ;

}

Такие сценари можно легко включить в другой файл командой source и вызвав нужную вам фунцию.

Заключение

Сегодня мы разобрали несколько примеров Bash скриптов. Узнали как их исползовать в виде библиотечных сценариев. Очень много полезного можно написать на Bash, ограничение тому лишь ваше воображение. Но на самом деле, тема Bash скриптов велика и есть целые книги посвященные этой теме. Надеюсь статья была полезна. Про основы работы с Bash вы можете прочитать здесь.



2018-06-11T15:54:31
Информация