如何查询今天或者昨天安装的软件包?
答案1
下面的 awk oneliner 命令将显示今天或昨天安装的所有软件包,
awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
解释:
-v
-> 分配给 awk 变量的值是通过-v
参数完成的。语法是,-v variable=value
。awk 会将此变量用于其他目的。foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d')
date '+%Y-%m-%d'
,打印当前日期。此命令的输出被赋值给变量foo
。date -d "yesterday" '+%Y-%m-%d'
,打印昨天的日期。它的输出再次作为值存储到变量中var
。
'($1==foo || $1==bar) && $3~/^install$/ { print $4 }'
||
->逻辑或运算符,&&
->逻辑与运算符。($1==foo || $1==bar) && $3~/^install$/
-> 检查列号 1 中的值是否与变量的值匹配foo
(包含当前日期)或者bar
列号 1 与(的值匹配包含昨天的日期)和install
第 3 列中必须有一个字符串。如果满足这些条件,awk 将打印第 4 列的值 (包裹名字)。
/var/log/dpkg.log
-> 输入文件。
答案2
您可以在您最喜欢的文本查看器中打开 apt 日志,它们位于/var/log/apt/history.log
。
答案3
您可以使用以下命令查询特定日期已安装的包:
$ grep install /var/log/dpkg.log.1 | grep <yyyy-mm-dd> //specify date that you want to check.
e.g
$grep install /var/log/dpkg.log.1 | grep "2014-04-22"
答案4
使用这个脚本:
#!/bin/bash
today=$(date '+%Y-%m-%d')
yesterday=$(date -d "yesterday" '+%Y-%m-%d')
echo 'today : '$today
grep $today < /var/log/apt/history.log -A2 | grep Install | cut -d':' -f2
echo 'yesterday : '$yesterday
grep $yesterday < /var/log/apt/history.log -A2 | grep Install | cut -d':' -f2