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

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

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

Содержание статьи: Примеры Bash скриптов в Linux 1. Первая программа. Модификация команды 'rm' 2. Проверка наличия пути к программе в переменной PATH 3. Нормализация вывода даты 4. Создание библиотек сценариев Заключение Примеры Bash скриптов в Linux

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

echo $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="\033" ; # 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 вы можете прочитать здесь.

Отправка комментария

0 Комментарии