GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es eine Verknüpfung, um einen vorgeschlagenen Befehl in einem Terminal auszuführen?

Erstellen Sie einen für Ihre Shell geeigneten Alias. In bash , fügen Sie diese Zeile zu ~/.bashrc hinzu :

alias sagi="sudo apt-get install"

Dann source ~/.bashrc und führen Sie alias aus um zu überprüfen, ob der Alias ​​in Ihrer Liste angezeigt wird. Geben Sie danach einfach

ein
sagi <package>

um den Alias ​​aufzurufen. Bei anderen Shells sind das Format des Alias-Befehls und der Name der rc-Datei anders, aber der source und alias sollte gleich sein.


UPDATE:Es wird nun versucht, /bin/Programm zu installieren , /usr/bin/Programm , /sbin/Programm , oder /usr/sbin/Programm .
Das geht ganz automatisch...
Angenommen, Sie geben g++ main.cpp ein und Sie haben g++ nicht installiert, wird es fragen, ob Sie das Paket g++ installieren möchten, und wenn Sie mit ja antworten, wird es installiert und dann g++ main.cpp ausgeführt .

(Dies ist eine einmalige Einrichtung ... Tun Sie dies und Sie können loslegen)

  1. Apt-Datei installieren... sudo apt-get install apt-file
  2. Den Cache aktualisieren... sudo apt-file update
  3. Bearbeiten Sie ~/.bashrc und fügen Sie dies hinzu:

    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;
    }
    

Ich teste das noch, aber im Vorversuch scheint es zu funktionieren. Hin und wieder wäre es gut, apt-file update auszuführen um die Liste der verfügbaren Dateien zu aktualisieren.

Damit die bearbeitete Datei ~/.bashrc wirksam wird, führen Sie einen der folgenden Schritte aus:Melden Sie sich ab und wieder an oder führen Sie . ~/.bashrc aus .


Wenn Sie sich in einem grafischen Terminal befinden, klicken Sie dreimal in die Zeile, die mit sudo apt-get beginnt um es vollständig zu markieren, und klicken Sie dann mit der mittleren Maustaste, um es in das Terminal einzufügen. Alternativ können Sie, der Ausgabe nach zu urteilen, so etwas wie

eingeben
# $(program | tail -n 1)

um die Ausgabe von tail -n 1 auszuführen Befehl, nachdem er mit der Ausgabe von program gefüttert wurde . Das ist wahrscheinlich nicht kürzer. Dies sollte jedoch theoretisch die Definition eines Alias ​​wie des folgenden ermöglichen

# alias ii='$( $(history -p !!) | tail -n 1)'

die den letzten Befehl im Verlauf nehmen, ausführen, seine letzte Zeile abrufen und erneut ausführen sollte. Leider funktioniert das nicht. Dies behandelt ein ähnliches Problem, aber ich habe es nicht ganz geschafft, es an dieses anzupassen, bash beschwert sich normalerweise, dass es "" nicht gefunden hat .


Linux
  1. Geplante Befehle

  2. Wie führe ich einen Befehl aus, der das Schließen des Terminals überlebt?

  3. Gnome-Terminal:Befehl nicht gefunden

  4. Gibt es ein Dienstprogramm zum Lesen von Umgebungsvariablen aus einer env-Datei und zum Ausführen eines Befehls (leichter als Foreman)?

  5. RPM-Befehl hängt

Dateien nach Alter löschen?

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

Verlaufsbefehl in Linux – Zeigen Sie den Verlauf des Linux-Terminals an

5 Verwendungen des mv-Befehls im Linux-Terminal

Cut auf Linux Terminal verwenden

Wie führe ich das Terminal mit Tastenkombinationen in Gnome 2 aus?