Forum: PC-Programmierung Autovervollständigung Auf unix um Python Script zu starten


von Leon (Gast)


Lesenswert?

Hallo,
ich hätte eine Frage zu einem Python Projekt. Ich habe ein Python 
Projekt auf einem unix Server, in welchem ich einen Parameter mitgebe 
Bsp.:

./mein_Projekt Hallo
print("Hallo")
./mein_Projekt Tschüss
print("Tschüss")

Es gibt auf Unix Ja diese Autovervollständigung, wenn man den Anfang 
eines Datei namens eingibt kann man diesen mit Tab vervollständigen. 
Meine frage währe jetzt, ob ich so etwas für meine Parameter machen 
kann, obwohl diese nicht als Datei bestehen?

von Imonbln (Gast)


Lesenswert?

Leon schrieb:
> Meine frage währe jetzt, ob ich so etwas für meine Parameter machen
> kann, obwohl diese nicht als Datei bestehen?

Ja das geht die Technik heißt bash autocomplete und es gibt ein pip 
module argcomplete welches dir hilf das zu erreichen. d.h. wenn du denn 
argparser verwendest um die Parameter zu parsen.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Leon schrieb:
> Hallo,
> ich hätte eine Frage zu einem Python Projekt. Ich habe ein Python
> Projekt auf einem unix Server, in welchem ich einen Parameter mitgebe
> Bsp.:
>
> ./mein_Projekt Hallo
> print("Hallo")
> ./mein_Projekt Tschüss

Hmm, Umlaute in Kommandozeilen-Optionen. Kann man machen, kann man sich 
je nach Locale später auch drüber ärgern.

> Es gibt auf Unix Ja diese Autovervollständigung,

Nicht Unix (oder Linux). Das ist eine Eigenschaft der jeweiligen Shell. 
Manche alten Shells können es gar nicht. Die weit verbreitete bash kann 
es.

> Meine frage währe jetzt, ob ich so etwas für meine Parameter machen
> kann, obwohl diese nicht als Datei bestehen?

Lade folgendes in die bash (ich konnte mich nicht überwinden den Umlaut 
zu nehmen):
1
complete -W "Hallo Tschuess" mein_Projekt
Das ist eine der simpelsten Arten eine Autocompletion zu definieren. 
"complete" kann einiges mehr.

Noch ein paar Anmerkungen:
1
mein_Projekt
So eine Kombination aus Unterstrich und Kamelhöcker-Notation vermeidet 
man in jeder Programmiersprache, auch in Shell-Scripten. In 
Shell-Skripten vermeidet man sogar beides einzeln. Die "natürliche" 
Schreibweise auf Unix/Linux-Systemen ist durchgehend Kleinschreibung. 
Keine Kamelhöcker.

Meist, auch wenn es hässlich ist, schreibt man alles zusammen. Also
1
meinprojekt

Wenn das zu hässlich aussieht, dann eine Trennung durch '-', nicht '_', 
weil man für das '-' keine Shift-Taste drücken muss:
1
mein-projekt

Programmnamen mit '_' findet man zwar auch in den offiziellen 
Distributionen, aber daran erkennt man, dass mal wieder ein paar 
Skript-Kiddies am Werk waren.

Zu Umlauten habe ich schon was gesagt. Wenn immer es geht Programmname, 
Optionen und Flags in 7-Bit ASCII.

Das gilt nicht für Parameter. Da hat man keine Kontrolle drüber. Wenn 
jemand in einer Latin-1 oder z.B. Unicode-Locale einem Programm einen 
Parameter wie "Gehäuseübergröße.txt" mitgeben möchte dann kann man das 
nicht verhindern.

: Bearbeitet durch User
von Norbert (Gast)


Lesenswert?

Hannes J. schrieb:
> Hmm, Umlaute in Kommandozeilen-Optionen. Kann man machen, kann man sich
> je nach Locale später auch drüber ärgern.
> Lade folgendes in die bash (ich konnte mich nicht überwinden den Umlaut
> zu nehmen):

Da musste ich grinsen.
Ging mir bis vor einiger Zeit ähnlich, aber dann, gegen Ende des letzten 
Jahrtausends habe ich beherzt auf UTF-8 umgestellt. ;-)

Wenn man jetzt noch daran denkt das Python3 so etwas erlaubt:
1
def verfügbare_Zeit_µs():

von Nur_ein_Typ (Gast)


Lesenswert?

Hannes J. schrieb:
> Programmnamen mit '_' findet man zwar auch in den offiziellen
> Distributionen, aber daran erkennt man, dass mal wieder ein paar
> Skript-Kiddies am Werk waren.

Das ist natürlich völliger Unsinn.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.