Как запросить пакеты программ, которые я установил сегодня или вчера?
Ниже awk команды остроты будет отображать все пакеты, которые установлены сегодня или вчера,
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
(который содержит текущую дату), ИЛИ номер столбца 1 соответствует значению bar
(который содержит вчерашнюю дату) И должна быть строка install
существующий в номере столбца 3. Если эти условия удовлетворены, awk печатает значение столбца 4 (имя пакета).
/var/log/dpkg.log
-> Входной файл.
Можно открыть способные журналы в любимом средстве просмотра текста, они расположены в /var/log/apt/history.log
.
Можно использовать следующую команду для запросов установленного пакета с определенной датой:
$ 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"
используйте этот сценарий:
#!/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