Практическое задание Поиск исполняемых файлов (текстовых) в каталоге /bin, если файлы являются скриптами, то скопировать в папку ~/bin и Добавить расширение в зависимости от используемого интерпретатора (name.bash; name.sh; name.perl и т.д.), вывод на экран количество файлов каждого интерпретатора, запросить у пользователя какие расширения оставить, остальные удалить. Запуск скрипта разрешить только пользователю student. Готовый скрипт:
#!/bin/bash
# Created by Vasil Ivanov
mkdir /home/student/bin 2>/dev/null
rm -f /home/student/bin/*
mas1=`ls /bin`
for name in $mas1
do
if `test -x /bin/$name` && [[ `head -c 2 /bin/$name` = "#!" ]]
then
cp /bin/$name /home/student/bin
else
mas1=${mas1/$name/}
fi
done
cd /home/student/bin
mas1=`ls`
i=1
for name in $mas1
do
temp=`head -n 1 ./$name`
temp1=${temp/"#!"\/"bin"\//}
temp1=${temp1/"#! "\/"bin"\//}
mv $name $name\.$temp1
t1=0
for ((k=1; k < i; k++))
do
if [[ "${mas[$k]}" = "$temp1" ]]
then
t1=1
let kol[$k]=${kol[$k]}+1
fi
done
if [[ $t1 = 0 ]]
then
mas[$i]=$temp1
kol[$i]=1
let i=$i+1
fi
done
i=1
for name in ${mas[@]}
do
echo "$i) Kolichestvo faylov s rasshireniem ${mas[$i]} = ${kol[$i]}"
let i=$i+1
done
echo "Vvedite cherez probel nomera rasshireniy, kotoriye neobhodimo ostavit'"
read n
i=1
for name in $n
do
mas3[$i]=${mas[$name]}
let i=$i+1
done
for name in ${mas[@]}
do
t1=0
for t in ${mas3[@]}
do
if [[ $t = $name ]]
then
t1=1
fi
done
if [[ $t1 = 0 ]]
then
rm -f ./*.$name
echo "Udaleniye faylov s rasshireniem .$name"
fi
done
echo "Done"