Spec-Zone.ru › Fish 3.7

fish_command_not_found - что делать, когда команда не найдена

Синтаксис

function fish_command_not_found
   ...
end

Описание

Когда fish пытается выполнить команду и не находит её, он вызывает эту функцию.

Он может вывести сообщение об этом и часто также проверяет наличие отсутствующего пакета, который содержал бы команду.

Fish поставляет несколько обработчиков для различных операционных систем и выбирает из них при загрузке этой функции, или вы можете определить свой собственный.

Он получает всю командную строку в качестве одного аргумента на токен, поэтому $argv[1] содержит отсутствующую команду.

Когда вы оставляете fish_command_not_found неопределённым (например, добавив пустой файл функции) или явно вызываете __fish_default_command_not_found_handler, fish просто выведет простое сообщение об ошибке.

Пример

Простой обработчик:

function fish_command_not_found
    echo Did not find command $argv[1]
end

> flounder
Did not find command flounder

Или обработчик для команды command-not-found OpenSUSE:

function fish_command_not_found
    /usr/bin/command-not-found $argv[1]
end

Или простой обработчик по умолчанию:

function fish_command_not_found
    __fish_default_command_not_found_handler $argv
end

Обратная совместимость

Эта команда была добавлена в fish 3.2.0. Предыдущие версии fish использовали «fish_command_not_found» событие вместо этого.

Чтобы определить обработчик, который будет работать и в более старых версиях fish, определите его старым способом:

function __fish_command_not_found_handler --on-event fish_command_not_found
     echo COMMAND WAS NOT FOUND MY FRIEND $argv[1]
end

в этом случае fish определит fish_command_not_found, который вызовет его, или определит оболочку:

function fish_command_not_found
     echo "G'day mate, could not find your command: $argv"
end

function __fish_command_not_found_handler --on-event fish_command_not_found
     fish_command_not_found $argv
end

© 2005-2009 Axel Liljencrantz, 2009-2023 fish-shell contributors
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.6/cmds/fish_command_not_found.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API