Как отменить определение случайно созданной команды zsh?

Щелкните правой кнопкой мыши -виртуальную машину в списке, щелкните «Настройки», щелкните «Система» в меню слева и измените «Указывающее устройство» на «Планшет USB» вместо «Мышь PS/2».

7
03.07.2020, 11:47
2 ответа

Это определение функции. Точнее, это определение двух функций с одинаковым кодом. Это выглядит необычно, потому что zsh имеет несколько расширений базового синтаксиса определения функций name () { instruction; … }:

.
  • Zsh допускает несколько имен. name1 name2 () { instruction; … }определяет функции name1и name2с одним и тем же телом. Я не знаю ни одной другой оболочки, поддерживающей это.
  • Zsh допускает .в именах функций (, как, например, bash, но не dash или ksh93 ). В именах переносимых функций могут использоваться только буквы ASCII, цифры и символы подчеркивания.
  • Zsh позволяет использовать любую команду в качестве тела функции. Некоторым оболочкам (, в частности bash ), требуется составная команда (, и это все, что требуется POSIX ).
    name () { instruction; … }
    
    является наиболее распространенной формой, где тело представляет собой группу.
    name () ( instruction; )
    
    также является переносимым и запускает тело функции в подоболочке. Другие составные команды технически допустимы, например
    name () if condition; then instruction1; else instruction2; fi
    
    является определением функции, совместимым с POSIX -, но на практике это крайне необычно.
    name () echo hello
    
    является вполне допустимым определением функции в соответствии с zsh (и ksh и dash ), но не в соответствии с POSIX или bash.
  • Пробел перед ()необязателен во всех оболочках.

Чтобы отменить эффект grep.vars() *.py, отключите две функции.

unset -f grep.vars

или

unfunction grep.vars
9
18.03.2021, 23:22

Вы определили функцию . Это действительно только в текущей оболочке.

Простая функция будет выглядеть примерно так

f() echo hello

Теперь команда "f" поздоровается

$ f
hello

Самый простой способ очистить это с помощью команды unset -f.

В вашем случае:

unset -f grep
4
18.03.2021, 23:22

Теги

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