The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > UNIX for Dummies Domande & Risposte
.
google unix.com



UNIX for Dummies Domande & Risposte Se non sei sicuro dove pubblicare un UNIX o Linux domanda, posta da qui. Tutti i neofiti di Linux e UNIX benvenuto!

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
BASH: Trova file per data e rompere loro cbismuth Shell scripting e di programmazione 2 06-13-2005 11:20 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 07-17-2006
jack1981 jack1981 is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2006
Interventi: 42
Aiuto utilizzando, invece di rompere rm

Salve,

Ho questo script che funziona abbastanza bene bar un paio di problemi, sto cercando di emulare il comando rm e questo significa che non può usare rm directory, ho inted di script per il mio alias rm e poi usare mv per spostare file ad un cestino anziché eliminarlo per sempre.

Il problema: quando uso mv per spostare una directory in cui la mia cartella eliminata questa directory esiste già tutti pronti ottenere un errore, ho intenzione di rompere tutti i file e poi voglio usare rmdir per rimuovere tutte le directory vuote nella struttura.

Il mio script è qui

Codice:

#!/bin/bash
# Ai program to emulate the "rm" command in UNIX.
# Created by Michael Kelly
# Last revison 12/07/2006


# INITIALIZE VARIABLES
NO_ARGS=0
FLAG_R=""
FLAG_F_I=""
FLAG_V=""
TRASH=$HOME/deleted

# FUNCTIONS

function errors() {
if [ "$#" -eq  "$NO_ARGS" ] ; then
      echo "rm: too few arguments"
      echo "Try \`rm --help' for more information."
      exit 0
elif [[  ! -f "$1"  && ! -d "$1"   ]] ; then
      echo "rm: cannot remove $ARG : no such file or directory"
      exit 0
elif [[ -d $ARG  &&  "$FLAG_R" = ""  ]] ; then
      echo "rm: \`$ARG' is a directory"
      exit 0
else
     checkExisting $1
fi
}

function verbose () {
if [ "$FLAG_V" = "v" ] ; then
echo "removing \`$1'"
fi
}

function interactive () {
echo -n "rm: remove $1 ?"
     read A
     if [[ "$A" = [Yy] ]] ; then
     remove $1
     else
     exit 0
fi
}

function writePro () {
if ! [ -w  "$1" ] ; then
echo -n "rm: remove write-protected file \`$*'?"
     read A
     if [[ "$A" = [Yy] ]] ; then
     delete $1
     fi
else
     delete $1
fi

}
function checkExisting ()
{
if [ -d "$TRASH/$1" ] || [ -f "$TRASH/$1" ]; then


     shred -fp $TRASH/$1 2>/dev/null
     rmdir $TRASH/$1 2>dev/null
     writePro $1

else
     writePro $1

fi
}

function force () {

mv -f $1 $TRASH 2>/dev/null
verbose $1
}


function remove () {
mv  $1 $TRASH 2>/dev/null
verbose $1
}

function delete() {
if [ "$FLAG_F_I" = "-i" ] &&  [ -w  "$@" ] ; then
   interactive $1
elif [ "$FLAG_F_I" = "-f"  ] ; then
   force $1
elif [ "$FLAG_R" = "-R"  ] ; then
   recursive $1
else
   remove $1
fi

}

# Getops

while getopts :rRfvi o
do    case $o in
           r|R) FLAG_R=-R
             ;;
             f) FLAG_F_I=-f
             ;;
             v) FLAG_V=-v
             ;;
             i) FLAG_F_I=-i
             ;;
             *) echo "rm: invalid option -$1"
                echo "try \`rm --help' for more information"
                exit 0
      esac
done
shift `expr $OPTIND - 1`

if ! [ -d "$HOME/deleted" ] ; then
     mkdir $HOME/delete

else
   for ARG in $*
   do
   errors $ARG
   done
fi
if [ $# -eq $NO_ARGS ] ; then
errors
fi
Mi hanno messo in evidenza il problema funzione in grassetto, voglio rompere recrusively file e poi usare rmdir stesso modo per la directory vuote.

Qualcuno raccomanda questo comando:

Codice:
find -type f -exec shred -u '{}' \;
che brandelli recursivley ma come faccio a specificare che il punto di inizio shreding da? quando ho utilizzato questa prima cancellato tutti i file nella mia home directory in poi.

Una volta ho ordinato che voglio usare un comando simile, ma la sostituzione con rmdir straccio, qualcuno può dirmi a che distanza?

Saluti

Jack
  #2 (permalink)  
Old 07-17-2006
Hitori's Avatar
Hitori Hitori is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: giugno 2006
Interventi: 360
perché non solo

TRASH trovare $ / $ 1-type f-exec brandello-u '()' \;
  #3 (permalink)  
Old 07-17-2006
jack1981 jack1981 is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2006
Interventi: 42
Salute!

Così come usare rmdir in un modo simile a rimuovere la directory vuote?

Jack
  #4 (permalink)  
Old 07-17-2006
jack1981 jack1981 is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2006
Interventi: 42
Citazione:
Originalmente inviato da Hitori
perché non solo

TRASH trovare $ / $ 1-type f-exec brandello-u '()' \;

Inoltre, sono di tipo nuovo per Unix potrebbe spiegare questo comando un po 'meglio, qualcun altro e mi ha raccomandato di cui veramente capire la exec-e' () '\

Grazie ancora

Jack
  #5 (permalink)  
Old 07-17-2006
jack1981 jack1981 is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2006
Interventi: 42
Mi sono imbattuto nel mio script e si dice mancanti per argomento-exec
  #6 (permalink)  
Old 07-17-2006
Hitori's Avatar
Hitori Hitori is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: giugno 2006
Interventi: 360
Citazione:
Originalmente inviato da jack1981
Mi sono imbattuto nel mio script e si dice mancanti per argomento-exec
non dimenticate <space>:

TRASH trovare $ / $ 1-type f-exec brandello-u '()'<space>\;

Ciò significa che la ricerca (ricorsiva) nella directory $ TRASH / $ 1 per i file (-type f) ed eseguire per ogni file che è stato trovato il comando straccio-u '()' dove macro () verrà sostituito con il nome del file

È possibile utilizzare d-tipo per la ricerca di directory

Check out trovare (1) (trovare l'uomo 1)
  #7 (permalink)  
Old 07-17-2006
jack1981 jack1981 is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2006
Interventi: 42
Ciao, grazie di nuovo.

Ho ancora ottenere l'errore comunque, anche con uno spazio, il mio codice è così:

TRASH trovare $ / $ 1-type f-exec-fu straccio '()' \ 2> / dev / null

tutte le idee perché?
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 12:14 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0