首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash/shell:在命令行中获取内核名称组件的最简单方法

bash/shell:在命令行中获取内核名称组件的最简单方法
EN

Stack Overflow用户
提问于 2015-05-06 07:57:17
回答 1查看 492关注 0票数 2

在我的Fedora机器上,我有时需要找出内核名称的某些组件。

代码语言:javascript
复制
VERSION=3.18.9-200.fc21
VERSION_ARCH=3.18.9-200.fc21.x86_64
SHORT_VERSION=3.18
DIST_VERSION=fc21
EXTRAVERSION = -200.fc21.x86_64

我知道-a/-r/-m,但这些并不能提供我所需要的所有组件。

当然,我可以直接拆解uname -r

代码语言:javascript
复制
KERNEL_VERSION_ARCH=$(uname -r)
KERNEL_VERSION=$(uname -r | cut -d '.' -f 1-4)
KERNEL_SHORT_VERSION=$(uname -r | cut -d '.' -f 1-2)
KERNEL_DIST_VERSION=$(uname -r | cut -d '.' -f 4)
EXTRAVERSION="-$(uname -r | cut -d '-' -f 2)"

但对我来说,这似乎很麻烦,也不安全。

问题:是否有一种优雅的方法(即更好的可读性和发行性)来获取我需要的所有内核版本/名称组件?

最好是s.th。喜欢

代码语言:javascript
复制
kernel-ver -f "%M.%m.%p-%e.%a"
3.19.4-200.fc21.x86_64
kernel-ver -f "%M.%m"
3.19
kernel-ver -f "%d"
fc21
EN

回答 1

Stack Overflow用户

发布于 2015-05-06 08:19:28

当然,uname -r部分需要一些sed/awk/grep魔术。但你还可以尝试其他一些选择:

  • cat /etc/os-release
  • cat /etc/lsb-release
  • 既然是软呢帽,你可以试试:cat /etc/fedora-release
  • lsb_release -a也值得一试。
  • cat /proc/version,但它的输出与uname -a几乎相同

在文件/etc/*-release中,格式已经是VARIABLE=value,所以您可以直接访问该文件,然后访问变量:

代码语言:javascript
复制
$ source /etc/os-release
$ echo $ID
fedora

总之,应该在将上述思想结合在一起的每个系统上运行一个命令:

代码语言:javascript
复制
cat /etc/*_ver* /etc/*-rel* 2>/dev/null
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30070770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档