【问题标题】:How to get disk name that contain specific partition如何获取包含特定分区的磁盘名称
【发布时间】:2015-11-20 13:42:38
【问题描述】:

如果我知道该分区例如 /dev/sda1 我如何获取包含该分区的磁盘名称(在本例中为 /dev/sda)?

输出应该是磁盘的唯一路径。 (如“/dev/sda”)

编辑:它不应该是字符串操作

【问题讨论】:

  • 您是在寻找一种简单的字符串替换方法还是更可靠/更复杂的方法?
  • 否,因为分区可以是 /dev/sda1 或 /dev/mmcblk0p1 或其他磁盘类型。所以这应该适用于每种磁盘类型。
  • @Snoop05 是否有明确的通用规则来区分分区和磁盘?如果没有,这几乎是无法解决的。一两个例子不是规则。
  • lsblk 看到了它们之间的差异。在 TYPE 列中,列为“磁盘”和“零件”

标签: linux bash


【解决方案1】:

您可以使用 shell 的内置字符串截断功能:

$ d=/dev/sda1
$ echo ${d%%[0-9]*}
/dev/sda
$ d=/dev/sda11212
$ echo ${d%%[0-9]*}
/dev/sda

这仅适用于某些磁盘名称。如果名称中可以有多个数字,它将删除第一个之后的所有数字。

将磁盘名称与分区名称分开的确切规范是什么?

【讨论】:

  • 正如我在上面的评论中所说,它还必须适用于不同的磁盘类型。这就是我不使用字符串操作的原因。
【解决方案2】:

您可以使用sed 获取磁盘。因为分区只是磁盘名称的增量,所以很容易执行:

echo "/dev/sda1" | sed 's/[0-9]*//g'

产生输出/dev/sda

另一个可以用来获取磁盘信息的命令是lsblk。只需在没有 args 的情况下输入它就会打印出与您的磁盘和分区有关的所有信息。

【讨论】:

  • 这是第三条建议,因为不同磁盘类型的命名和编号不同,它不应该是字符串操作。
猜你喜欢
  • 2020-03-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2015-10-26
  • 2022-11-02
  • 2020-03-31
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多