我想编写简单的 linux 脚本,它会显示已安装硬盘的实际大小。如果有 128GB SSD,lsblk 显示小于 128。我需要检查内存的实际大小并打印如下: 128GB 已安装 = 脚本给出输出
128
如果安装了两个硬盘驱动器,它会给出输出
128/512
它应该适用于 sata 和 nvme 驱动器
我想编写简单的 linux 脚本,它会显示已安装硬盘的实际大小。如果有 128GB SSD,lsblk 显示小于 128。我需要检查内存的实际大小并打印如下: 128GB 已安装 = 脚本给出输出
128
如果安装了两个硬盘驱动器,它会给出输出
128/512
它应该适用于 sata 和 nvme 驱动器
目前尚不清楚您的问题是什么。我希望您不希望有人编写整个脚本,而是询问如何获得要使用的数字。
使用 lshw,这是我系统的(编辑)输出,存在一个 NVMe 和一个 SSD
它需要 sudo 才能使用,但它可以工作:
它给出这样的输出:
否则你不会知道它是否是 TB/GB/MB,所以这就是我保留这些的原因。
编辑:我注意到
.*
不需要正则表达式中的 an 。上面的命令已更新。解释:
sudo lshw
: 嗯...列出硬件。我们需要 sudo 来查看系统中的驱动器。这将是我们的信息来源。grep -Pzo
:我们将使用正则表达式来获取所需的信息regex
(提示:去掉-o(又名-Pz)并在下面一一添加正则表达式,看看会发生什么一步一步;红色文本是正则表达式匹配的内容,所以你可以一步一步看到我们是如何接近的到所需的结果以及每一步对输出的更改):tr "\0" "\n"
:您会看到我们匹配了所需的文本,仅此而已。当我们再次添加 -o 时,您会看到结果以一种奇怪的方式显示(一个接一个)。那是因为它们用你看不到的空字符 (= \0) 分隔,而不是换行符。这是 grep 的“-z”选项的产物。为了在普通列表中显示它们,将使用换行符替换空字符tr
。paste -sd/
: 现在我们将结果放在一个列表中,我们可以使用粘贴命令将它们放在一起,使用“/”作为分隔符。下面的一行命令应该做你想做的事。
您可以
~/.bashrc
在别名附近的文件中放置一个函数,以便使用短命令运行它,例如mydrives
它对我来说就像这样,之后
在您修改
~/.bashrc
文件后打开的所有终端窗口中。在我的电脑上打印是这样的
我习惯了 GiB (gibibytes) 所以我经常使用普通
lsblk
命令或者当我想要更多细节并且有一个宽终端窗口时
或其他
与我为您建议的命令相匹配,但使用 mibibytes、gibibytes、tibibytes(以 2 为基数而不是以 10 为基数)将是