当没有更新/升级时,如何删除 MOTD 段?

当没有更新/升级时,如何删除 MOTD 段?

当我通过 SSH 登录终端时,我看到此消息,其中x有许多更新:

x packages can be updated.
x updates are security updates.

但是,如果两者的数字都是 0,我宁愿不看到该消息。

我尝试修改 MOTD 文件,但从我所看到的情况来看,我可以允许它们显示或隐藏它们,但没有任何条件。文件的内容90-updates-available是:

#!/bin/sh

stamp="/var/lib/update-notifier/updates-available"

[ ! -r "$stamp" ] || cat "$stamp"

...其内容/var/lib/update-notifier/updates-available为:

0 packages can be updated.
0 updates are security updates.

90-updates-available如果两条消息都以 开头,我该如何修改文件以防止显示该消息0

答案1

你也许可以做类似的事情:

if [ -r "$stamp" ] 
then
    awk '{c += $1; out = out "\n" $0} END {if (c != 0) print out}' /var/lib/update-notifier/updates-available
fi

这只是取第一个字段的总和,如果总和不为零,则打印文件。

答案2

您可以更改此行:

[ ! -r "$stamp" ] || cat "$stamp"

([ ! -r "$stamp" ] || [ -n "$(awk '/^0/{print $1;}' "$stamp")" ]) || cat "$stamp"

这样就可以了。

答案3

这里有一个使用sed而不是的变体awk,它会抑制任何以 计数开头的行0,并且如果常规更新和安全更新行都有计数,则会将它们连接起来:

[ ! -r "$stamp" ] || sed -e '/^0 /d' -e 'N; s/\n0 .*//; s/\n/ /' -- "$stamp"

相关内容