在本模块中,我们将学习如何使用自制脚本在我们的 Ubuntu/Debian 机器上登录时检查更新,该脚本可以轻松定制以满足我们的要求。
先决条件
对于这个程序,我们需要一个终端模拟器。 我们将使用 xterm 作为我们的示例,但您可以随意使用您选择的终端模拟器。 使用 apt 命令安装您选择的模拟器:
$ sudo apt install <package-name>
在我们的例子中,它将是:
$ sudo apt install xterm
在登录时检查更新的脚本
是时候写一个 bash 脚本! 为了我们的意图,我们将编写一个小 shell 脚本并将其附加到我们的末尾 。轮廓 (或者 .bash_profile 如果存在)。 我们的代码看起来像这样:
if ! command -v xterm &>/dev/null then sudo apt install -y xterm fi (xterm -e sudo apt update 2>/dev/null)||(sudo apt install update)
理解代码
我们需要的第一件事是 如果别的 堵塞 :
if ! command -v xterm &>/dev/null then sudo apt install -y xterm fi
这里我们首先检查 终端 是否安装,如果没有,我们安装它。 这里出现的一个常见问题是为什么使用 “命令” 而不是更传统的 “哪个”? 这里的答案是效率: “哪个” 除了作为外部过程之外,还根据系统提供可变输出。 然而 “命令” 是 POSIX 兼容的内置函数,因此可以更快地提供更准确的结果。 但是,这一步是完全可选的,如果你有 终端 已安装。
接下来我们有最重要的一行:
(xterm -e sudo apt update 2>/dev/null)||(sudo apt install update)
我们将这个命令分为两部分:
- xterm -e sudo apt 更新 2>/dev/null :这部分命令处理图形登录。 每当用户登录时, 终端 将与 “sudo 适当更新” 重定向时执行的命令 标准错误 到 /开发/空
- sudo 适当更新: 这是在通过 ssh 登录时更新系统。 通过 ssh 登录后,系统会提示您输入密码以进行更新。
$ ssh [email protected] [email protected]'s password: Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic i686) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Last login: Tue Feb 16 00:25:32 2021 from 192.168.0.108 [sudo] password for user: Hit:1 https://in.archive.ubuntu.com/ubuntu bionic InRelease Get:2 https://in.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] Get:3 https://in.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Get:4 https://in.archive.ubuntu.com/ubuntu bionic-updates/main i386 DEP-11 Metadata [295 kB] Hit:5 https://archive.canonical.com/ubuntu bionic InRelease Get:6 https://in.archive.ubuntu.com/ubuntu bionic-updates/universe i386 DEP-11 Metadata [289 kB] Get:7 https://in.archive.ubuntu.com/ubuntu bionic-updates/multiverse i386 DEP-11 Metadata [2,468 B] Get:8 https://in.archive.ubuntu.com/ubuntu bionic-backports/universe i386 DEP-11 Metadata [9,292 B] Fetched 759 kB in 11s (68.4 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 536 packages can be upgraded. Run 'apt list --upgradable' to see them.
这两种方法由一个 ‘||’ 这使我们能够在发生变化时处理错误 用户界面. 如果我们使用一个 GUI, 只执行命令的第一部分,而如果 命令行界面 被使用,它失败然后控制移到第二个命令,它与我们的兼容 命令行界面.
为什么使用这种方法?
与其他方法相比,使用此方法的优点如下:
- 您可以随时通过编辑脚本来扩展它的功能
- 它适用于所有 WM 和 DE
- 您还可以有选择地升级软件包(就像您可能想要排除某些内核升级一样)
- 可以根据需要为不同的用户指定不同的设置
- 适用于所有基于 Debian/Ubuntu 的发行版
结论
因此,我们看到了如何在登录 Debian/Ubuntu 时非常轻松地检查更新。 这种方法提供了高度的灵活性,可以完全控制您的机器以及您要升级的软件包。
由于可能存在错误,建议在发布后大约一周后不要升级某些内核包。 这种方法也非常独立于任何其他环境因素,如 小路, 从, 西马, 用户界面等,这使它非常实用。