2013-09-08 3 views
0

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

Например , команда называется defCMD

Пусть я печатаю некоторую случайную строку в командной строке:

$ viosjaldfksajflsfa 

Обычно это будет выход «не viosjaldfksajflsfa найден»

Однако, вместо того, что происходит, я хочу «viosjaldfksajflsfa 'для подачи в качестве параметра в скрипт defCMD, который я написал, и, следовательно, вместо этого выполнить bash execute defCMD.

есть ли способ сделать это возможным?

ответ

2

Мой Баш (Fedora) имеет следующий

$ type command_not_found_handle 
command_not_found_handle is a function 
command_not_found_handle() 
{ 
    runcnf=1; 
    retval=127; 
    [ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0; 
    [ ! -x /usr/libexec/packagekitd ] && runcnf=0; 
    if [ $runcnf -eq 1 ]; then 
     /usr/libexec/pk-command-not-found [email protected]; 
     retval=$?; 
    else 
     echo "bash: $1: command not found"; 
    fi; 
    return $retval 
} 

Вы можете начать отсюда и добавить его в свой файл .bashrc. Измените ветвь else.

+1

'command_not_found_handle' был введен в' bash' 4.0, но я думаю, что большинство дистрибутивов Linux в настоящее время обновлено до версии 4.x. – chepner