Nunca analice la salida de ls
Mi sugerencia es evitar analizar la salida de ls [ 1 ] , incluso más si está junto con el del
comando. Esto, por muchas razones, se relaciona principalmente con caracteres inesperados y no habituales permitidos en el nombre del archivo.
Incluso cuando debe esperar que los nombres de archivo que pertenecen a los paquetes de Linux "se comporten bien" , este problema puede aparecer si otros archivos están presentes en el mismo directorio pero no lo sabía ni lo notó.
Es mejor usar find
la expansión de pestañas (comience a escribir el nombre y presione Tab), la expansión del nombre de archivo [ 2 ] como *MyKey*
...
Una solución rápida
Dado que desea seleccionar todos los paquetes (que terminan con .deb
) con "google" dentro, puede crear su solicitud con el comodín *
*google*.deb
y hacer un simple
rm -i *google*.deb
que seleccionará cada nombre de archivo con "google" en el medio que finalizará para estar .deb
presente en el directorio actual. La opción -i
(interactiva) solicitará la confirmación, un buen hábito cuando elimina archivos con la expansión de parámetros.
Una solución cercana a la filosofía de su intento
Si su propósito es construir su línea de comando pieza tras pieza, de modo que lo haya hecho ls
, después ls | grep google
y solo después de verificar su salida , puede ejecutarlo en una subshell $(...)
con
rm -i $(ls | grep google)
Una forma más rápida y peligrosa [ 3 ] es utilizar!!
ls | grep google
rm -i $(!!)
que ejecutará el último comando terminado en su historial . Puede protegerse del hecho de que no tiene control visual de la línea que va a ejecutar si ha habilitado de antemano las opciones de shell histverify
con shopt -s histverify
.
rm -i *chrome*.deb