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

Datei entfernen, ohne zu fragen

Wie kann ich eine Datei entfernen, ohne den Benutzer zu fragen, ob er einverstanden ist, die Datei zu löschen? Ich schreibe ein Shell-Skript und benutze die Funktion rm, aber es fragt “remove regular file?” und ich brauche das wirklich nicht. Ich danke Ihnen.

Antworten (12)

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

Möglicherweise haben Sie rm als Alias auf rm -i gesetzt. Versuchen Sie also Folgendes:

/bin/rm -f file.log

Um Ihre Aliase zu sehen, können Sie alias ausführen.

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

Das Force-Flag entfernt alle Eingabeaufforderungen;

rm -f {file}

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

Möge die Kraft mit Ihnen sein - rm -f

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

Das Programm yes antwortet wiederholt mit “Ja” auf alle Eingabeaufforderungen, so dass Sie es in das interaktive Programm rm einfügen können, um auch den gewünschten Effekt zu erzielen.

yes | rm <filename>

umgekehrt, wenn Sie etwas nicht interaktiv machen wollen, können Sie

yes n | <something interactive>

machen, und das wird ‘n’ im Eingabestrom wiederholen (und effektiv die Fragen mit “Nein” beantworten)

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

Backslash ` \rm file

Backslash umgeht Aliasnamen.

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

Innerhalb eines Shell-Skripts würden Sie rm -f <filename> verwenden wollen, aber Sie haben auch die Möglichkeit, die implizite Option -i für Ihre Umgebung loszuwerden, indem Sie unalias rm in Ihrer Shell (oder Ihrem Profil) eingeben.

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

I

1
1
1
2017-03-26 13:45:49 +0000

Neben der Verwendung des Parameters -f können Sie alternativ auch den Befehl find verwenden, z.B.

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

Wenn Ihre rm mit rm -i aliasisiert ist, dann verwenden Sie unalias rm;

Verwenden Sie rm -f nicht direkt, es sei denn, Sie möchten wirklich viele schreibgeschützte Dateien entfernen. Es muss einen sehr guten Grund geben, -f zu verwenden.

Wenn Sie jedoch viele schreibgeschützte Dateien haben, ziehen Sie vielleicht rsync -r --delete empty/ removed_dir/ vor, um eine höhere Geschwindigkeit zu erreichen.

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

-R: Rekursiv f: Kraft, keine Aufforderung

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

Zur Zeit arbeite ich an einem System, bei dem die Bash-Shell die Definition des Befehls rm als Funktion in einer der globalen Konfigurationsdateien erhielt:

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

Daher funktionierte keine der obigen Antworten bezüglich der Aliase. Um dem ärgerlichen Verhalten entgegenzuwirken, löste ich die rm-Funktion in meiner .bashrc-Datei

unset -f rm

Ich hatte ein ähnliches Problem wie der Opener. Ich habe jedoch keine Antwort gefunden, die die Möglichkeit erwähnt, dass rm durch eine Shell-Funktion versteckt wird. Also fügte ich die Antwort hier in der Hoffnung ein, dass sie für jemanden, der mit der gleichen Art von Problem konfrontiert ist, hilfreich sein könnte.

Die ständige Eingabe von /bin/rm oder rm -f ist unbequem und kann (im Fall von rm -f) schlimme Folgen haben.

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

Am liebsten verwende ich dazu einfach den Befehl command in der Bash, genauso wie Sie sudo verwenden. Dadurch wird Ihr Befehl ohne Aliase ausgeführt, genau wie bei der Ausführung mit /bin/rm (wahrscheinlich wird rm als rm -i aliasiert).

Beispiel:

command rm -f /tmp/file.txt