Créez un alias approprié pour votre shell. Dans bash
, ajoutez cette ligne à ~/.bashrc
:
alias sagi="sudo apt-get install"
Ensuite, source ~/.bashrc
et exécutez alias
pour vérifier que l'alias apparaît dans votre liste. Après cela, tapez simplement
sagi <package>
pour invoquer l'alias. Pour les autres shells, le format de la commande alias et le nom du fichier rc seront différents, mais le source
et alias
devrait être le même.
MISE À JOUR :Il va maintenant essayer d'installer /bin/programme , /usr/bin/programme , /sbin/programme , ou /usr/sbin/programme .
C'est totalement automatique...
Disons que vous tapez g++ main.cpp
et que vous n'avez pas installé g++, il vous demandera si vous voulez installer le paquet g++, et si vous répondez oui, il l'installera puis exécutera g++ main.cpp
.
(Il s'agit d'une configuration unique... Faites-le et vous êtes prêt à partir)
- Installer le fichier apt...
sudo apt-get install apt-file
- Mettre à jour son cache...
sudo apt-file update
-
Modifiez ~/.bashrc et ajoutez-y ceci :
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/_.*$//'`; "[email protected]"; return $?; fi; done; else echo "Could not find file $1."; return 1; fi; }
Je teste toujours cela, mais dans le test préliminaire, cela semble fonctionner. De temps en temps, il serait bon d'exécuter apt-file update
pour actualiser la liste des fichiers disponibles.
Pour que le ~/.bashrc modifié devienne effectif, effectuez l'une des opérations suivantes :déconnectez-vous et reconnectez-vous, ou exécutez . ~/.bashrc
.
Si vous êtes dans un terminal graphique, triple-cliquez sur la ligne commençant par sudo apt-get
pour le marquer entièrement, puis cliquez avec le bouton central pour le coller dans le terminal. Alternativement, à en juger par la sortie, en tapant quelque chose comme
# $(program | tail -n 1)
pour exécuter la sortie de tail -n 1
commande après avoir reçu la sortie de program
. Ce n'est probablement pas plus court. Cependant, cela devrait théoriquement permettre la définition d'un alias comme le suivant
# alias ii='$( $(history -p !!) | tail -n 1)'
qui devrait prendre la dernière commande de l'historique, l'exécuter, obtenir sa dernière ligne et l'exécuter à nouveau. Malheureusement, cela ne fonctionne pas. Ceci traite d'un problème similaire mais je n'ai pas tout à fait réussi à l'adapter à celui-ci, bash se plaint généralement qu'il n'a pas trouvé ""
.