Niemals die Ausgabe von ls analysieren
Mein Vorschlag ist, die Ausgabe von ls [ 1 ] nicht zu analysieren , noch mehr, wenn dies in Verbindung mit dem del
Befehl geschieht . Dies hängt aus vielen Gründen hauptsächlich mit unerwarteten und nicht üblichen Zeichen zusammen, die im Dateinamen zulässig sind.
Selbst wenn Sie erwarten sollten, dass sich die zu Linux-Paketen gehörenden Dateinamen "gut verhalten" , kann dieses Problem dennoch auftreten, wenn andere Dateien im selben Verzeichnis vorhanden sind, Sie dies jedoch nicht wussten oder bemerkten.
Es ist besser find
, die Tabulatorerweiterung (schreiben Sie den Namen und drücken Sie Tab), die Dateinamenerweiterung [ 2 ] als *MyKey*
...
Eine schnelle Lösung
Da Sie alle Pakete (die mit enden .deb
) mit "google" auswählen möchten, können Sie Ihre Anfrage mit dem Platzhalter erstellen *
*google*.deb
und eine einfache Aktion ausführen
rm -i *google*.deb
Dadurch wird jeder Dateiname mit "google" in der Mitte ausgewählt, .deb
der im aktuellen Verzeichnis vorhanden ist. Die Option -i
(interaktiv) fordert zur Bestätigung auf, eine gute Gewohnheit, wenn Sie Dateien mit der Parametererweiterung löschen.
Eine Lösung nahe der Philosophie Ihres Versuch
Wenn Ihr Zweck ist der Command Stück für Stück zu bauen, so dass Sie getan haben ls
, nach ls | grep google
, und erst , nachdem Sie die Ausgabe überprüft Sie es in einer Subshell ausführen kann , $(...)
mit
rm -i $(ls | grep google)
Eine schnellere und gefährlichere Methode [ 3 ] ist die Verwendung!!
ls | grep google
rm -i $(!!)
Dadurch wird der letzte in Ihrem Verlauf beendete Befehl ausgeführt . Sie können sich davor schützen, dass Sie keine visuelle Kontrolle über die auszuführende Zeile haben, wenn Sie zuvor die Shell-Optionen histverify
mit aktiviert haben shopt -s histverify
.
rm -i *chrome*.deb