Il y a quelques articles, quelqu'un a demandé comment afficher la mémoire en pourcentage. Quelqu'un a répondu:
free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
Je me demandais si je pouvais transformer cette commande en alias dans ~ / .bashrc. Mais la syntaxe de l'alias est:
alias aliasname='command'
Comment puis-je faire ceci? Cette commande contient à la fois '
et "
. J'ai essayé différentes manières, mais cela n'a pas fonctionné. Est-ce seulement possible? Suis-je en train de manquer quelque chose?
aliasname() { free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'; }
- toujours une seule ligne, aucun changement de citation / échappement / etc nécessaire du tout. Il y a une raison pour laquelle le factoid du canal freenode #bash!alias
est (enfin, était , mais pour la plupart de la vie du bot factoid, une variante de): Si vous devez demander, utilisez plutôt une fonction .Réponses:
Vous avez besoin:
Notez que vous devez échapper à la fois à
"
et$
.la source
Dire que la syntaxe d'un alias est
alias aliasname='command'
un peu trompeur, car cela semble impliquer que les guillemets simples font partie de la syntaxe. Ils ne sont pas. La partie après le signe égal est similaire aux affectations de variables, en ce sens qu'elle peut être n'importe quel mot shell , composé soit de caractères simples (sans guillemets), soit d'une chaîne entre guillemets, soit d'une combinaison.Ce sont tous valides, et les trois derniers équivalents:
Donc, tout ce que vous devez faire est d'échapper correctement les guillemets pour les avoir dans la valeur d'alias.
Voir, par exemple, cette réponse et d'autres réponses, par exemple, ces questions pour une discussion à ce sujet:
Ou utilisez la fonction au lieu d'un alias pour vous débarrasser complètement des problèmes de citation:
la source