GNU/Linux >> Linux Esercitazione >  >> Linux

Opzione Rm per fallire su file inesistenti?

L'man pagina di rm in GNU coreutils 8.12.197-032bb descrive il -f o --force opzione come "ignora i file inesistenti, non chiedere mai". Senza questa opzione, rimuoverà tutti i file esistenti, non richiederà mai e restituirà un codice di uscita diverso da zero se uno qualsiasi dei file specificati non esisteva. Vorrei conservare i file se ce ne sono dei file specificati non esistono . Qual è il modo più semplice per farlo?

Il caso d'uso è sicurezza :Se sto cercando di rimuovere un file che non esiste, potrebbe essere perché c'è un'aspettativa non valida (o un semplice bug) nel comando. Ad esempio il famoso rm -rf /usr /lib/nvidia-current/xorg/xorg avrebbe potuto essere evitato in molti modi, uno dei quali era una tale opzione (ovviamente a meno che l'utente per qualche incredibile coincidenza non avesse un /lib/nvidia-current/xorg/xorg directory) e un altro è quello di Use More Quotes™. Tuttavia, le virgolette non sono sempre sufficienti. Ad esempio, considera ssh host '/bin/rm some paths; /bin/bash foo.sh' – Se avessi dimenticato il punto e virgola o inserito praticamente qualsiasi altro simbolo come i due punti o la virgola, avrebbe tentato di rimuovere /bin/bash e ~/foo.sh .

Risposta accettata:

Io uso questo genere di cose:

mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE

Per un unico percorso:

mv /some/path DELETE && rm -rf DELETE

Ancora meglio, digita il rm command su una riga di comando separata:mv /some/path DELETE Entra rm -rf DELETE Entra . In questo modo, l'unico rm il comando che entra nella cronologia della shell è su un file chiamato DELETE , quindi se hai rimosso una vecchia versione di un file, non rischi di rimuovere la nuova versione premendo accidentalmente Su il numero sbagliato di volte quindi Invio .

Se vuoi automatizzare un po':

mv_to_DELETE () {
  mkdir DELETE &&
  mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE

Linux
  1. Elimina gli aggiornamenti di Windows scaricati

  2. Linux Elimina file e directory

  3. File .o vs file .a

  4. Elimina i file corrispondenti in tutte le sottodirectory

  5. Elimina tutti i file casuali tranne 1000 in una directory

Come trovare ed eliminare file duplicati in Linux

Come eliminare i file elencati in un altro file in Linux

Come rimuovere/eliminare file in Linux usando il comando rm

Come eliminare file e directory utilizzando la riga di comando di Linux

cp solo file, saltando le directory

rsync non eliminerà i file sulla destinazione