Никогда не анализируйте выходные данные 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