Angenommen, ich wollte sicherstellen, dass ich zuerst die richtigen Dateien entferne, also habe ich Folgendes getan:
rm -i *
Nur um sicherzustellen, dass ich mit den Dateien, die ich entferne, einverstanden bin. Das wird mich also nach jeder Datei fragen. Angenommen, nach ein paar Dateien wird mir klar, dass es genau das ist, was ich entfernen wollte. CTRL+C
Gibt rm *
es eine Möglichkeit, einfach zu allen Ja zu sagen, anstatt zu tun ?
Diese Frage kommt eher aus Neugier als aus Funktionalität.
Antworten:
Nein.
(Es sei denn, Sie finden eine Möglichkeit, das 'interaktive' Bit mit einem Debugger umzudrehen.)
quelle
coreutils/src/remove.c:335
→coreutils/lib/yesno.c:46
(generiert) →rpmatch(3)
: "gibt 0 für eine erkannte negative Antwort (" nein "), 1 für eine erkannte positive Antwort (" ja ") und -1 zurück, wenn der Wert der Antwort nicht erkannt wird"Nun, das beantwortet Ihre Frage nicht wirklich. Aber statt der Verwendung
rm -i
betrachtet Aliasingrm
zurm -I
:In der Manpage heißt es:
in dein
~/.bashrc
, setze:das ist eigentlich nützlich!
quelle
Die Antwort lautet Ja, wenn Sie diesen Code verwenden:
$ yes "yes" | rm -vRI directory
quelle
Einfach zuerst mit
ls *.bla
und dannrm -f *.bla
vielleicht überprüfen ?Sei vorsichtig!
quelle
Wenn Sie auf dem Bildschirm arbeiten (eine gute Idee im Allgemeinen), können Sie Folgendes tun:
Dies würde dazu führen, dass screen den Befehl 'yes' ausführt, wobei y die Ausgabe ist, und diese Ausgabe an das laufende Programm (rm -i) weiterleitet.
quelle
Dies kann durch Ersetzen der Anwendungsdateideskriptoren im laufenden Betrieb erfolgen. Sie benötigen jedoch eine Zwischendatei.
Sie können gdb und eine Named Pipe wie diese verwenden (vorausgesetzt, Sie verwenden mehr Terminals, andernfalls müssen Sie screen oder etwas anderes verwenden):
Geben Sie dann die folgenden Befehle in gdb ein und ersetzen Sie die PID
Dies ersetzt die Tastatur durch eine Named Pipe für rm.
Jetzt müssen Sie die benannte Pipe füllen
rm liest die Pipe und überschreibt alles.
quelle
rm
Prozess mit in den HintergrundCtrl+Z
.rm -i *
Befehl)-i
Enter
um den Befehl auszuführenfg %1
Ctrl+C
quelle
5s/fg/kill/; 6d