2011-10-12 19:28:12 +0000 2011-10-12 19:28:12 +0000
94
94

Rimuovere il file senza chiedere

Come posso rimuovere il file senza chiedere all'utente se accetta di cancellare il file? Sto scrivendo uno script di shell e uso la funzione rm, ma mi chiede “rimuovi file normale?” e non ne ho davvero bisogno. Grazie.

Risposte (12)

107
107
107
2011-10-12 19:30:00 +0000

Potreste avere rm alias rm -i quindi provate questo:

/bin/rm -f file.log
``` &001 


Per vedere i vostri alias potete eseguire `alias`.
61
61
61
2011-10-12 19:30:22 +0000

Il flag di forza rimuove tutti i prompt;

rm -f {file}

34
34
34
2011-10-12 19:30:10 +0000

Che la forza sia con voi - rm -f

6
6
6
2011-10-12 20:52:48 +0000

il programma yes risponde ripetutamente sì a qualsiasi richiesta. in questo modo si può inserire nel programma interattivo rm per ottenere anche l'effetto desiderato.

yes | rm <filename>
``` ```
yes n | <something interactive>

viceversa, se non si vuole fare qualcosa di interattivo, si può fare

&001 &001

e che ripeterà ‘n’ sul flusso di input (rispondendo di fatto no alle domande)

5
5
5
2016-07-28 12:15:27 +0000
\rm file

Backslash ` \rm file

Backslash bypassa gli alias.

5
5
5
2011-10-12 20:13:31 +0000

All'interno di uno script di shell, si vorrebbe usare rm -f <filename> ma si ha anche la possibilità di liberarsi dell'opzione implicita -i per il proprio ambiente inserendo unalias rm nella shell (o nel profilo).

5
5
5
2011-10-12 19:31:52 +0000

Se si dispone dei permessi necessari per cancellare il file e non si desidera essere sollecitati, procedere come segue (-f = forza):

rm -f file

Se non si dispone dei permessi per il file, sarà necessario utilizzare:

sudo rm -f file
1
1
1
2017-03-26 13:45:49 +0000

Oltre ad usare il parametro -f, in alternativa si può usare il comando find, per esempio

find -name file.log -delete
0
0
0
2018-03-29 14:28:49 +0000

Se il vostro rm è alias rm -i, allora usate unalias rm;

Non usate rm -f direttamente a meno che non vogliate davvero rimuovere molti file protetti da scrittura. Ci deve essere una buona ragione per usare -f.

Tuttavia, se avete molti file protetti da scrittura, potreste preferire rsync -r --delete empty/ removed_dir/ per una maggiore velocità.

0
0
0
2019-09-02 14:37:41 +0000
rm -Rf <folder-to-be-deleted>

-R: f: forza ricorsiva f: forza, nessun prompt

0
0
0
2015-02-25 12:18:42 +0000

Attualmente sto lavorando ad un sistema, dove la shell bash ha ricevuto la definizione del comando rm come funzione in uno dei file di configurazione globale:

rm () { /bin/rm -i ${1+"$@"}; }

Quindi, nessuna delle risposte di cui sopra riguardanti gli alias ha funzionato. Per contrastare il fastidioso comportamento ho disattivato la funzione rm nel mio file .bashrc

unset -f rm

ho avuto un problema simile a quello dell'opener. Tuttavia non ho trovato alcuna risposta che indicasse la possibilità che rm fosse nascosto da una funzione shell. Così ho aggiunto la risposta qui nella speranza che possa essere di aiuto per qualcuno che si trova ad affrontare lo stesso tipo di problema.

Digitare /bin/rm o rm -f tutto il tempo è scomodo, e può avere conseguenze negative (nel caso di rm -f).

0
0
0
2019-08-12 07:47:40 +0000

Il mio modo preferito per farlo è semplicemente usare il comando command in bash, proprio come si usa sudo. Questo eseguirà il vostro comando senza alias, proprio come eseguirlo con /bin/rm (probabilmente rm è alias come rm -i).

Esempio:

command rm -f /tmp/file.txt