Non analizzare mai l'output di ls Il
mio suggerimento è di evitare di analizzare l'output di ls [ 1 ] , ancora di più se in combinazione condel comando. Questo per molte ragioni principalmente legate a caratteri imprevisti e non usuali consentiti nel nome del file.
Anche quando dovresti aspettarti che i nomi dei file appartenenti ai pacchetti Linux "si comportino bene" , questo problema può comunque apparire se altri file sono presenti nella stessa directory ma non lo sapevi o non lo notavi.
È meglio usare find, l'espansione della scheda (iniziare a scrivere il nome e premere Tab), l' espansione del nome del file [ 2 ] come *MyKey*...
Una soluzione veloce
Dato che vuoi selezionare tutti i pacchetti (che finiscono con .deb) con "google" all'interno puoi costruire la tua richiesta con il jolly * *google*.debe fare un semplice
rm -i *google*.deb
che selezionerà ogni nome di file con "google" nel mezzo che finirà per .debpresente nella directory corrente. L'opzione -i(interattiva) richiederà la conferma, una buona abitudine quando si eliminano i file con l'espansione del parametro.
Una soluzione vicina alla filosofia del tuo tentativo
Se il tuo scopo è quello di costruire il tuo pezzo da riga di comando pezzo dopo pezzo, così hai fatto ls, dopo ls | grep google, e solo dopo aver verificato il tuo output puoi eseguirlo in una subshell $(...)con
rm -i $(ls | grep google)
Un modo più rapido e pericoloso [ 3 ] è quello di utilizzare!!
ls | grep google
rm -i $(!!)
che eseguirà l'ultimo comando finito nella tua cronologia . Puoi proteggerti dal fatto che non hai alcun controllo visivo della linea che eseguirai se hai abilitato in anticipo le opzioni di shell histverifycon shopt -s histverify.
rm -i *chrome*.deb