command-not-found
No Debian, Ubuntu e toda a tralha de remasterizações que se aproveitam dos repositórios do Debian, o pacote responsável por esse recurso é o command-not-found.
No Arch Linux e derivados o pacote que tem esse mesmo recurso é o pkgfile.
O recurso é super útil ao iniciante e ao veterano por indicar o programa que contem o comando no seu repositório e o repositório que ele se encontra.
Veja nos exemplos:
Mas achei o pkgfile padrão muito pobre e dei uma modificada no seu script para obter o resultado abaixo.
Instalação
Para instalar o pkgfile execute o comando abaixo no terminal.
sudo pacman -S pkgfile
Crie o banco de dados do pkgfile com o comando.
sudo pkgfile -uHabilite o script padrão.
echo "source /usr/share/doc/pkgfile/command-not-found.bash" >> ~/.bashrc
Com ele você ira ter o resultado abaixo.
Se preferir você pode usar o meu script modificado como foi mostrado acima.
Crie o script.
nano ~/.comandnotfound
Cole as linhas abaixo no editor de texto nano.
command_not_found_handle () {
local pkgs cmd=$1
local FUNCNEST=10
set +o verbose
mapfile -t pkgs < <(pkgfile -bv -- "$cmd" 2>/dev/null)
if (( ${#pkgs[*]} )); then
local pkg=${pkgs[0]%% *}
printf '\n'
printf 'O programa "%s" não está instalado mas é encontrado no pacote:\n\n' "$cmd"
printf ' %s\n' "${pkgs[@]}"
printf '\n'
printf 'O programa pode ser instalado com o comando.\n'
printf '\n'
printf ' %s\n' "sudo pacman -S ${pkgs[0]%% *}"
printf '\n'
read -r -p "Se preferir posso instalar o programa $pkg agora mesmo!? [Y/n] " response
[[ -z $response || $response = [Yy] ]] || return 0
printf '\n'
sudo pacman -S -- "$pkg"
else
printf "bash: %s: command not found\n" "$cmd"
fi >&2
return 127
}
Ficando assim.
Salve teclando CTRL + x tecle s e tecle Enter para fechar.
Altere o script no ~/.bashrc
nano ~/.bashrc
Localize a linha adicionada anteriormente.
"source /usr/share/doc/pkgfile/command-not-found.bash"
Altere para.
source ~/.comandnotfound
Ficando assim.
Salve teclando CTRL + x tecle s e tecle Enter para fechar.
Feche o terminal e abra novamente para testar.
Cara, obrigadão, meu Manjaro estará d+
ResponderExcluir