Bonjour,
Mes vacances sont finies, demain c'est la reprise, oh que c'est dur. Durant mes quelques semaines de farniente, je me suis rendu compte que le fichier de mon shell, bash en l'occurrence (certes avec le mode vi activé) était rempli d'alias et de fonctions : présent en premier lieu pour me simplifier la vie - c'est leur rôles - mais aussi pour stocker des commandes à rallonge utilisées trois fois dans l'année. Cela m'arrive donc d'oublier carrément leur existence. C'est pour cela que je me suis créé une fonction shell qui me permet d'afficher mes alias et leur commentaire associés (l'affichage d'une aide pour les fonctions shell pourrait bientôt venir)
La syntaxe à tenir dans le fichier ~/.bashrc (ou un autre) pour que cette fonction produise le résultat escompté est le suivant :
̀`bash
`
alias bye="exit" # this is an alias for exit
La fonction permettant d'afficher l'ensemble des alias couplés au commentaire est alors la suivante :
alias_help()
{
f=~/.bashrc
my_aliases=$(egrep '^\s*alias\s+.+=' ${f}|sed -r 's/\s*alias\s+(.+)=\".+\"(\s*#\s*(.+))?/\1: \3;/')
echo $my_aliases|tr ';' '\n'
}
Si cela peut être utile aux personnes parcourant ce site, qui comme moi créé des alias à gogo sans se souvenir de leur existence trois mois plus tard, cette fonction est placée sous la licence WTFPL.
Si des personnes plus calées que moi en shell veulent apporter leur correction à cette superbe fonction, et je ne doute pas qu'elles pourraient être quelques unes, qu'elles me corrige (je suis sûr qu'une seule ligne serait suffisante)
# alias
Posté par Sébastien Maccagnoni (site web personnel) . Évalué à 10.
Salut,
Pourquoi n'utilises-tu pas simplement la commande "alias" ?
[^] # Re: alias
Posté par NeoX . Évalué à 3.
pas mieux ;)
[^] # Re: alias
Posté par fravashyo . Évalué à 9.
peut-être que c'est pour permettre d'afficher le commentaire qui suit la déclaration de l'alias ?
« I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond
[^] # Re: alias
Posté par alendroi . Évalué à 6.
Bonjour,
effectivement, il me semblait bien qu'il y avait un truc tout bête pour lister ses alias, seulement mon objectif était de coupler le nom de l'alias avec une aide simple comme on pourrait le faire en python pour une fonction par exemple et non de lier le nom de l'alias avec le code shell associé.
Dire que vous vous n'en avez rien à faire de la vie privée parce que vous n'avez rien à cacher, c'est comme dire que vous n'en avez rien à faire de la liberté d'expression parce que vous n'avez rien à dire. Edward Snowden
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 5.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: alias
Posté par reynum (site web personnel) . Évalué à 1.
Alors là je suis clairement mort de rire ! encore une que je ne connaissais pas :-D
sinon naïvement j'aurais fais.
Moins long que la regex proposée et fonctionne plutôt bien.
kentoc'h mervel eget bezan saotred
# Et ça ?
Posté par Marotte ⛧ . Évalué à 3.
grep ^alias ~/.bashrc
?
[^] # Re: Et ça ?
Posté par Marotte ⛧ . Évalué à 4. Dernière modification le 28 juillet 2013 à 16:01.
En fait je précise (je n'avais pas bien lu), la commande que je donne est utile si dans ton fichier .bashrc (ou autre, genre .bash_aliases) tes alias sont définis ainsi :
alias truc='commande' # commentaire
Avec le commentaire sur la même ligne.
[^] # Re: Et ça ?
Posté par alendroi . Évalué à 1.
Oui, c'est la syntaxe à tenir comme je l'ai précisé même si le code à sauter durant la publication (peut-être qu'un modérateur présent pourra corriger) => Le commentaire doit se trouver sur la ligne de l'alias.
En tout cas, un simple grep n'apporte pas la lisibilité que j'ai recherché pour ma liste d'alias car, à minima, je ne souhaite pas y faire apparaître le code.
Dire que vous vous n'en avez rien à faire de la vie privée parce que vous n'avez rien à cacher, c'est comme dire que vous n'en avez rien à faire de la liberté d'expression parce que vous n'avez rien à dire. Edward Snowden
[^] # Re: Et ça ?
Posté par Marotte ⛧ . Évalué à 2.
OK je comprends, par souci de lisibilité je suppose.
Par contre je ne suis pas sûr que ce soit vraiment pertinent (mais je n'ai peut-être pas bien saisi ton besoin).
S'il s'agit de pouvoir faire le tri je suppose qu'en affichant ta liste, si tu vois une ligne comme ça :
toto # alias ad-hoc créer pour une occasion précise
tu vas bien quand même aller voir la commande en question avant de le supprimer non ? Arf oui, en éditant le fichier pour supprimer tu vas forcément voir la commande, c'est pas faux…
Par contre, pour éviter d'avoir des trucs devenus inutiles dans ton .bashrc tu peux déjà mettre tous tes alias dans .bash_aliases, c'est fait pour.
[^] # Re: Et ça ?
Posté par alendroi . Évalué à 2.
Bonjour,
Non mon but était uniquement d'afficher chacun de mes alias, couvrant plusieurs domaines (ssl, le réseau, le développement, l'accès aux bases de données, etcétéra) couplé avec un commentaire pour aider ma petite mémoire. Maintenant je comprend tout à fait que des personnes préfère la commande alias voir même un grep ^alias plutôt qu'un sed un peu violent qui mériterait sûrement d'être amélioré.
Dire que vous vous n'en avez rien à faire de la vie privée parce que vous n'avez rien à cacher, c'est comme dire que vous n'en avez rien à faire de la liberté d'expression parce que vous n'avez rien à dire. Edward Snowden
# UUoG ?
Posté par Flyounet (site web personnel) . Évalué à -1.
On parle bien de Bash ? Alors pourquoi ne pas l'utiliser :
Au pire sans Bash :
En plus, ça reste plus simple à lire…
[^] # Re: UUoG ?
Posté par benoar . Évalué à 2.
Ou simplement le beau one-liner suivant :
[^] # Re: UUoG ?
Posté par Toto . Évalué à 8.
Comme ça on pourra mettre cette ligne dans le .bashrc et lui affecter un alias, dont il faudra se souvenir, mais pas de soucis puisque tu disposeras de l'alias permettant de lister les alias (ou pas…)
[^] # Re: UUoG ?
Posté par reynum (site web personnel) . Évalué à 1.
Marche pas chez moi.
kentoc'h mervel eget bezan saotred
[^] # Re: UUoG ?
Posté par alendroi . Évalué à 1.
Bonjour,
J'étais parti sur egrep et donc du coup comme je n'y arrivais pas avec lui uniquement, je l'ai pipé à sed. Mais c'est vrai que seul sed suffirait je pense. Cette commande fonctionne très bien dans le shell directement alors j'ai voulu en faire un alias du style (comme ça la boucle est bouclée comme ironiquement dit dans un commentaire) :
Seulement le résultat escompté n'est pas le bon, je suis déçu car comme ça je ne vois pas et je n'ai plus beaucoup de temps pour jouer avec une expression régulière :(
Dire que vous vous n'en avez rien à faire de la vie privée parce que vous n'avez rien à cacher, c'est comme dire que vous n'en avez rien à faire de la liberté d'expression parce que vous n'avez rien à dire. Edward Snowden
[^] # Re: UUoG ?
Posté par Ignatz Ledebur . Évalué à 1.
Une alternative avec AWK (le séparateur de champ est "#"; la ligne commence par un nombre quelconque d'espaces suivis par "alias"; copier le dernier champ dans la variable f, remplacer les suites d'espaces et de signes égale par le séparateur de champs; imprimer le deuxième champ+deux points+f):
[^] # Re: UUoG ?
Posté par benoar . Évalué à 1.
Tu pourrais donner un exemple ?
Chez moi :
sur Debian squeeze.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.