web-dev-qa-db-fra.com

Comment développer des alias en ligne dans Bash?

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 
81
asdfg

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.

102
Dennis Williamson

Cela pourrait en fait être un moyen beaucoup plus simple de faire ce que vous essayez (bashversion> = 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

2

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.

0
0fnt

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.

0
Can