首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引号的bash_aliases和awk转义

引号的bash_aliases和awk转义
EN

Stack Overflow用户
提问于 2013-01-28 19:14:20
回答 3查看 6.4K关注 0票数 9

我正在尝试为一个命令创建一个别名来查看内存使用情况,

代码语言:javascript
复制
ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'

但是,天真的,

代码语言:javascript
复制
#.bash_aliases
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}''

给出错误:

代码语言:javascript
复制
-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}\"'

给出了错误

代码语言:javascript
复制
awk: "{sum+=}
awk: ^ unterminated string

任何建议都很感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-28 19:20:14

您就快完成了,$将在双引号中展开,因此需要额外的转义:

代码语言:javascript
复制
alias totalmem='ps -u user -o rss,command | grep -v peruser | awk "{sum+=\$1} END {print sum/1024}"'

或者使用iiSeymour建议的awk中的模式

代码语言:javascript
复制
alias totalmem='ps -u user -o rss,command | awk "!/peruser/ {sum+=\$1} END {print sum/1024}"'
票数 10
EN

Stack Overflow用户

发布于 2013-01-28 19:28:37

您可以通过使用shell函数而不是别名来避免引用问题:

代码语言:javascript
复制
totalmem () {
  ps -u user -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
}

这也更加灵活,因为您可以允许totalmem接受参数,例如将用户名传递给ps-u选项,如下例所示:

代码语言:javascript
复制
totalmem () {
  ps -u "$1" -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'
}
票数 17
EN

Stack Overflow用户

发布于 2013-01-28 19:18:21

如下所示:

代码语言:javascript
复制
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)再次开始单引号。

(这种大小的别名最好作为函数使用)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14560796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档