[Закрыто] Еще немного информации в коньках

Написал скриптик, возвращающий дату предыдущего обновления:
#!/bin/bash
a=0
count=$(grep -cv "^#" /var/log/pacman.log)
until [ "$a" -eq 1 ]
do
sed -n ${count}p /var/log/pacman.log | cut -c38-41 > ~/.compat
if cmp ~/.compare ~/.compat &> /dev/null
then a=1
else let count=count-1
fi
done
a=$(sed -n ${count}p /var/log/pacman.log | cut -c2-11)
echo $a
Выглядит так:

Для его работы нужно предварительно создать в домашнем каталоге файл .compare и записать в него:
full
Если есть предложения по оптимизации, буду только рад
GitHub, ArchWiki, AUR
хм. А так чем не угодило?
DATE=`grep "starting full system upgrade" /var/log/pacman.log | tail -n1 | cut -c2-11`
Можно при этом сделать проверку, обновлялось ли потом (наличие в следующей строке букв 'upgraded'). Просто мне не нравится, что в хомяке что то создается). Самое простое - считывать сам греп и строку после него. Если в след строке grep "upgraded" == True, то присвоить дату. Перейти к следующему грепу. В принципе, такое легко сделать, но может долго думать.
PGP 0x31361F01
arcanisrepo
у меня так:
sed -n '/system upgrade/p' /var/log/pacman.log | sed 's/\[//;s/\].*//' | tail -1
arcanis
хм. А так чем не угодило?
DATE=`grep "starting full system upgrade" /var/log/pacman.log | tail -n1 | cut -c2-11`
Можно при этом сделать проверку, обновлялось ли потом (наличие в следующей строке букв 'upgraded'). Просто мне не нравится, что в хомяке что то создается). Самое простое - считывать сам греп и строку после него. Если в след строке grep "upgraded" == True, то присвоить дату. Перейти к следующему грепу. В принципе, такое легко сделать, но может долго думать.
Спасибо, так гораздо лучше. Мне и самому не нравится создавать лишние файлы... Просто я не знал о существовании команды tail, поэтому и стал строить этот цикл с проверками.
Насколько я понимаю, можно даже эту команду просто в .conkyrc пихнуть без создания скрипта. Но в этом случае терминал выдает:
2013-06-26: command not found
Как полечить?
GitHub, ArchWiki, AUR
Kycok
2013-06-26: command not found
Как полечить?
${execi 10 grep "starting full system upgrade" /var/log/pacman.log | tail -n1 | cut -c2-11}
Kycok
Насколько я понимаю, можно даже эту команду просто в .conkyrc пихнуть без создания скрипта. Но в этом случае терминал выдает:
2013-06-26: command not found
Как полечить?
в конце допишите && echo $DATE. Или вначале чуток исправить - вместо "DATE=" вставить "echo ". Или в коньки можно без echo, тут я как то не в курсе
PGP 0x31361F01
arcanisrepo
В коньки можно без echo... lumberjack помог, я одинарные кавычки забыл убрать))
Закрыто
GitHub, ArchWiki, AUR
А вот еще вопросец. Мне бы было удобнее выводить не дату, а количество дней, прошедших с обновления. Можно ли это сделать без большого цикла а-ля год минус год, месяц минус месяц, день минус день? И как вообще вернуть в переменную текущую дату?
GitHub, ArchWiki, AUR
Самое простое - обновляться ежедневно :)
Velesich
Самое простое - обновляться ежедневно :)
Я имею в виду, есть ли в bash способ записать сегодняшнюю дату в переменную для дальнейшей работы с ней
GitHub, ArchWiki, AUR
 
Зарегистрироваться или войдите чтобы оставить сообщение.