Comment puis-je supprimer un fichier sans demander à l'utilisateur s'il accepte de supprimer le fichier? J'écris le script Shell et utilise la fonction rm, mais il demande "supprimer le fichier normal?" et je n'ai vraiment pas besoin de ça. Je vous remercie.
Vous pouvez avoir rm
avec alias rm -i
alors essayez ceci:
/bin/rm -f file.log
Pour voir vos alias, vous pouvez exécuter alias
.
L'indicateur de force supprime toutes les invites;
rm -f {file}
Que la force soit avec toi - rm -f
Si vous disposez des autorisations requises pour supprimer le fichier et que vous ne souhaitez pas recevoir d'invite, procédez comme suit (-f = force):
rm -f file
Si vous n'avez pas les autorisations pour le fichier, vous devrez utiliser:
Sudo rm -f file
Dans un script Shell, vous voudriez utiliser rm -f <filename>
, mais vous avez également la possibilité de supprimer l'option implicite -i
de votre environnement en entrant unalias rm
dans votre Shell (ou votre profil).
le programme yes
répond à plusieurs reprises par oui à toutes les invites. afin que vous puissiez le diriger vers le programme interactif rm
pour obtenir également l'effet souhaité.
yes | rm <filename>
à l'inverse, si vous ne voulez pas faire quelque chose d'interactif, vous pouvez faire
yes n | <something interactive>
et qui répètera 'n' sur le flux d'entrée (en répondant non à des questions)
\rm file
La barre oblique inverse \
contourne les alias.
Outre le paramètre -f
, vous pouvez également utiliser la commande find
à la place, par exemple.
find -name file.log -delete
Si votre rm
est associé à rm -i
, utilisez unalias rm
;
N'utilisez pas rm -f
directement, sauf si vous souhaitez réellement supprimer beaucoup de fichiers protégés en écriture. Il doit y avoir une très bonne raison d'utiliser -f
.
Toutefois, si vous avez beaucoup de fichiers protégés en écriture, vous préférerez peut-être rsync -r --delete empty/ removed_dir/
pour une vitesse plus rapide.
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 globaux:
rm () { /bin/rm -i ${1+"$@"}; }
Par conséquent, aucune des réponses ci-dessus concernant les alias n'a fonctionné. Pour contrer le comportement ennuyeux, je désactive la fonction rm dans mon fichier .bashrc
unset -f rm
J'ai eu un problème similaire à celui du premier match. Cependant, je n'ai trouvé aucune réponse mentionnant la possibilité que rm
soit masqué par une fonction Shell. J'ai donc ajouté la réponse ici dans l'espoir que cela aiderait 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 graves conséquences (dans le cas de rm -f
).