Итак, по порядку
#!/bin/sh - Стандартное начало скрипта. обозначает использование bash.
PACK=`echo $1 | sed -e 's/.pet//g'` - В этой строке задаётся переменная $PACK, echo $1 обозначает прочитать набранное на клавиатуре слово, в нашем случае это имя устанавливаемого пакета, символ | обозначает "конвейер" или передать данные следующей программе, sed - потоковый текстовый редактор, -e (exec) исполнить, 's/.pet//g' - указывает заменить сочетание .pet на пустое место, т. е. просто убрать. Кавычки обозначают считать как одно слово.
pet2tgz $PACK.pet - Преобразовать pet-пакет в обычный архив tar.gz с тем же именем. Здесь вместо $PACK.pet можно написать $1, ошибки не будет.
tar -zxvf $PACK.tar.gz | sed -e 's/^.\/$PACK\///g' > $PACK.files - распаковать архив, выданный архиватором при распаковке список файлов передать на редактирование, чтобы убрать не нужное нам ./$PACK/ из начала каждой строки.
cat $PACK.files - вывести полученный список на дисплей ("Огласите весь список, пожалуйста")
# kostik wrote - коментарий, дальнейший код написал kostik.
echo "Установить пакет?"
echo "yes"
echo "no" - вывести на дисплей этот текст, при этом кавычки не отображаются.
read doing - прочитать набранное на клавиатуре в переменную $doing
case $doing in - выбор на совпадение
"yes") - если набрано "yes", исполнить следующие команды
cd $PACK - перейти внутрь каталога $PACK
cat ../$PACK.files | cp -r ./ / - прочитать текстовый файл $PACK.files находящийся на один уровень выше ( ../ ) и передать для копирования "согласно списка" из текущего каталога ( ./ ) в корень ( / )
cat ../$PACK.files | sed -e 's/^/\//g' > /root/.packages/$PACK.files - прочитать тот же список, отредактировать (добавить в начало каждой строки слеш) и записать в файл по адресу /root/.packages/$PACK.files. Этот список используется при удалении пакета, а т. к. файлы были установлены в корень, то и путь к ним будет отсчитываться от корня. Для этого и добавляется слеш.
echo "\"$PACK\" \"$PACK: \" on \" \" \\" >> /root/.packages/alienpackages.txt - добавить строку ( >> ) в текстовый файл /root/.packages/alienpackages.txt с именем установленного пакета.
cd ../ - выходим из каталога
rm -rf $PACK
rm -f $PACK.files
rm -f $PACK.tar.gz -
echo "Пакет установлен" - убираем следы своей деятельности.
;; - конец секции "yes"
"no") - если "no" то
echo "Выходим из процесса установки"
;; - конец секции "no"
*) echo "Введено неправильное действие" - если набрано любое другое буквосочетание.
esac - конец выбора
В конце любого скрипта обязательна пустая строка.