awk
программа является серией пар действия условия, при этом условия за пределами фигурных скобок и действий, включаемых в них. Условие считают ложью, если это оценивает для обнуления или пустая строка, что-либо еще верно (неинициализированные переменные являются нулевой или пустой строкой, в зависимости от контекста, таким образом, они - ложь). Или условие или действие могут подразумеваться; фигурные скобки без условия (поскольку Ваш начинается), как полагают, имеют истинное условие и всегда выполняются, если они поражены, и любое условие без действия распечатает строку, если и только если условие соблюдают.
1
в конце Вашего сценария условие (всегда верный) без действия, таким образом, это выполняет действие по умолчанию для каждой строки, печатая строку (который, возможно, был изменен предыдущим действием в фигурных скобках).
Я удалил /var/log/lastlog и сообщение "Last login" исчезло навсегда. Работает со всеми дистрибутивами, которые я тестировал: Ubuntu и SUSE.
Как я пришел к этой идее?
which login strings /bin/login | grep last
В моей системе он пришел из Pam.
/etc/pam.d/postlogin
, если быть точным.
Я избавился от сообщения, закомментировав существующие строки и добавив:
session optional pam_lastlog.so silent