Kann ksh unter AIX so konfiguriert werden, dass die Tabulatortaste für die Vervollständigung des Dateinamens verwendet wird?

8

Ich habe einige AIX 7-Server, die auf die Software beschränkt sind, die ich installieren kann, und frage mich, ob ich kshdie Tabulatortaste verwenden kann, um Dateinamen bei der Shell-Promotion zu vervollständigen.

Die Manpages sind spärlich für ksh und ich sehe hier keine relevanten Fragen zu diesem Thema. Aufgrund der Mehrheit der Benutzer, die ksh verwenden, zögere ich, meine Shell auf Bash umzustellen - aber ich nehme an, das ist einfach.

Ich melde mich zunächst von einem PC mit putty / ssh an und arbeite hauptsächlich von xterm aus, sobald die X11-Weiterleitung den Datenverkehr zu Hummingbird Exceed auf dem PC zurückbringt.

Kann / usr / bin / ksh, das mit bos.rte.shellAIX 7.1 geliefert wird, so konfiguriert werden, dass die Dateinamenvervollständigung (die normalerweise durch Drücken von ESC + \ ausgelöst wird) durch Drücken der TAB-Taste ausgelöst wird ?

bmike
quelle
Was sagt 'echo $ TERM'?
schaiba
@schaiba - Danke, dass du meine unvollständige Formulierung der Frage verstanden hast. Mein $ TERM ist xterm, egal ob ich über putty / ssh angemeldet bin oder xterms erzeugt habe ...
bmike
Bitte geben Sie den Wert von $ {. Sh.version} in Ihre Frage ein. Doppelte TAB für die Vervollständigung des Dateinamens wurde relativ spät hinzugefügt.
Henk Langeveld
@HenkLangeveld Ich erhalte einen "Bad Substitution" -Fehler, wenn ich versuche, $ {. Sh.version} wiederzugeben. - Die Version von box.rte.shellist 7.1.1.16
bmike

Antworten:

3

Überprüfen Sie, ob /usr/bin/ksh93verfügbar:

ksh93 --version

Wenn es heißt

version         sh (AT&T Research)

Verwenden Sie das dann als interaktive Shell. Es hat die $ {. Sh.version} und sollte die TAB-Erweiterung haben.

Henk Langeveld
quelle
Dies wird wahrscheinlich die Antwort sein, es sei denn, es gibt einen offensichtlichen Weg, die alten kshneuen Tricks zu lehren . Es scheint, dass das /usr/bin/kshabsichtlich nicht mit Funktionen aktualisiert wird und die zweite Binärdatei neuere Funktionen kompiliert hat. Da es sofort zu funktionieren scheint, funktioniert das Drücken der Tabulatortaste wie erwartet, ohne dass das Risiko besteht, dass andere Skripte aufgrund eines Unterschieds zwischen ksh und ksh93 fehlschlagen.
Mike
1
Tatsächlich folgte IBM wahrscheinlich dem Konzept, Namen beim Ändern von Schnittstellen zu ändern, im Gegensatz zu Sun, als ksh in (Open) Solaris auf ksh93 aktualisiert wurde.
Henk Langeveld
4

Ich nehme an, Ihre Shell befindet sich im vi-Modus. Ich bin mir nicht sicher, ob dies funktionieren wird, da meine AIX-Kenntnisse begrenzt sind, aber Sie können versuchen, dies Ihrem Profil hinzuzufügen:

set -o emacs
bind "^I=complete"

Google sagt, dass ksh in AIX aus dieser Sicht irgendwie verkrüppelt ist, also wäre Bash vielleicht eine bessere Wahl.

schaiba
quelle
Dies funktioniert auch nicht in der von mir installierten ksh-Version. Ich bevorzuge die viBindungen, habe aber auf Emacs umgestellt, um zu sehen, ob die Tabulatortaste wie erwartet funktioniert.
bmike
Bindung fehlt für mich auf AIX 7.1
Bryce Guinta
3

Für diese Frage gibt es eine Alternative.

Stellen Sie zuerst den vi-Modus ein für ksh:

$ set -o vi

Danach können Sie den TabSchlüssel auf diese Weise verwenden. Beispiel: Sie möchten den nächsten Pfad vervollständigen:

$ cd /usr/local/s

Geben Sie die TabTaste zweimal ein und Sie werden Folgendes sehen:

$ cd /usr/local/s
1) sbin/
2) share/
3) src/

Angenommen, Sie möchten Option 2( /usr/local/share/Ordner), geben Sie 2 Tab( 2Schlüssel gefolgt vom TabSchlüssel) ein. Und Sie werden dies sehen:

$ cd /usr/local/share/ 
Lujus
quelle