![Como faço para ensinar alguns palavrões ao bash no Ubuntu?](https://rvso.com/image/1036633/Como%20fa%C3%A7o%20para%20ensinar%20alguns%20palavr%C3%B5es%20ao%20bash%20no%20Ubuntu%3F.png)
Quando o bash encontra um comando desconhecido (palavra?), ele faz o seguinte:
The program 'hello' can be found in the following packages:
* hello
* hello-debhelper
Try: sudo apt-get install <selected package>
o que eu gostaria de saber é como isso é feito para que eu possa editá-lo ou adicionar algo antes para verificar a palavra desconhecida de um dicionário caseiro que teria pares de frase: resposta que podem então ser enviados para a saída.
Eu sou culpado de não procurar o suficiente por aí .. mas os poucos guias do bash que tentei desenterrar não tinham nada sobre isso. Talvez eu esteja olhando para os lugares errados .. alguma indicação?
E sim, estou fazendo isso, então toda vez que digito wtf quando um programa falha, quero que algo de bom seja jogado de volta para mim ...
Responder1
Procure em seu /etc/bash.bashrc
arquivo a command_not_found_handle
definição da função.
Se você quiser remover esse comportamento, coloque isso no seu .bashrc
[[ $(type -t command_not_found_handle) = "function" ]] &&
unset -f command_not_found_handle
Se você quiser personalizar, você pode fazer
# see http://stackoverflow.com/questions/1203583/how-do-i-rename-a-bash-function
alias_function() {
eval "${1}() $(declare -f ${2} | sed 1d)"
}
alias_function orig_command_not_found_handle command_not_found_handle
command_not_found_handle() {
command=$1
shift
args=( "$@" )
do your stuff before
orig_command_not_found_handle "$command" "${args[@]}"
do your stuff after
}
Responder2
Essepode ser potencialmente útil...
O pacote command-not-found é o que lhe dá a resposta mágica. Não tenho certeza se é possível personalizá-lo, mas pode valer a pena dar uma olhada.
Outra opção para fazer o que acho que você está tentando fazer seria adicionar um alias ao seu arquivo .bashrc que imprime uma mensagem sempre que você digita 'wtf' ou algo parecido:
alias wtf='echo "chill out man"'
Adicione isso ao seu arquivo ~/.bashrc e faça:source $HOME/.bashrc
Isso apenas imprimiria uma mensagem sempre que você digitasse wtf
em seu terminal. Você também pode fazer com que esse alias chame um script que imprima uma mensagem mais detalhada ou algo semelhante. As possibilidades são infinitas!
Responder3
Este comportamento é definido no arquivo de configuração Bash de todo o sistema /etc/bash.bashrc
:
# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- "$1"
return $?
elif [ -x /usr/share/command-not-found ]; then
/usr/bin/python /usr/share/command-not-found -- "$1"
return $?
else
return 127
fi
}
fi
Para personalizá-lo, basta substituir esta função por sua conta ~/.bashrc
:
function command_not_found_handle {
echo "Sorry, smotchkiss, try again."
}
Responder4
@user606723, se você quiser se livrar totalmente desse comportamento:
sudo apt-get remove command-not-found command-not-found-data
Se isso não funcionar, tente isto:
sudo apt-get purge command-not-found command-not-found-data
Se você quiser recuperar o comportamento:
sudo apt-get install command-not-found