jump to navigation

Decompressore Archivi maggio 17, 2007

Posted by linuxiano in Linux, terminale, Uncategorized, Utility.
trackback

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

Commenti»

1. Paige - marzo 17, 2014

Hello just wanted to give you a quick heads up. The text in your content seem to
be running off the screen in Chrome. I’m not sure if this is a format issue or something to do with internet browser compatibility but
I figured I’d post to let you know. The layout look great
though! Hope you get the problem resolved soon. Thanks


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: