PDA

Visualizza la versione completa : Creare script


FrancoLocatelli
21-01-2008, 17:11
Per favore qualcuno mi può aiutare, con Linux sono una frana (è da poco che mi sono avvicinato a questo mondo) ma con il DOS me la cavo abbastanza.

Ho una cartella che si chiama: Catalogo Giocattolo e sottocartelle A01 A02 A03 ecc.....
All'interno di ogni cartella ho un sacco di immagini es:
nella cartella A01 ci sono file A01001.jpg A01002.jpg ecc.....
nella cartella A02 ci sono file A02350.jpg A02365.jpg ecc.....

Ho creato questo script con nome "cancella" ma quando lo eseguo non funziona:
PS: questi sono solo tre file ma in realtà sono quasi 2000, lo script lo preparo in excel prendendo i dati dall'AS400 concatenando il tutto.

#!/bin/sh
rm 'Catalogo Giocattolo/A01/A01001.jpg'
rm 'Catalogo Giocattolo/A01/A01002.jpg'
rm 'Catalogo Giocattolo/A02/A02350.jpg'

lo eseguo con: bash -i cancella

Se eseguo manualmente rm 'Catalogo Giocattolo/A01/A01001.jpg' il file viene cancellato.

Grazie

ntd
21-01-2008, 18:29
Gli script non hanno bisogno di "bash ..." per essere eseguiti. Ciò significa che puoi impostare i permessi di esecuzione a "cancella" per poi richiamarlo come un normale programma:



chmod o+x cancella
./cancella


finezza che comunque non è il tuo problema. Il tuo script non ha errori: l'ho provato in locale e funziona (richiamandolo come sopra descritto). In realtà non so nemmeno perché hai usato l'opzione -i di bash...

L'unica altra cosa che mi viene in mente è che richiami rm da una directory e esegui cancella da un'altra, nel qual caso è logico che non funzioni dato che i percorsi specificati sono relativi.

FrancoLocatelli
21-01-2008, 19:46
Ho fatto come dici, ma non funziona, mi dice permesso negato.

Se lancio il comando rm 'Catalogo Giocattolo/A01/A01001.jpg' a mano indicando la partizione e dovunque mi trovo funziona.

ntd
21-01-2008, 20:10
Originariamente inviato da FrancoLocatelli
Ho fatto come dici, ma non funziona, mi dice permesso negato.

Quando ti dice "Permesso negato"? Dopo 'chmod o+x cancella'? Dopo './cancella'?

psykopear
21-01-2008, 20:32
Originariamente inviato da FrancoLocatelli
Per favore qualcuno mi può aiutare, con Linux sono una frana (è da poco che mi sono avvicinato a questo mondo) ma con il DOS me la cavo abbastanza.

Ho una cartella che si chiama: Catalogo Giocattolo e sottocartelle A01 A02 A03 ecc.....
All'interno di ogni cartella ho un sacco di immagini es:
nella cartella A01 ci sono file A01001.jpg A01002.jpg ecc.....
nella cartella A02 ci sono file A02350.jpg A02365.jpg ecc.....

Ho creato questo script con nome "cancella" ma quando lo eseguo non funziona:
PS: questi sono solo tre file ma in realtà sono quasi 2000, lo script lo preparo in excel prendendo i dati dall'AS400 concatenando il tutto.

#!/bin/sh
rm 'Catalogo Giocattolo/A01/A01001.jpg'
rm 'Catalogo Giocattolo/A01/A01002.jpg'
rm 'Catalogo Giocattolo/A02/A02350.jpg'

lo eseguo con: bash -i cancella

Se eseguo manualmente rm 'Catalogo Giocattolo/A01/A01001.jpg' il file viene cancellato.

Grazie

mi sembra fatto abbastanza male come script. Se per esempio la cartella si trova nella home, prova con

#!/bin/bash
rm '$HOME/Catalogo Giocattolo/A*/*.jpg'

Lo salvi in una cartella chiamata script nella tua home (giusto per comodità), poi ti sposti nella cartella con
cd script
(attento a maiuscole e minuscole), e digiti con i privilegi di root (che distribuzione usi?)
chmod +x nomescript (per esempio cancella)
poi, con i privilegi di root
cp cancella /usr/local/bin
Così puoi usare lo script semplicemente digitando cancella. Prova se va, non so se va bene così o va fatto in modo un po più complesso, però come idea ci dovrebbe essere.

psykopear
21-01-2008, 20:41
PS: per gestire l'installazione, la rimozione, il backup e il ripristino degli script, ho creato questo:




#!/bin/bash

###############################################
# #
# SIRM2 Script Install & Remove Manager 2.0.3 #
# #
###############################################

#Qui sotto le funzioni di sirm2
usage () {
echo "Questo è l'help di sirm2:
Una volta avviato, segui le istruzioni per eseguire le operzioni richieste"
exit 1
}

#Qui sotto l'utilizzo delle funzioni
while [[ "$1" != "" ]]; do
case "$1" in
"-h" ) usage ;;
esac
shift
done

#Qui sotto sirm e le sue utilità

echo "SIRM 2.0. Script Install & Remove Manager versione 2.0.2"
echo "Cosa vuoi fare?"
echo "1) Installare uno script (deve essre in $HOME/script/)"
echo "2) Rimouvere uno script"
echo "3) Fare il backup di uno script in $HOME/backup/ "
echo "4) Ripristinare uno script salvato in $HOME/backup/ "
echo "5) Uscire"
echo "Digita il numero corrispondente all'operazione"
read scelta
case $scelta in
1)
echo "Digita il nome dello script da installare"
read elencosript
sudo chmod +x $HOME/script/$elencosript
sudo cp $HOME/script/$elencosript /usr/local/bin/
echo "Installati gli script sul tuo computer"
echo "Ora puoi avviarli digitandone il relativo nome (script1, script2 ecc)"
;;
2)
echo "Digita il nome dello script da rimuovere"
read elencosript
sudo rm /usr/local/bin/$elencosript
echo "Rimossi gli script sul tuo computer"
echo "Fine"
;;
3)
echo "Digita il nome dello script (che deve essere in $HOME/script/ )"
read miofile
cp $HOME/script/$miofile $HOME/backup/
echo "Script salvato"
;;
4)
echo "Digita il nome dello script di backup che vuoi ripristinare"
read script
sudo cp $HOME/backup/$script /usr/local/bin/
echo "Script ripristinato"
;;
5)
echo "Ciao"
exit
;;
*)
echo "input non valido"
esac


No so se è l'ultima "versione" con le correzioni, ma dovrebbe comunque funzionare, in caso correggilo tu. Per installarlo basta che lo salvi sempre nella stessa cartella script, ti ci sposti con
cd script
Digiti con i privilegi di root
chmod +x sirm2
e poi (sempre coi privilegi di root)
cp sirm2 /usr/local/bin
E poi basta che digiti sirm2 per poter gestire gli script presenti nella cartella script nella tua home, c'ho messo pure un menu carino. Unica accortezza, crea le cartelle script e backup (tutto minuscolo) nella tua home, il resto lo fa tutto lo script.

:ciauz:

FrancoLocatelli
22-01-2008, 07:50
Grazie molto per l'aiuto funziona.

Ciao

Loading