任何人都可以帮我设置以下脚本作为别名:
ps axu | awk '{print $2, $3, $4, $11}' | head -1 && ps axu | awk '{print $2, $3, $4, $11}' | sort -k3 -nr |head -20
我尝试添加以下行.bashrc
文件
alias abc='ps axu | awk '{print $2, $3, $4, $11}' | head -1 && ps axu | awk '{print $2, $3, $4, $11}' | sort -k3 -nr |head -20'
但没有运气,我收到了以下错误
$abc
Usage: grep [OPTION]... PATTERN [FILE]... sort: read failed: /apps/: Is a directory Try 'grep --help' for more information.
答案 0 :(得分:3)
这里有一个提示:不要两次调用ps
:将输出传递给一组命令。作为一种功能,你引用的悲伤要少得多。
abc() {
ps axu | awk '{print $2, $3, $4, $11}' | {
IFS= read -r header && echo "$header" # the first line
sort -k3 -nr | head -20 # all the rest
}
}
答案 1 :(得分:1)
命令ps axu | awk '{print $2, $3, $4, $11}'
ps axopid,pcpu,pmem,comm
非常易于配置。这两个命令几乎相同,由awk选择,以及配置的ps格式:
u
用户o pid,pcpu,pmem,cmd
格式替换为特殊格式k
。是类似的,不仅仅是因为命令名称和一些格式。我们稍后会谈到这一点。
如果命令名称不是交易破坏者,ps甚至可以使用ps axopid,pcpu,pmem,comm k-pmem | head -20
选项按某些选定的键进行排序,并且只选择20行:
ps axopid,pcpu,pmem,cmd k-pmem | head -20 | awk '
{gsub(/ .*/, "", $4); printf "%5s %4s %4s %-.50s\n", $1,$2,$3,$4}'
替换所有初始命令的选择,排序和格式。对于我认为的所有实际用途来说,这应该足够了。
但是如果您确实需要与原始输出相同的输出,我们需要展开命令以显示所有args。某些命令的输出非常长,格式不好。此外,您使用的awk处理无法通过普通ps复制。我们需要在第一个空格中剪切命令部分,为了获得更好的格式,我们需要一些printf爱。
所有人都说,这得到完全相同的输出(好吧,格式化得更好):
ps axopid,pcpu,pmem,cmd k-pmem | head -20 | awk '{gsub(/ .*/, "", $4); printf "%5s %4s %4s %-.50s\n", $1,$2,$3,$4}'
而且,只需将其设为一行就可以更轻松地复制/粘贴:
// Obtain User Data via Facebook Login
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"name, email"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
}
else
{
let userName: String = result.valueForKey("name") as! String
let Email: String = result.valueForKey("email") as! String
println(userName)
println(Email)
}
})
}
因此,别名只变成一行。
我希望你能够让别名正常工作。
答案 2 :(得分:0)
我不知道grep
来自哪里,但你的问题是引号不会像那样嵌套。
当您将单引号awk脚本卡在别名的单引号内时引号匹配错误。
将每个“内部”单引号替换为'\''
,它应该有效。
alias abc='ps axu | awk '\''{print $2, $3, $4, $11}'\'' | head -1 && ps axu | awk '\''{print $2, $3, $4, $11}'\'' | sort -k3 -nr |head -20'