При попытке удалить все файлы Ubuntu MATE, которые попали в мою систему, fish, похоже, отвергала подстановочные знаки для apt-get.
sudo apt-get remove mate-*
fish: No matches for wildcard “mate-*”. See `help expand`.
Мне приходится переключаться на bash каждый раз, когда я хочу массово удалить / установить пакеты. Есть ли способ использовать подстановочные знаки в fish для apt-get?
То, что вы здесь делаете, неоднозначно даже в 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 .