我正在尝试为一个命令创建一个别名来查看内存使用情况,
ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'但是,天真的,
#.bash_aliases
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}''给出错误:
-bash: alias: END: not found
-bash: alias: {print: not found
-bash: alias: sum/1024}: not found我试过用双引号,
totalmem ="ps ... |awk '{sum+=$1} END {print sum/1024}'",或者
totalmem ='ps ... |awk "{sum+=$1} END {print sum/1024}"',转义,
totalmem ='ps ... |awk \'{sum+=$1} END {print sum/1024}\''或转义双引号...但我似乎不能让它工作。
totalmem ='ps ... |awk \"{sum+=$1} END {print sum/1024}\"',
给出了错误
awk: "{sum+=}
awk: ^ unterminated string任何建议都很感谢。
发布于 2013-01-28 19:20:14
您就快完成了,$将在双引号中展开,因此需要额外的转义:
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk "{sum+=\$1} END {print sum/1024}"'或者使用iiSeymour建议的awk中的模式
alias totalmem='ps -u user -o rss,command | awk "!/peruser/ {sum+=\$1} END {print sum/1024}"'发布于 2013-01-28 19:28:37
您可以通过使用shell函数而不是别名来避免引用问题:
totalmem () {
ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
}这也更加灵活,因为您可以允许totalmem接受参数,例如将用户名传递给ps的-u选项,如下例所示:
totalmem () {
ps -u "$1" -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
}发布于 2013-01-28 19:18:21
如下所示:
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk '\''{sum+=$1} END {print sum/1024}'\'说明:对于同一参数,您可以使用不同类型的引号,如"I'm double-quoted"'and I am $HOME-less'-and-i-am-not-quoted。因此,如果您需要在单引号中加上单引号,您可以添加'\'',它(1)终止单引号,(2)使用\'添加文字单引号,(3)再次开始单引号。
(这种大小的别名最好作为函数使用)。
https://stackoverflow.com/questions/14560796
复制相似问题