Никогда не анализируйте выходные данные ls.
Я предлагаю избегать синтаксического анализа выходных данных ls [ 1 ] , даже больше, если это связано с delкомандой. Это по многим причинам в основном связано с неожиданными и не обычными символами, разрешенными в имени файла.
Даже если вы ожидаете, что имена файлов, относящиеся к пакетам Linux, будут «вести себя хорошо» , эта проблема, тем не менее, может появиться, если в этом же каталоге присутствуют другие файлы, но вы не знали или не заметили.
Лучше использовать findрасширение вкладки (начните писать имя и нажмите Tab), расширение имени файла [ 2 ] как *MyKey*...
Быстрое решение
Поскольку вы хотите выбрать все пакеты (которые заканчиваются .deb) с помощью "google" внутри, вы можете создать свой запрос с помощью подстановочного знака * *google*.debи сделать простой
rm -i *google*.deb
это выберет каждое имя файла с "google" в середине, которое будет отображаться .debв текущем каталоге. Опция -i(интерактивная) запросит подтверждение, что является хорошей привычкой при удалении файлов с расширением параметра.
Решение, близкое к философии вашей попытки.
Если ваша цель состоит в том, чтобы строить фрагмент командной строки за фрагментом, то есть вы сделали это lsпосле ls | grep google, и только после проверки выходных данных, вы можете выполнить их в подоболочке $(...)с помощью
rm -i $(ls | grep google)
Более быстрый и опасный способ [ 3 ] заключается в использовании!!
ls | grep google
rm -i $(!!)
это выполнит последнюю команду, законченную в вашей истории . Вы можете защитить себя от того факта, что у вас нет визуального контроля над строкой, которую вы собираетесь выполнить, если вы заранее включили параметры оболочки histverifyс помощью shopt -s histverify.
rm -i *chrome*.deb