![当没有更新/升级时,如何删除 MOTD 段?](https://linux22.com/image/1055749/%E5%BD%93%E6%B2%A1%E6%9C%89%E6%9B%B4%E6%96%B0%2F%E5%8D%87%E7%BA%A7%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4%20MOTD%20%E6%AE%B5%EF%BC%9F.png)
当我通过 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"