Zum Inhalt springen

Complete: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „[[Category:“ durch „[[Kategorie:“
K Textersetzung - „ “ durch „ “
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 12: Zeile 12:
  # Test des bisherigen Verhaltens:
  # Test des bisherigen Verhaltens:
  '''xv s[Tab][Tab]'''
  '''xv s[Tab][Tab]'''
  sax_0.gif     sax_norm.tmp sax_xxx.jpg
  sax_0.gif   sax_norm.tmp sax_xxx.jpg
  sax_grob.tmp sax_post.tmp start_taper
  sax_grob.tmp sax_post.tmp start_taper
   
   
  '''complete -f -X '!*.+(gif|jpg|jpeg|GIF|JPG|bmp)' xv'''
  '''complete -f -X '!*.+(gif|jpg|jpeg|GIF|JPG|bmp)' xv'''
  # Test des jetzigen Verhaltens:
  # Test des jetzigen Verhaltens:
  '''xv s[Tab][Tab]'''
  '''xv s[Tab][Tab]'''
  sax_0.gif sax_xxx.jpg
  sax_0.gif sax_xxx.jpg


Mit der Option -p lässt sich jede Spezifikation anzeigen und mit -r auch wieder löschen. Wird kein Name angegeben, betrifft die Aktion jede Spezifikation:  
Mit der Option -p lässt sich jede Spezifikation anzeigen und mit -r auch wieder löschen. Wird kein Name angegeben, betrifft die Aktion jede Spezifikation:  
Zeile 30: Zeile 30:
{|class="wikitable sortable"  
{|class="wikitable sortable"  
|-
|-
| | '''-a '''
| | '''-a '''
| colspan="2"   | Es wird eine Expansion zu einem bekannten Aliasnamen versucht  
| colspan="2" | Es wird eine Expansion zu einem bekannten Aliasnamen versucht  
|-
|-
| | '''-b '''
| | '''-b '''
| colspan="2"   | Erweiterung zu einem eingebauten Kommando  
| colspan="2" | Erweiterung zu einem eingebauten Kommando  
|-
|-
| | '''-c '''
| | '''-c '''
| colspan="2"   | Erweiterung zu einem Kommando  
| colspan="2" | Erweiterung zu einem Kommando  
|-
|-
| | '''-e '''
| | '''-e '''
| colspan="2"   | Exportierte Variable  
| colspan="2" | Exportierte Variable  


Als Beispiel definieren wir eine Funktion, die den Inhalt einer exportierten Variablen anzeigen soll:  
Als Beispiel definieren wir eine Funktion, die den Inhalt einer exportierten Variablen anzeigen soll:  
Zeile 57: Zeile 57:


|-
|-
| | '''-f '''
| | '''-f '''
| colspan="2"   | Dateinamenserweiterung
| colspan="2" | Dateinamenserweiterung
|-
|-
| | '''-u '''
| | '''-u '''
| colspan="2"   | Benutzernamen
| colspan="2" | Benutzernamen


Als Beispiel soll das Kommando mail mit einem Benutzernamen expandiert werden. Als Suffix wird automatisch "@outside.all" ergänzt:  
Als Beispiel soll das Kommando mail mit einem Benutzernamen expandiert werden. Als Suffix wird automatisch "@outside.all" ergänzt:  
Zeile 70: Zeile 70:
  mail alf@outside.all'''
  mail alf@outside.all'''
|-
|-
| | '''-v'''
| | '''-v'''
| colspan="2"   | Variablennamen
| colspan="2" | Variablennamen


Als weitere Optionen stehen zur Verfügung:  
Als weitere Optionen stehen zur Verfügung:  
|-
|-
| |  
| |  
| | '''-G Muster'''
| | '''-G Muster'''
| | Es wird eine Dateinamenserweiterung mit dem Muster versucht  
| | Es wird eine Dateinamenserweiterung mit dem Muster versucht  
|-
|-
| |  
| |  
| | '''-C Kommando'''
| | '''-C Kommando'''
| | Das Kommando wird in einer Subshell gestartet und dessen Ausgabe als mögliche Vervollständigung eingesetzt  
| | Das Kommando wird in einer Subshell gestartet und dessen Ausgabe als mögliche Vervollständigung eingesetzt  
|-
|-
| |  
| |  
| | '''-X Muster'''
| | '''-X Muster'''
| | Es wird eine Dateinamenserweiterung nach Ausführung aller anderen Optionen versucht. Alle Dateinamen, die mit dem Muster übereinstimmen, werden aus der Liste der möglichen Vervollständigungen entfernt  
| | Es wird eine Dateinamenserweiterung nach Ausführung aller anderen Optionen versucht. Alle Dateinamen, die mit dem Muster übereinstimmen, werden aus der Liste der möglichen Vervollständigungen entfernt  
|-
|-
| |  
| |  
| | '''-P Präfix'''
| | '''-P Präfix'''
| | Nach Ausführung aller anderen Optionen werden die möglichen Erweiterungen mit dem angegebenen Präfix versehen  
| | Nach Ausführung aller anderen Optionen werden die möglichen Erweiterungen mit dem angegebenen Präfix versehen  
|-
|-
| |  
| |  
| | '''-S Suffix'''
| | '''-S Suffix'''
| | Nach Ausführung aller anderen Optionen werden die möglichen Erweiterungen mit dem angegebenen Suffix versehen  
| | Nach Ausführung aller anderen Optionen werden die möglichen Erweiterungen mit dem angegebenen Suffix versehen  


|-
|-
|}
|}


[[Kategorie:Bash:Builtin]]
[[Kategorie:Bash/Builtin]]
[[Kategorie:Linux:Befehl]]
[[Kategorie:Linux/Befehl]]

Aktuelle Version vom 14. Juni 2026, 00:45 Uhr

Mit diesem Kommando kann das ganze Verhalten der Bash bei der Vervollständigung von Argumenten verändert werden.

Bevor wir uns mit den Optionen auseinander setzen, soll ein Beispiel die Mächtigkeit des Konzepts andeuten.

Beispiel

Als Argumente für das Programm xv (dient der Anzeige von Dateien diverser Grafikformate) sollen bei der automatischen Dateinamensergänzung nur Dateien mit einer typischen Dateiendung (*.jpg, *.gif,...) berücksichtigt werden. Mit complete müsste die Bash wie folgt eingerichtet werden:

# Die Option "extglob" (vergleiche shopt) muss gesetzt sein:
shopt -q extglob || shopt -s extglob 

# Test des bisherigen Verhaltens:
xv s[Tab][Tab]
sax_0.gif   sax_norm.tmp sax_xxx.jpg
sax_grob.tmp sax_post.tmp start_taper

complete -f -X '!*.+(gif|jpg|jpeg|GIF|JPG|bmp)' xv
# Test des jetzigen Verhaltens:
xv s[Tab][Tab]
sax_0.gif sax_xxx.jpg

Mit der Option -p lässt sich jede Spezifikation anzeigen und mit -r auch wieder löschen. Wird kein Name angegeben, betrifft die Aktion jede Spezifikation:

complete -p
complete -f -X '!*.+(gif|jpg|jpeg|GIF|JPG|bmp)' xv
complete -r xv

complete wurde im Beispiel durch die Option -f angewiesen, den folgenden Ausdruck einer Dateinamenserweiterung zu unterziehen. Alternative Expansionen sind (Auswahl):

-a Es wird eine Expansion zu einem bekannten Aliasnamen versucht
-b Erweiterung zu einem eingebauten Kommando
-c Erweiterung zu einem Kommando
-e Exportierte Variable

Als Beispiel definieren wir eine Funktion, die den Inhalt einer exportierten Variablen anzeigen soll:

show_exports() { echo $*; }

Beim Aufruf dieser Funktion sollen bei versuchter Expansion alle möglichen Erweiterungen angezeigt werden. Um sich den Inhalt der Variablen selbst anzuschauen, muss dieser ein Dollarzeichen voranstehen. Mit der Option -P lässt sich ein solches Präfix für ein Expansionsergebnis festlegen.

Die complete-Zeile sollte wie folgt aussehen:

complete -e -P '$'
# Test
show_exports PO[Tab]
show_exports $POVRAYOPT
-l/usr/lib/povray/include
-f Dateinamenserweiterung
-u Benutzernamen

Als Beispiel soll das Kommando mail mit einem Benutzernamen expandiert werden. Als Suffix wird automatisch "@outside.all" ergänzt:

complete -u -S '@outside.all' mail

# Test
mail a[Tab]
mail alf@outside.all
-v Variablennamen

Als weitere Optionen stehen zur Verfügung:

-G Muster Es wird eine Dateinamenserweiterung mit dem Muster versucht
-C Kommando Das Kommando wird in einer Subshell gestartet und dessen Ausgabe als mögliche Vervollständigung eingesetzt
-X Muster Es wird eine Dateinamenserweiterung nach Ausführung aller anderen Optionen versucht. Alle Dateinamen, die mit dem Muster übereinstimmen, werden aus der Liste der möglichen Vervollständigungen entfernt
-P Präfix Nach Ausführung aller anderen Optionen werden die möglichen Erweiterungen mit dem angegebenen Präfix versehen
-S Suffix Nach Ausführung aller anderen Optionen werden die möglichen Erweiterungen mit dem angegebenen Suffix versehen