Risposte:
È possibile premere Ctrl- Alt- eper eseguire la funzione readline shell-expand-line
che eseguirà alias, cronologia ed espansioni di parole. Si noti che su alcune tastiere Metanon lo è Alt. Potrebbe essere necessario premere Escquindi Ctrl-e
Le funzioni alias-expand-line
e history-and-alias-expand-line
non sono associate per impostazione predefinita, ma puoi associarle aggiungendo al file linee simili alle seguenti ~/.inputrc
.
"\e\C-l": alias-expand-line
che farebbe Ctrl- Alt- l("ell" minuscola) eseguire solo l' espansione dell'alias.
"\C-i": "\e\C-l\e\e"
che crea una macro che esegue sia alias-expand-line
e complete
. Dipende dall'associazione della mia risposta precedente e che l'associazione predefinita per Esc-Esc rimane in vigore. Saresti comunque in grado di eseguire Esc-Esc se desideri eseguire il completamento predefinito.
ESC C-e
lavora per Bash, ma C-x a
funziona per Zsh. Testato anche su OS X.
Control-x: history-and-alias-expand-line
.
Questo in realtà potrebbe essere un modo molto più semplice di fare ciò che stai cercando ( bash
versione> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
's man
pagina: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
la shell interpreterebbe 'll' come comando / funzione 'll' che probabilmente non esiste.
Questo non funziona. Ma sto indovinando / sperando che qualcosa del genere possa essere fatto per fare quello che vuoi fare. Dovresti usare il tuo script di completamento. Ecco come ne crei uno:
_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
Ora cerca il file completo bash_completion ( http://caliban.org/bash ) e metti lo script sopra menzionato in un file nella directory bash_completion.d che lo script che ottieni dai riferimenti url. Fammi sapere se non funziona.
Grazie.
Per le persone che hanno installato zsh alla ricerca di una soluzione semplice, globalias potrebbe essere tuo amico
Espande tutte le espressioni globali, i sottocomandi e gli alias (incluso globale).
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
per installare basta aggiungere "globalias" al tuo elenco di plugin .zshrc
plugins=(... globalias)
Quindi premi
SPACE
per attivare l'espansione di un comando che hai scritto.Se si desidera solo inserire uno spazio senza espandere la riga di comando, premere
CTRL+SPACE