Код: Выделить всё
#!/bin/bash
#name: extract
zen() {
tee >( zenity --progress --title="Распаковка $name" --text="Распаковываем - $name" --pulsate --auto-close --auto-kill)
}
unzip_func() {
unzip "$name" -d ~/tmp/unzip_dir
cd ~/tmp/unzip_dir && find . -exec sh -c 'np=`echo {}|iconv -f cp1252 -t cp850| iconv -f cp866`; mv "{}" "$np"' \; && mv -f * "$dir"
cd "$dir"
}
name=$(basename $1)
dir=$(readlink -f $(readlink -f "$(dirname "$1")"))
#dir=$(echo "$1"|sed "s/\(.*\)\/.*\.*/\1/")
echo -e "$1\n$2\n$name\n$dir"
#exit 0
cd "$dir"
if [ -f "$1" ] ; then
case "$name" in
*.tar.bz2) tar xvjf --overwrite "$name" | zen "$name" ;;
*.tar.gz) tar xvzf --overwrite "$name" | zen "$name" ;;
*.tar.xz) tar Jxvf --overwrite "$name" | zen "$name" ;;
*.bz2) bunzip2 -f "$name" | zen "$name" ;;
*.rar) unrar x -o+ "$name" | zen "$name" ;;
*.gz) gunzip -f "$name" | zen "$name" ;;
*.tar) tar xvf --overwrite "$name" | zen "$name" ;;
*.tbz2) tar xvjf --overwrite "$name" | zen "$name" ;;
*.tgz) tar xvzf --overwrite "$name" | zen "$name" ;;
*.zip) unzip_func | zen "$name" ;;
*.Z) uncompress "$name" | zen "$name" ;;
*.7z) 7z x -y "$name" | zen "$name" ;;
*) echo "don't know how to extract '$name'..."
zenity --warning --text="Я не знаю как разархивировать '$name'..." --title="Распаковка $name" ;;
esac
else
zenity --warning --text="'$name' не правильный файл!" --title="Распаковка $name"
fiВнимание вопрос. По нажатии кнопки "отмена", скрипт продолжает работать. Прошу совета, как прекращать деятельность скрипта по нажатии "отмена".
P.S. несмотря на то, что в скрипте используется zenity он все же консольный.