GNU/Linux >> Tutoriels Linux >  >> Linux

Existe-t-il un raccourci pour exécuter une commande suggérée dans un terminal ?

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)

  1. Installer le fichier apt... sudo apt-get install apt-file
  2. Mettre à jour son cache... sudo apt-file update
  3. 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é "" .


Linux
  1. gnome-terminal :commande introuvable

  2. Effacer le terminal à l'aide du raccourci clavier

  3. Commande ip dans le terminal Mac OS X

  4. Existe-t-il un utilitaire permettant de lire les variables d'environnement à partir d'un fichier env, puis d'exécuter une commande (plus légère que foreman) ?

  5. La commande RPM se bloque

Exécuter la commande dans le terminal actif distant ?

Suppression de fichiers par âge ?

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

Commande d'historique sous Linux - Afficher l'historique du terminal Linux

Utilisation de cut sur Linux Terminal

Comment exécuter le terminal à l'aide de raccourcis clavier dans Gnome 2 ?