Nigdy nie analizuj danych wyjściowych ls.
Sugeruję, aby unikać analizowania danych wyjściowych ls [ 1 ] , a nawet więcej, jeśli są one połączone z del
poleceniem. Jest to z wielu powodów głównie związane z nieoczekiwanymi i nietypowymi znakami dozwolonymi w nazwie pliku.
Nawet jeśli powinieneś spodziewać się, że nazwy plików należących do pakietów Linuksa będą „zachowywać się dobrze” , problem ten może się pojawić, jeśli w tym samym katalogu znajdują się inne pliki, ale nie wiedziałeś o tym ani nie zauważyłeś.
Lepiej używać find
, rozwijania tabulatorów (zacznij pisać nazwę i naciśnij Tab), rozwijania nazw plików [ 2 ] jako *MyKey*
...
Szybkie rozwiązanie
Ponieważ chcesz wybrać wszystkie pakiety (które kończą się .deb
) za pomocą „google” w środku, możesz zbudować swoje zapytanie przy użyciu symbolu wieloznacznego *
*google*.deb
i zrobić proste
rm -i *google*.deb
która wybierze każdą nazwę pliku z „google” pośrodku, która zakończy się jako .deb
obecna w bieżącym katalogu. Opcja -i
(interaktywna) poprosi o potwierdzenie, co jest dobrym nawykiem podczas usuwania plików z rozszerzaniem parametrów.
Rozwiązanie zbliżone do filozofii twojej próby
Jeśli twoim celem jest budowanie linii poleceń kawałek po kawałku, więc zrobiłeś to ls
po ls | grep google
i tylko po sprawdzeniu wyjścia , możesz wykonać go w podpowłoce za $(...)
pomocą
rm -i $(ls | grep google)
Szybszym i bardziej niebezpiecznym sposobem [ 3 ] jest użycie!!
ls | grep google
rm -i $(!!)
które wykona ostatnie polecenie zakończone w twojej historii . Można chronić się z faktu, że nie masz wizualną kontrolę linii, które masz zamiar wykonać, jeśli włączono wcześniej opcji powłoki histverify
z shopt -s histverify
.
rm -i *chrome*.deb