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

Supprimer un fichier sans demander

Advertisement

Comment puis-je supprimer un fichier sans demander à l'utilisateur s'il accepte de le faire ? J'écris un script shell et j'utilise la fonction rm, mais il me demande “supprimer un fichier normal” et je n'ai vraiment pas besoin de cela. Je n'en ai vraiment pas besoin. Merci.

Advertisement
Advertisement

Réponses (12)

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

Vous avez peut-être un alias de rm, alors essayez ceci :

/bin/rm -f file.log

Pour voir vos alias, vous pouvez exécuter rm -i.

61
61
61
2011-10-12 19:30:22 +0000

Le drapeau de la force supprime toutes les invites ;

rm -f {file}

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

Que la force soit avec vous - rm -f

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

le programme yes répond de manière répétée oui à toutes les questions. vous pouvez donc l'introduire dans le programme interactif rm pour obtenir l'effet souhaité.

yes | rm <filename>

inversement, si vous ne voulez pas faire quelque chose d'interactif, vous pouvez faire

yes n | <something interactive>

et cela répétera ‘n’ sur le flux d'entrée (en répondant effectivement non aux questions)

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

Backslash ` \rm file

Backslash contourne les alias.

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

Dans un script shell, vous voudriez utiliser rm -f <filename> mais vous avez également la possibilité de vous débarrasser de l'option implicite -i pour votre environnement en entrant unalias rm dans votre shell (ou profil).

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

Si vous avez les autorisations requises pour supprimer le fichier et que vous ne voulez pas être invité à le faire, faites ce qui suit (-f = force) :

rm -f file

Si vous n'avez pas les autorisations pour le fichier, vous devrez utiliser :

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

Outre l'utilisation du paramètre -f, vous pouvez également utiliser la commande find à la place, par exemple

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

Si votre rm est alias rm -i, alors utilisez unalias rm ;

N'utilisez pas directement rm -f, sauf si vous voulez vraiment supprimer beaucoup de fichiers protégés en écriture. Il doit y avoir une très bonne raison d'utiliser -f.

Cependant, si vous avez beaucoup de fichiers protégés en écriture, vous pouvez préférer rsync -r --delete empty/ removed_dir/ pour une vitesse plus rapide.

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

-R : F récursif : force, pas de promptitude

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

Actuellement, je travaille sur un système où le shell bash a reçu la définition de la commande rm en tant que fonction dans l'un des fichiers de configuration globale :

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

Ainsi, aucune des réponses ci-dessus concernant les alias n'a fonctionné. Pour contrer ce comportement ennuyeux, j'ai désactivé la fonction rm dans mon fichier .bashrc

unset -f rm

J'ai eu un problème similaire à celui de l'ouvreur. Cependant, je n'ai pas trouvé de réponse qui mentionne la possibilité que rm soit caché par une fonction shell. J'ai donc ajouté la réponse ici dans l'espoir qu'elle serait utile à quelqu'un confronté au même type de problème.

Taper /bin/rm ou rm -f tout le temps est gênant, et peut avoir de mauvaises conséquences (dans le cas de rm -f).

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

Ma façon préférée de procéder est d'utiliser la commande command dans bash, de la même façon que vous utilisez sudo. Cela permettra d'exécuter votre commande sans alias, tout comme l'exécuter avec /bin/rm (probablement rm est aliasé comme rm -i). Exemple :

command rm -f /tmp/file.txt
Advertisement

Questions connexes

6
10
11
5
11
Advertisement