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

Wie erhalte ich die Bash-Vervollständigung für Befehlsaliase?

Ich suche nach einer Tab-Vervollständigung für meine Befehlszeilen-Aliase, zum Beispiel, sagen wir, ich habe den folgenden Alias ​​definiert:

alias apt-inst='sudo aptitude install'

Gibt es eine Möglichkeit, die von aptitude bereitgestellten Vervollständigungen zu erhalten, wenn ich die Tabulatortaste drücke? Das heißt, wenn ich „sudo aptitude install gnumer“ schreibe und die Tabulatortaste drücke, vervollständigt aptitude dies zu gnumeric, oder listet bei Unsicherheit alle verfügbaren Pakete auf, die mit gnumer beginnen. Wenn ich es mit meinem Alias ​​mache, nichts – keine Vervollständigung.

Akzeptierte Antwort:

Dazu gibt es im Ubuntu-Forum einen tollen Thread. Ole J schlägt die folgende Alias-Vervollständigungs-Definitionsfunktion vor:

function make-completion-wrapper () {
  local function_name="$2"
  local arg_count=$(($#-3))
  local comp_function_name="$1"
  shift 2
  local function="
    function $function_name {
      ((COMP_CWORD+=$arg_count))
      COMP_WORDS=( "[email protected]" ${COMP_WORDS[@]:1} )
      "$comp_function_name"
      return 0
    }"
  eval "$function"
  echo $function_name
  echo "$function"
}

Verwenden Sie es, um eine Vervollständigungsfunktion für Ihren Alias ​​zu definieren, und geben Sie diese Funktion dann als Vervollständigung für den Alias ​​an:

make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst

Ich ziehe es vor, Aliase zu verwenden, um immer verwendete Argumente zu bestehenden Programmen hinzuzufügen. Zum Beispiel mit grep , möchte ich Geräte und Binärdateien immer überspringen, also erstelle ich einen Alias ​​für grep . Zum Hinzufügen neuer Befehle wie grepbin , verwende ich ein Shell-Skript in meinem ~/bin Mappe. Wenn sich dieser Ordner in Ihrem Pfad befindet, wird er automatisch vervollständigt.


Linux
  1. 10 praktische Bash-Aliase für Linux

  2. Zwei großartige Anwendungen für den cp-Befehl:Bash-Shortcuts

  3. So verwenden Sie Shell-Aliase unter Linux

  4. So deaktivieren Sie die Bearbeitung meines Verlaufs in Bash

  5. C++11:Wie aliasiert man eine Funktion?

So erstellen Sie Bash-Aliase

Erstellen und verwenden Sie Bash-Aliase unter Linux

So erstellen Sie einen Alias ​​unter Linux

So erstellen Sie Aliasse zum Anpassen von Befehlen in Ubuntu

Linux-Alias-Befehl

So erstellen Sie Aliasse zum Anpassen von Befehlen in Debian