PDA

Visualizza la versione completa : Shall di LINUX


Ramsesdea
14-04-2006, 16:14
Ciao ragazzi mi serve fare una shall con LINUX e mi serve un aiuto.

Ho la seguente necessità:

Devo creare una shall che mi permette di andare a leggere file .txt dove all'interno preciso dei percorsi contenente file. Tutti questi file letti dai vari .txt che elenco devono essere racchiusi in un archivio .tar

Vi faccio un esempio:

....]$ exec_tar_pippo.sh pippo.txt pluto.txt

Dove pippo.txt e pluto.txt sono file editati con il comando vi e dove all'interno ci sono i percorsi dove andare a prendere i file da racchiudere in un .tar

Ovviamente il tutto è lanciato dalla funzione che sta dentro exec_tar_pippo.sh

Potreste dirmi cortesemente come creare questa shall?

Grazie mille ciaoe buona giornata a tutti

francofait
14-04-2006, 16:21
Originariamente inviato da Ramsesdea
Ciao ragazzi mi serve fare una shall con LINUX e mi serve un aiuto.

Ho la seguente necessità:

Devo creare una shall che mi permette di andare a leggere file .txt dove all'interno preciso dei percorsi contenente file. Tutti questi file letti dai vari .txt che elenco devono essere racchiusi in un archivio .tar

Vi faccio un esempio:

....]$ exec_tar_pippo.sh pippo.txt pluto.txt

Dove pippo.txt e pluto.txt sono file editati con il comando vi e dove all'interno ci sono i percorsi dove andare a prendere i file da racchiudere in un .tar

Ovviamente il tutto è lanciato dalla funzione che sta dentro exec_tar_pippo.sh

Potreste dirmi cortesemente come creare questa shall?

Grazie mille ciaoe buona giornata a tutti

praticamente ti serve un editor x console completo di filemanager - Midnight Commander basta installarlo.

Ramsesdea
14-04-2006, 16:28
Grazie per la tempestiva risposta ma quello che effettivamente mi serve è proprio la funzione da scrivere per poter poi lanciare il comando e generarmi il .tar da quei file .txt che all'interno hanno i percorsi dove andarsi a prendere i file.

Sapete come si può fare?

submax82
14-04-2006, 17:06
vorrai dire "shell" :D e poi quello di cui parli è uno script...
:ciauz:

U-bahn
14-04-2006, 17:22
la bash è troppo divertente :)

#!/bin/bash
if [ -z "$1" ] || [ -z "$2" ]; then
echo -e "\nUsage: $0 <list_file> <archive_name.bz2>\n"
exit 1;
fi

if [ ! -f "$1" ]; then
echo -e "\nError: No file named \"$1\"\n"
else
for i in `cat $1`; do
if [ ! -e "$i" ]; then
echo "Warning: $i does not exist" &&
echo "Bye !"
exit 1
else
echo -en "$i...ok\n"
fi;
done
tar --preserve -cf $2 -j `cat $1` &&
echo "Done !!!"
fi
exit 0

U-bahn
14-04-2006, 17:26
ovviamente te la saresti cavata anche con un semplice
$ tar -cf <nome_archivio> -j `cat <lista>`...senza bisogno di uno script :ciauz:

Ramsesdea
19-04-2006, 14:05
Grazie mille U-bahn con il comando

tar -cf <nome_archivio> -j `cat <lista>`

funziona alla grande.


L'unica cosa che mi serve è come fare però le apostrofo `` che racchiudono cat <lista>

Posso sempre fare un copia/incolla ma è interessante anche vedere come farle senza il classico copia/incolla.

Grazie ancora

Ciao ciao

alkat
19-04-2006, 15:05
ALTgr + ? = `

Ramsesdea
20-04-2006, 15:41
Ciao ragazzi mi serve un ultimo favore....

Il comando $ tar -cf <nome_archivio> -j `cat <lista>` funziona alla grande...

Mi serve ora creare un file di log di questo comando che vado a lanciare...

Es: Ho simulato un errore che riporto di seguito, lanciando il seguente comando....

__________________________________________________ __________________
tar -cf archivio.tbz2 -j `cat stringa_err.txt `

tar: Removing leading `/' from member names
tar: /home/oracle/test/TAR_ERR/file.txt: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
__________________________________________________ __________________

Per generare l'errore ho dato un file di testo sbagliato (stringa_err.txt )

Quello che mi serve, è come generarmi un file log che mi dia all'interno quello che mi fa vedere a video quando lancio il comando, e quindi l'errore.

In pratica il file log deve contenere questo:

tar: Removing leading `/' from member names
tar: /home/oracle/test/TAR_ERR/file.txt: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors

oppure il solo rigo

tar: /home/oracle/test/TAR_ERR/file.txt: Cannot stat: No such file or directory


Sapreste dirmi come fare?


Ho già provato questo

tar -cf archivio.tgz -z `cat stringa_err.txt ` > log.txt

ma non va in quanto genera un file log ma vuoto.


GRAZIE E BUONA GIORNATA A TUTTI

Mutato
20-04-2006, 16:30
Originariamente inviato da Ramsesdea
Ciao ragazzi mi serve un ultimo favore....

tar -cf archivio.tgz -z `cat stringa_err.txt ` > log.txt

ma non va in quanto genera un file log ma vuoto.


tar invia l'output in stderr, quindi



tar -cvvfz archivio.tgz $(cat listafile.txt) &> log.txt


spiega

&> dirige stderr verso un file
$(comando) equivale a `comando`

vedi anche:
http://www.pluto.it/files/ildp/guide/abs/ioredirintro.html
http://www.pluto.it/files/ildp/guide/abs/process-sub.html

Loading