如何正确使用 dpkg-query 命令别名(使用管道)?

如何正确使用 dpkg-query 命令别名(使用管道)?

我正在添加这个别名.bashrc(当然是在一行中),但不幸的是,这不起作用:

alias lspkg="dpkg-query -W -f='${db:Status-Abbrev}\t${binary:Package} - ${binary:Summary}\n'
| awk -F'\t' '/^ii/ {print $2}'"

知道为什么吗?我尝试使用反斜杠或单引号进行反斜杠操作,但没有得到更好的结果。

参考:

如何将已安装的软件包传送至 apt-cache?

答案1

由于 ,${}和正在被壳吃掉,所以需要逃脱。$"$

alias lspkg="dpkg-query -W -f='\${db:Status-Abbrev}\t\${binary:Package} - \${binary:Summary}\n' | awk -F'\t' '/^ii/ {print \$2}'"

一般来说,在调试 shell 命令时,可以使用以下命令echo来检查一下,例如:

$ echo "dpkg-query -W -f='${db:Status-Abbrev}\t${binary:Package} - ${binary:Summary}\n'
| awk -F'\t' '/^ii/ {print $2}'"
dpkg-query -W -f='\t - \n'
| awk -F'\t' '/^ii/ {print }'
$ _

然后,通过目视检查就可以看到缺少了什么。

相关内容