9
votes

bash_aliases et awks échappant de citations

J'essaie de créer un alias pour une commande pour voir l'utilisation de la mémoire, xxx

mais, naïf, xxx p > donne des erreurs: xxx

J'ai essayé avec des guillemets doubles,

totalmem = "ps ... | awk '{somme + = $ 1} end {imprimé somme / 1024} '" ou

totalmem =" ps ... | awk "{somme + = $ 1} end {imprimé Sum / 1024}" ', s'échapper,

totalmem = 'ps ... | awk \' {somme + = 1 $} end {imprimé Sum / 1024} \ '' , Ou échapper des devis doubles ... mais je n'arrive pas à le faire fonctionner.

totalmem = 'ps ... | awk \ "{somme + = $ 1} fin {imprimé SUM / 1024 } \ "',

donne l'erreur xxx

tous les conseils appréciés.


2 commentaires

Unix.com/shell-programming- Script / ...


Jamais besoin grep avec awk '$ 0! ~ / Peruser / {SOM + = $ 1} end {imprimé SUM / 1024}'


3 Réponses :


8
votes

Comme ceci:

alias totalmem='ps -u user -o rss,command | grep -v peruser | awk '\''{sum+=$1} END {print sum/1024}'\'


0 commentaires

10
votes

Vous l'avez presque presque, le $ sera élargi en double guillemets, afin de répondre à une évasion supplémentaire: xxx

ou avec le motif à l'intérieur awk comme suggéré par iiseymour : xxx


2 commentaires

merci dieu du marteau. Je venais de trouver une solution avec alias mémus = 'ps -u utilisateur -o rss, commandement | grep -v Peruser | awk '"' '"' {somme + = $ 1} end {imprimé sommet / 1024} '"' '' '' '' ' mais le vôtre est plus propre


@Massagran Merci Massagran de moi un utilisateur MacOS. Vous venez de sauver ma journée.



17
votes

Vous pouvez éviter de cibler des problèmes en utilisant une fonction de shell au lieu d'un alias: xxx pré>

ceci est également plus flexible, comme vous pouvez autoriser totalmem code> prendre des arguments , comme un nom d'utilisateur à passer à l'option -u code> de PS code>, comme dans cet exemple: p>

totalmem () {
  ps -u "$1" -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
}


0 commentaires