Czy istnieje sposób na rozszerzenie aliasów wbudowanych w bash?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
Możesz nacisnąć Ctrl- Alt-, eaby wykonać funkcję readline, shell-expand-line
która wykona alias, historię i rozszerzenia wyrazów. Zauważ, że na niektórych klawiaturach Metatak nie jest Alt. Być może trzeba nacisnąć Escnastępnie Ctrl-e
Funkcje alias-expand-line
i history-and-alias-expand-line
nie są domyślnie powiązane, ale można je powiązać, dodając do ~/.inputrc
pliku wiersze podobne do poniższych .
"\e\C-l": alias-expand-line
co sprawiłoby, że Ctrl- Alt- l(małe litery „ell”) wykonują tylko rozwinięcie aliasu.
"\C-i": "\e\C-l\e\e"
która tworzy makro, które wykonuje zarównoalias-expand-line
icomplete
. Zależy to od powiązania z mojej powyższej odpowiedzi i od tego, że domyślne powiązanie dla Esc-Esc pozostaje na swoim miejscu. Nadal będziesz mógł wykonać Esc-Esc, jeśli chcesz wykonać domyślne zakończenie.ESC C-e
działa dla Bash, aleC-x a
działa dla Zsh. Przetestowano również w systemie OS X.Control-x: history-and-alias-expand-line
.To może być znacznie prostszy sposób na robienie tego, co próbujesz (
bash
wersja> = 4.2.29):shopt
„sman
strona: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.htmlźródło
alias ll='ls -l
powłoka interpretowałaby „ll” jako polecenie / funkcję „ll”, co prawdopodobnie nie istnieje.To nie działa. Ale zgaduję / mam nadzieję, że coś takiego można zrobić, aby zrobić to, co chcesz. Będziesz musiał użyć własnego skryptu ukończenia. Oto jak to zrobić:
Teraz źródłowy pełny plik bash_completion ( http://caliban.org/bash ) i umieść wyżej wspomniany skrypt w pliku w katalogu bash_completion.d, który skrypt otrzymałeś z odnośników do adresu URL. Daj mi znać, jeśli to nie zadziała.
Dzięki.
źródło
Dla osób, które zainstalowały zsh i szukają prostego rozwiązania, globalia mogą być twoim przyjacielem
aby zainstalować, po prostu dodaj „globalias” do listy wtyczek .zshrc
źródło