Existe-t-il un moyen de développer des alias en ligne dans bash?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
Vous pouvez appuyer sur Ctrl-Alt-e pour exécuter la fonction readline Shell-expand-line
qui fera des alias, de l’histoire et des expansions de Word. Notez que sur certains claviers Meta n'est pas Alt. Vous devrez peut-être appuyer sur Esc puis Ctrl-e
Les fonctions alias-expand-line
et history-and-alias-expand-line
ne sont pas liées par défaut, mais vous pouvez les lier en ajoutant des lignes similaires à celles-ci dans votre fichier ~/.inputrc
.
"\e\C-l": alias-expand-line
qui ferait Ctrl-Alt-l (minuscule "ell") effectue niquement alias expansion.
Cela pourrait en fait être un moyen beaucoup plus simple de faire ce que vous essayez (bash
version> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
's man
page: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
Cela ne fonctionne pas. Mais je suppose/espère que quelque chose comme ceci puisse être fait pour faire ce que vous voulez faire. Vous devrez utiliser votre propre script d'achèvement. Voici comment vous en faites un:
_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
Maintenant, sourcez le fichier complet bash_completion ( http://caliban.org/bash ) et placez le script mentionné ci-dessus dans un fichier du répertoire bash_completion.d que le script que vous obtenez à partir des références d'URL. Faites-moi savoir si cela ne fonctionne pas.
Merci.
Pour les personnes ayant installé zsh à la recherche d'une solution simple, globalias pourrait bien être votre ami.
Développe toutes les expressions globales, sous-commandes et alias (y compris global).
# .zsrc:
alias S="Sudo systemctl"
$ S<space>
# expands to:
$ Sudo systemctl
installer simplement ajouter "globalias" à votre liste de plugins .zshrc
plugins=(... globalias)
Ensuite, appuyez simplement sur
SPACE
pour déclencher le développement d’une commande que vous avez écrite.Si vous souhaitez uniquement insérer un espace sans développer la ligne de commande, appuyez sur
CTRL+SPACE
.