120 votes

comment développer les alias en ligne en bash ?

Existe-t-il un moyen d'étendre les alias en ligne dans bash ?

$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l

151voto

Damian Powell Points 315

Vous pouvez appuyer sur Ctrl - Alt - e pour exécuter la fonction readline shell-expand-line qui fera les alias, l'histoire et les expansions de mots. 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 y history-and-alias-expand-line ne sont pas liés par défaut, mais vous pouvez les lier en ajoutant des lignes similaires à celles qui suivent à votre fichier ~/.inputrc fichier.

"\e\C-l": alias-expand-line

ce qui rendrait Ctrl - Alt - l (minuscule "ell") exécuter seulement expansion de l'alias.

16voto

Can Rau Points 211

Pour les personnes ayant zsh & Oh My ZSH installés et cherchant une solution simple, globalias pourrait être votre ami

Développe toutes les expressions glob, sous-commandes et alias (y compris global).

# .zsrc:
alias S="sudo systemctl"

$ S<space>
# expands to:
$ sudo systemctl

Pour l'installer, il suffit d'ajouter "globalias" à votre liste de plugins .zshrc.

plugins=(... globalias)

Ensuite, il suffit d'appuyer sur SPACE pour déclencher l'expansion d'une commande que vous avez écrite.

Si vous voulez seulement insérer un espace sans développer la ligne de commande, appuyez sur CTRL+SPACE

0voto

0fnt Points 1841

Cela ne fonctionne pas. Mais je suppose/espère que quelque chose comme ça peut être fait pour faire ce que vous voulez faire. Vous auriez à utiliser votre propre complétion script. Voici comment en faire 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 de bash_completion( http://caliban.org/bash ) et mettez le script mentionné ci-dessus dans un fichier à l'intérieur du répertoire bash_completion.d que le script que vous obtenez à partir des références url. Faites-moi savoir si cela ne fonctionne pas.

Merci.

-2voto

Cela pourrait être une façon beaucoup plus simple de faire ce que vous essayez de faire ( 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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X