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
© 2021 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.3/cmds/fish_command_not_found.html