Antworten:
Sie können Ctrl- Alt- drücken e, um die Readline-Funktion auszuführen, die Alias- shell-expand-line
, Verlaufs- und Worterweiterungen ausführt . Beachten Sie, dass dies bei einigen Tastaturen Metanicht der Fall ist Alt. Sie könnten drücken müssen , Escdann Ctrl-e
Die Funktionen alias-expand-line
und history-and-alias-expand-line
sind nicht standardmäßig gebunden. Sie können sie jedoch binden, indem Sie Ihrer ~/.inputrc
Datei Zeilen hinzufügen, die den folgenden ähneln .
"\e\C-l": alias-expand-line
was dazu führen würde, dass Ctrl- Alt- l(Kleinbuchstabe "ell") nur eine Alias-Erweiterung durchführt.
"\C-i": "\e\C-l\e\e"
wird ein Makro erstellt, das sowohl alias-expand-line
als auch ausführt complete
. Es hängt von der Bindung aus meiner obigen Antwort ab und davon, dass die Standardbindung für Esc-Esc bestehen bleibt. Sie können weiterhin Esc-Esc ausführen, wenn Sie die Standardvervollständigung ausführen möchten.
ESC C-e
für Bash, aber C-x a
für Zsh. Auch unter OS X getestet.
Control-x: history-and-alias-expand-line
.
Dies könnte tatsächlich eine viel einfachere Möglichkeit sein, das zu tun, was Sie versuchen ( bash
Version> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
‚s man
Seite: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
würde die Shell bei einem Alias 'll' als Befehl / Funktion 'll' interpretieren, was wahrscheinlich nicht existiert.
Das funktioniert nicht. Aber ich rate / hoffe, dass so etwas getan werden kann, um das zu tun, was Sie tun möchten. Sie müssten Ihr eigenes Abschlussskript verwenden. So machst du eins:
_ll()
{
COMPREPLY=(ls -l)
#The next line does not work. I just hope there were a way to replace that word
COMP_WORDS[COMP_CWORD-1]="ls -l"
}
complete -F _ll ll
Geben Sie nun die vollständige Datei "bash_completion" ( http://caliban.org/bash ) ein und speichern Sie das oben genannte Skript in einer Datei im Verzeichnis "bash_completion.d", die Sie aus den URL-Referenzen erhalten. Lass es mich wissen, wenn es nicht funktioniert.
Vielen Dank.
Für Leute, die zsh installiert haben und nach einer einfachen Lösung suchen, könnte globalias Ihr Freund sein
Erweitert alle Glob-Ausdrücke, Unterbefehle und Aliase (einschließlich global).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
Zum Installieren fügen Sie einfach "globalias" zu Ihrer .zshrc-Plugin-Liste hinzu
plugins=(... globalias)
Drücken Sie dann einfach
SPACE
, um die Erweiterung eines von Ihnen geschriebenen Befehls auszulösen.Wenn Sie nur ein Leerzeichen einfügen möchten, ohne die Befehlszeile zu erweitern, drücken Sie
CTRL+SPACE