Existe-t-il un moyen d'étendre les alias en ligne dans bash ?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
Existe-t-il un moyen d'étendre les 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 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.
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
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.
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
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.