UPDATE: Agora ele tentará instalar o / bin / programa , / usr / bin / programa , / sbin / programa , ou / usr / sbin / programa .
Isto é totalmente automático ...
Digamos que você digite g++ main.cpp
e você não tenha o g ++ instalado, ele perguntará se você deseja instalar o pacote g ++, e se você responder sim, ele irá instalá-lo e então executar g++ main.cpp
.
(Esta é uma configuração única ... Faça isso e você é bom para ir)
- Instale o apt-file ...
sudo apt-get install apt-file
- Atualize seu cache ...
sudo apt-file update
-
Edite ~ / .bashrc e adicione isto a ele:
command_not_found_handle () {
ask () {
echo -ne "$1 (Y/n) ";
read -N1 YES_ANSWER;
echo "";
YES_ANSWER='echo $YES_ANSWER | sed 's/Y/y/; s/N/n/;'';
if [ "x$YES_ANSWER" == "xy" ]; then
unset YES_ANSWER;
return 0;
elif [ "x$YES_ANSWER" == "xn" ]; then
unset YES_ANSWER;
return 1;
elif [ "x$YES_ANSWER" == "x" ]; then
unset YES_ANSWER;
return 0;
else
ask_yes "$1";
unset YES_ANSWER;
return $?;
fi;
}
if [ "x$1" == "x" ]; then
echo "File name not provided.";
return 1;
fi;
echo "Command not found: $1";
echo "Searching for file in database...";
FILE="'apt-file search /bin/$1 | sed 's/: /_/''";
if [ "x$FILE" != "x" ]; then
FILE="'apt-file search /usr/bin/$1 | sed 's/: /_/''";
fi;
if [ "x$FILE" != "x" ]; then
FILE="'apt-file search /sbin/$1 | sed 's/: /_/''";
fi;
if [ "x$FILE" != "x" ]; then
FILE="'apt-file search /usr/sbin/$1 | sed 's/: /_/''";
fi;
if [ "x$FILE" != "x" ]; then
for f in "$FILE"; do
if ask "\nDo you want to install package 'echo $f | sed 's/_.*$//'' which provides 'echo $f | sed 's/^.*_//''?"; then
sudo apt-get install 'echo $f | sed 's/_.*$//'';
"$@";
return $?;
fi;
done;
else
echo "Could not find file $1.";
return 1;
fi;
}
Ainda estou testando isso, mas no teste preliminar parece funcionar. De vez em quando, seria bom executar apt-file update
para atualizar a lista de arquivos disponíveis.
Para tornar o ~ / .bashrc editado em vigor, siga um destes procedimentos:
sair e entrar novamente, ou
execute . ~/.bashrc
.