Visualizza tutorial in Script shell
Torna alla ricerca |
Nuova ricerca
Decompressore archivi
Sponsor

In questo breve tutorial vedremo un semplice script shell il cui scopo non è altro che decomprimere archivi .tar , .tar.gz , .tar.bz2 ......
usando la shell.....
Eccovi il codice:
#! /bin/bash
NOME="decompressore"
FUNZIONE="Decomprime zip, tar, tgz, tar.gz, tar.bz2, tar.z e li inserisce in una directory con lo stesso prefisso dell'archivio"
USO="$NOME [-vhlr] <file> [file...]"
VERSIONE="1.2"
utilizzo () {
echo >&2 "$NOME $VERSIONE - $FUNZIONE
Utilizzo: $USO
Opzioni:
-r, rimuove il file compresso dopo l'estrazione
-v, dettagliato
-h, utilizzo e opzioni (help)
-l, vedi lo script"
exit 1
}
[ $# -eq 0 ] && { echo >&2 argomento mancante digitare $NOME -h per le opzioni; exit 1; }
rmf=
dettagliato=
while getopts vhlr Opzioni; do
case $Opzioni in
r) rmf=on ;;
v) dettagliato=on ;;
h) utilizzo ;;
l) more $0; exit 1 ;;
\?) echo argomento non valido, type $NOME -h per le opzioni; exit 1 ;;
esac
done
shift $(( $OPTIND - 1 ))
mkdirf() {
[ -d $1 ] && { echo "${NOME}: saltato ${2} - dir ${1} esiste" ; continue; }
mkdir $1
}
Trova_dir_file() {
local _dir="${1%${1##*/}}"
[ "${_dir:=./}" != "/" ] && _dir="${_dir%?}"
echo "$_dir"
}
Trova_nome_file() {
local _name="${1##*/}"
echo "${_name%$2}"
}
clean() {
[[ $1 != 0 ]] && rmdir $2
[[ $1 == 0 && $dettagliato ]] && echo "${NOME}: decompressione " ${dir}/${a}
[[ $rmf ]] && rm -f -- $a
}
start_dir=$(pwd)
for a in "$@"; do
cd $start_dir
fname=$(Trova_nome_file $a)
dir=$(Trova_dir_file $a)
cd $dir
a=$fname
case $a in
*.[zZ][iI][pP])
mkdirf ${a/.[zZ][iI][pP]/} $a
unzip -qq $a -d ${a/.[zZ][iI][pP]/}
clean $? ${a/.[zZ][iI][pP]/}
;;
*.[tT][aA][rR])
mkdirf ${a/.[tT][aA][rR]/} $a
tar -xf $a -C ${a/.[tT][aA][rR]/}/
clean $? ${a/.[tT][aA][rR]/}
;;
*.[tT][gG][zZ])
mkdirf ${a/.[tT][gG][zZ]/} $a
tar -xzf $a -C ${a/.[tT][gG][zZ]/}
clean $? ${a/.[tT][gG][zZ]/}
;;
*.[tT][aA][rR].[gG][zZ])
mkdirf ${a/.[tT][aA][rR].[gG][zZ]/} $a
tar -xzf $a -C ${a/.[tT][aA][rR].[gG][zZ]/}/
clean $? ${a/.[tT][aA][rR].[gG][zZ]/}
;;
*.[tT][aA][rR].[bB][zZ]2)
mkdirf ${a/.[tT][aA][rR].[bB][zZ]2/} $a
tar -xjf $a -C ${a/.[tT][aA][rR].[bB][zZ]2/}/
clean $? ${a/.[tT][aA][rR].[bB][zZ]2/}
;;
*.[tT][aA][rR].[zZ])
mkdirf ${a/.[tT][aA][rR].[zZ]/} $a
tar -xZf $a -C ${a/.[tT][aA][rR].[zZ]/}/
clean $? ${a/.[tT][aA][rR].[zZ]/}
;;
*) echo "${NOME}: $a non si tratta di un file compresso oppure il suffisso non viene riconosciuto" ;;
esac
done
A questo punto salvate il seguente file con il nome:
decompressore.sh
poi cambiamo le proprietà di esecuzione del file così:
click con tasto desto->proprietà->(spuntiamo)esegui lo script come programma
Adesso lo script è funzionanate....
Per vedere le funzioni di questo programma, digitate da shell:
./decompressore -h
Comunque le funzioni ve le riporto qui, e sono:
Opzioni:
-r, rimuove il file compresso dopo l'estrazione
-v, dettagliato
-h, utilizzo e opzioni (help)
-l, vedi lo script
Sponsor
