Bash_aliases and awk exit from quotes

I am trying to create an alias for a command to see memory usage,

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

but naive

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

gives errors:

-bash: alias: END: not found
-bash: alias: {print: not found
-bash: alias: sum/1024}: not found

I tried with double quotes,

totalmem ="ps ... |awk '{sum+=$1} END {print sum/1024}'", or

totalmem ='ps ... |awk "{sum+=$1} END {print sum/1024}"' shielding

totalmem ='ps ... |awk \'{sum+=$1} END {print sum/1024}\'' or avoiding double quotes ... but I can't get it to work.

totalmem ='ps ... |awk \"{sum+=$1} END {print sum/1024}\"',

gives an error

awk: "{sum+=}
awk: ^ unterminated string

Any advice appreciated.

+5
source share
3 answers

You have almost none, it $will be expanded in double quotes, so additional acceleration is required:

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

Or with a picture inside awk, as suggested by iiSeymour:

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

You can avoid quoting issues by using a shell function instead of an alias:

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

, totalmem , , -u ps, :

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

:

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

Explanation: you can use different quotation marks for the same argument, for example "I'm double-quoted"'and I am $HOME-less'-and-i-am-not-quoted. Therefore, if you need a single quote inside single quotes, you can add '\''that (1) terminates the single quote, (2) adds an alphabetic single quote with \', (3) starts a single quote again.

(Aliases of this size are what are best done as functions).

+4
source

All Articles