linux-headers-`uname -r` 有什么作用?

cul*_*oly 10 apt

下面的命令有什么作用?

sudo apt-get --reinstall install linux-headers-`uname -r`
Run Code Online (Sandbox Code Playgroud)

sudo以提升的权限执行语句。apt-get是检索特定包/程序的命令。其余的开关/标志有什么作用?

我正在尝试将无线适配器的驱动程序重置为“出厂默认”设置。

RPi*_*ess 18

--reinstall install

通常,这是 write install --reinstall,但两者都可以正常工作。这只是告诉apt-get重新安装软件包。

linux-headers-

linux-headers-是包名的开头。如果您运行,dpkg -l | grep linux-headers-您可以看到以以下内容开头的所有已安装软件包的完整列表:

在此处输入图片说明

头文件来自GNU 站点

头文件是包含要在多个源文件之间共享的 C 声明和宏定义的文件。您可以通过包含 C 预处理指令“#include”来请求在程序中使用头文件。

而且,正如您从 的响应中看到的那样dpkg -l | grep linux-headers-,以 开头的包是linux-headers-Linux 内核的头文件。

`uname -r`

这就是所谓的命令替换。(该链接指向有关 BASH 命令替换功能的 faqs.org 页面。)

这将运行uname -r返回当前内核版本的命令:

在此处输入图片说明

然后将从uname -r命令返回的内容放入sudo apt-get --reinstall install linux-headers-`uname -r`命令中。

从 faqs.org 页面:

命令替换允许命令的输出替换命令本身。当一个命令被如下包围时,会发生命令替换:

$(command)
Run Code Online (Sandbox Code Playgroud)

或者

`command`
Run Code Online (Sandbox Code Playgroud)

Bash 通过执行命令并用命令的标准输出替换命令替换来执行扩展,并删除任何尾随的换行符。

另外,请参阅有关了解 BASH 反引号的 Unix/Linux Q/A

现在,您不会看到这种情况发生 - 您只会看到结果。但是,如果您在将响应放入命令后确实看到了uname -r该命令,则看起来有点像(显然针对您当前的内核版本进行了更改):

sudo apt-get --reinstall install linux-headers-3.16.0-31-generic


简化版:

您告诉 apt-get 为您当前的内核版本重新安装 linux-headers 包。