Question Supprimer le fichier sans demander


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.


70
2017-10-12 19:28


origine


rm -f, yes | rm et ainsi de suite, mais cela appartient à SU.
rm ne montre pas un "supprimer le fichier régulier?" invite par défaut. Vous devez l'avoir alias pour rm -i, ou défini comme une fonction. Je suis surpris que l'alias soit visible dans votre script. Est-ce que vous exécutez le script (./foo.sh) ou le trouver (. foo.sh ou source foo.sh)? - Keith Thompson


Réponses:


Vous pourriez avoir rm alias à rm -i alors essayez ceci:

/bin/rm -f file.log

Pour voir vos alias, vous pouvez exécuter alias.


82
2017-10-12 19:30



Alternativement, utilisez command rm ... ou \rm ... ignorer l'alias / la fonction - glenn jackman
On a prétendu qu'avoir rm alias à rm -i est une mauvaise idée. le rm commande, par défaut, supprime silencieusement le fichier nommé. En l'aliasant à rm -i, vous pouvez prendre l'habitude de ne pas vérifier attentivement avant d'appuyer sur Entrée, selon l'invite interactive pour vous enregistrer. Ensuite, vous tapez rm some-important-file dans un environnement sans l'alias. - Keith Thompson
@Keith C’est très vrai, je n’appelle personnellement que rm à rm -v - chown
Si "rm" est une fonction (au lieu d'un alias), cette réponse devrait fonctionner. Et le bash unset commande pourrait être intéressant - Xen2050


L'indicateur de force supprime toutes les invites;

rm -f {file}


46
2017-10-12 19:30



C'est ce que je recherche, pas la réponse acceptée. - gsamaras


Que la force soit avec toi - rm -f


26
2017-10-12 19:30



J'ai déjà voté la réponse de lynks, et c'est exactement la même chose. Juste un vote pour le sens de l'humour - rain_


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


5
2017-10-12 20:13





Si vous disposez des autorisations requises pour supprimer le fichier et que vous ne souhaitez pas être invité, procédez comme suit (-f = force):

rm -f file

Si vous ne disposez pas des autorisations sur le fichier, vous devrez utiliser:

sudo rm -f file

5
2017-10-12 19:31



Le "supprimer le fichier régulier?" prompt implique que ce n'est pas un problème de permissions. - Keith Thompson


la yes programme répète à plusieurs reprises oui à toutes les invites. de sorte que vous pouvez le canaliser dans l'interactif rm programme pour obtenir l'effet désiré aussi.

yes | rm <filename>

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

yes n | <something interactive>

et qui répètera «n» sur le flux d'entrée (répondant efficacement aux questions)


2
2017-10-12 20:52



le yes n l'option ne fonctionne pas pour moi. Pendant que j'utilise yes n | rm file.txt, il supprime en fait le fichier même si le fichier est correctement protégé. - iammilind


\rm file

Barre oblique inverse \ contourne les alias.


2
2017-07-28 12:15



"\" est une barre oblique inverse, que voulez-vous dire? - Cand3r
Oui, pour utiliser rm sans alias, il en résulte un dialogue de confirmation indésirable avec \. - teknopaul


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 à l'ouverture. Cependant, je n'ai trouvé aucune réponse mentionnant la possibilité que rm est caché 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.

Dactylographie /bin/rm ou rm -f tout le temps est incommode et peut avoir de mauvaises conséquences (dans le cas de rm -f).


0
2018-02-25 12:18



Cela a peut-être résolu votre problème mais ne répond pas à la question. - suspectus
Ne serait pas la réponse sélectionnée - appelant /bin/rm travail? Si j'ai une fonction dans bash et un fichier exécutable avec le même nom dans le répertoire en cours, il suffit d'ajouter ./ devant le nom appellera le fichier - pas la fonction. PS - J'ai ajouté un commentaire à la réponse sélectionnée concernant une fonction et unset - Xen2050
Oui, /bin/rm travaux. Faire le unset supprime le besoin de taper le chemin complet. - daw


En dehors de l'utilisation -f paramètre, alternativement vous pouvez utiliser find commande à la place, par ex.

find -name file.log -delete

0
2018-03-26 13:45