Полезные Bash скрипты

Пример: очень простой скрипт резервного копирования:

#!/bin/bash
SRCD="/home/"                #SRCD - SouRCe Directory - исходный каталог
TGTD="/var/backups/"         #TGTD - TarGeT Directory - конечный каталог
OF=home-$(date +%Y%m%d).tgz  #OF - Output File - выходной файл
tar -cZf $TGTD$OF $SRCD

Программа, переименовывающая файлы

#!/bin/sh
# renna: переименование нескольких файлов по специальным правилам
# Автор - felix hudson Jan - 2000

#Прежде всего, посмотрите на различные «режимы», которые есть у этой программы.
#Если первый аргумент ($1) подходит, то мы выполняем эту часть
#программы и затем выходим.

# Проверка на условие добавления префикса.
if [ $1 = p ]; then

#Теперь сдвигаемся от переменной режима ($1) и префикса ($2)
prefix=$2 ; shift ; shift

# Быстренько проверим, задан ли хотя бы один файл.
# Если нет, то лучше ничего не делать, чем переименовывать несуществующие
# файлы!!

if [$1 = ]; then
echo «не задано ни одного файла»
exit 0
fi

# Этот цикл for проделывает итерации над всеми файлами, которые мы задали
# программе.
# Он делает одно переименование на файл.
for file in $*
do
mv ${file} $prefix$file
done

#Теперь выходим из программы.
exit 0
fi

# Проверка на условие добавления суффикса.
# В остальном эта часть фактически идентична предыдущему разделу;
# смотрите, пожалуйста, комментарии оттуда.
if [ $1 = s ]; then
suffix=$2 ; shift ; shift
if [$1 = ]; then
echo «не задано ни одного файла»
exit 0
fi

for file in $*
do
mv ${file} $file$suffix
done

exit 0
fi

# Проверка на условие переименования с заменой.
if [ $1 = r ]; then

shift

# Я включил этот кусок, чтобы не повредить ни один файл, если пользователь
# не определил, что сделать —
# простая мера безопасности:

if [ $# -lt 3 ] ; then
echo «Ошибка; правильный ввод: renna r [выражение] [замена] файлы… »
exit 0
fi

# Сдвигаемся к другой информации
OLD=$1 ; NEW=$2 ; shift ; shift

# Данный цикл for последовательно проходит через все файлы, которые мы
# задали программе.
# Он совершает одно переименование на файл, используя программу ‘sed’.
# Это простая программа с командной строки, которая анализирует стандартный
# ввод и заменяет регулярное выражение на заданную строку.
# Здесь мы задаём для sed имя файла (как стандартный ввод) и заменяем
# нужный текст.

for file in $*
do
new=`echo ${file} | sed s/${OLD}/${NEW}/g`
mv ${file} $new
done
exit 0
fi

# Если мы дошли до этой строки, это значит, что программе были заданы
# неправильные параметры. Поэтому мы расскажем пользователю, как её
# использовать
echo «используйте:»
echo » renna p [префикс] файлы..»
echo » renna s [суффикс] файлы..»
echo » renna r [выражение] [замена] файлы..»
exit 0

# done!

 

Программа, переименовывающая файлы (простая)

#!/bin/bash
# renames.sh
# простая переименовывающая программа

criteria=$1
re_match=$2
replace=$3

for i in $( ls *$criteria* );
do
src=$i
tgt=$(echo $i | sed -e «s/$re_match/$replace/»)
mv $src $tgt
done

Автор: Roman Brovko