Использование подстановочных знаков с apt-get в fish

При попытке удалить все файлы Ubuntu MATE, которые попали в мою систему, fish, похоже, отвергала подстановочные знаки для apt-get.

sudo apt-get remove mate-*
fish: No matches for wildcard “mate-*”. See `help expand`.

Мне приходится переключаться на bash каждый раз, когда я хочу массово удалить / установить пакеты. Есть ли способ использовать подстановочные знаки в fish для apt-get?

2
задан 5 May 2021 в 17:23

1 ответ

То, что вы здесь делаете, неоднозначно даже в bash .

В bash, если параметр noglob не установлен и mate - * соответствует одному или нескольким файлам в текущем каталоге, он будет расширен до списка тех файлов, которые будет передано в качестве аргументов apt-get remove . В противном случае он будет передан буквально команде apt-get , если:

  • параметр failglob не установлен, и в этом случае поведение будет таким же, как в fish
  • установлена ​​опция nullglob , и в этом случае mate - * будет полностью удален

В fish поведение, похоже, эквивалентно bash failglob , и похоже, что нет эквивалента bash set -o noglob или set -f . Таким образом, вам нужно будет явно запретить подстановку с помощью цитирования, например.

sudo apt-get remove "mate-*"

или

sudo apt-get remove mate-"*"

(что вам действительно следует делать в bash по причинам, изложенным выше).

См. Также:

Также имейте в виду, что apt полностью отошел от простых подстановочных знаков в пользу aptitude - шаблоны стиля - см. Проблема использования подстановочного знака с apt .

5
ответ дан 7 May 2021 в 17:39

Другие вопросы по тегам:

Похожие вопросы: