Ne jamais analyser la sortie de ls
Ma suggestion est d' éviter d'analyser la sortie de ls [ 1 ] , encore plus si elle est associée à la del
commande. Ceci pour de nombreuses raisons principalement liées aux caractères inattendus et inhabituels autorisés dans le nom de fichier.
Même lorsque vous vous attendez à ce que les noms de fichiers appartenant aux packages Linux "se comportent bien" , ce problème peut néanmoins apparaître si d'autres fichiers sont présents dans le même répertoire mais que vous ne saviez pas ou ne remarquiez pas.
Il est préférable d'utiliser find
, l'expansion de l'onglet (commencez à écrire le nom et appuyez sur Tab), l' expansion du nom de fichier [ 2 ] comme *MyKey*
...
Une solution rapide
Puisque vous voulez sélectionner tous les packages (qui se terminent par .deb
) avec "google" à l' intérieur, vous pouvez créer votre demande avec le caractère générique *
*google*.deb
et faire un simple
rm -i *google*.deb
qui sélectionnera chaque nom de fichier avec "google" au milieu qui se terminera pour être .deb
présent dans le répertoire courant. L'option -i
(interactive) vous demandera la confirmation, une bonne habitude lorsque vous supprimez des fichiers avec l'extension de paramètre.
Une solution proche de la philosophie de votre tentative
Si votre but est de construire votre ligne de commande pièce après pièce, donc vous l'avez fait ls
, après ls | grep google
, et seulement après avoir vérifié votre sortie, vous pouvez l'exécuter en sous-shell $(...)
avec
rm -i $(ls | grep google)
Un moyen plus rapide et plus dangereux [ 3 ] , consiste à utiliser!!
ls | grep google
rm -i $(!!)
qui exécutera la dernière commande terminée dans votre historique . Vous pouvez vous protéger du fait que vous n'avez aucun contrôle visuel de la ligne que vous allez exécuter si vous avez activé à l'avance les options du shell histverify
avec shopt -s histverify
.
rm -i *chrome*.deb