Может не туда запостил, но все равно думаю кому-то очень облегчит жизнь.
Делалось в какой-то институт, в шелл программировании не очень силен, но пришлось немного изучить, да и спасибо с некоторыми вопросами помогли добрые люди.
Вообщем вот кодroot@portal11# cat lb
#!/bin/sh
#-xv # ключи для пошагового просмотра выполняемых операций
################################################################
### 1. Ввод с клавиатуры вашей фамилии в латинской транскрипции.
clear
echo Введите, пожалуйста, данные необходимые для выполнения скрипта:
while [ -z $surname ]
do
echo 1. Вашу фамилию в латинской транскрипции
read surname
done
################################################################
### 2. Ввод с клавиатуры вашей фамилии в латинской транскрипции.
work=0
while [ $work -ne 1 ]
do
while [ -z $new_dir ]
do
echo 2. Название новой \(рабочей\) директории
read new_dir
done
################################################################
### 3. Проверка, существует ли указанная папка в домашней дирек-
### тории пользователя.
cd ~
if !([ -d $new_dir ]); then
################################################################
### 4. Создание в домашнем каталоге директории с введенным ранее
### названием.
mkdir $new_dir
work=1
else echo Такая директория существует, введите новое имя директории:
read new_dir
fi
done
################################################################
### 5. Копирование из папки /usr/bin всех простых выполняемых
### файлов, имеющих в своем имени первую букву моей фамилии в
### в английской транскрипции в созданную папку.
pa=`echo $surname | cut -c1,1`
cpa="$pa*"
for i in /usr/bin/*
do
if [ -x $i -a ! -d $i ]
then cp /usr/bin/$cpa ~/$new_dir/
fi
done
string=`ls ~/$new_dir/* | wc -l`
if [ $string -ne 30 ]
then
pb=`echo $surname | cut -c2,2`
cpb="$pb*"
cp /usr/bin/$cpb ~/$new_dir/
fi
################################################################
### 6. Если число скопированных файлов меньше 30, то повторяем
### пункт 5, взяв следующую букву фамилии.
n=2
while [ $string -lt 31 ]
do
n=`expr $n + 1`
pab=`echo $surname | cut -c$n,$n`
cpab="$pab*"
cp /usr/bin/$cpab ~/$new_dir/
string=`ls ~/$new_dir/* | wc -l`
done
################################################################
### 7. Если не скопировано ни одного файла, то скопировать один
### любой файл ненулевой длинны, имя которого содержит не
### менее двух символов.
string=`ls ~/$new_dir/* | wc -l`
if [ $string -gt 30 ]
then
FILE=$(cd /usr/bin; ls | grep -v "^\." | grep "[a-zA-Z0-9]\{2,\}" | head -n1)
cp /usr/bin/$FILE ~/$new_dir/
fi
################################################################
### 8. Если число файлов все еще меньше 30, то создаем столько
### копий первого файла из числа скопированных, чтобы общее
### число файлов стало равным 30. Каждая новая копия содержит
### в конце имени двухсимвольный суффикс с ее номером.
size=$(ls ~/$new_dir | wc -l)
count=`expr 30 - $size`
c=0
if [ $size -lt 30 ]; then
macro=$(ls ~/$new_dir | grep -v "^\." | head -n1)
until [ $c -eq $count ]
do
c=`expr $c + 1`
if [ $c -lt 10 ]; then
c="`echo 0$c | tr -d ' '`"
cp ~/$new_dir/$macro ~/$new_dir/$macro$c
fi
cp ~/$new_dir/$macro ~/$new_dir/$macro$c
done
fi
################################################################
### 9. Если число файлов больше 30, то удалить все лишние файлы,
### оставив только 30 самых маленьких, но не пустых файлов.
count=0
size=$(ls ~/$new_dir | wc -l)
if [ $size -gt 30 ]; then
for i in $(ls -l ~/$new_dir | sort -k 5 | awk '{print $9}')
do
count=`expr $count + 1`
if [ $count -gt 29 ]; then
cd ~/; rm -f "$new_dir/$i"
fi
done
fi
################################################################
### 10. Ввод с клавиатуры имени файла, в который поместить пере-
### чень всех файлов в нашей папке с указанием прав доступа
### к ним, владельцев и размеров.
while [ -z $file_list ]
do
echo Введите, пожалуйста, имя файла, в который поместить перечень всех
echo файлов в Вашей папке с указанием прав доступа к ним, владельцев и размеров
read file_list
done
ls -ls $new_dir/* > ~/$new_dir/$file_list
################################################################
### 11. Сжатие файла с перечнем.
tar -cf ~/$new_dir/$file_list\.tar ~/$new_dir/$file_list
bzip2 -z -9 ~/$new_dir/$file_list\.tar
################################################################
### Конец скрипта.
root@portal11#